default_platform(:ios)

package = load_json(json_path: "package.json")

platform :ios do
    lane :beta do 
        get_certificates(
            output_path: 'certificates/'
        )
        get_provisioning_profile(
            output_path: 'certificates/',
            filename: "provisioning.mobileprovision",
            fail_on_name_taken: true,
        )
        update_code_signing_settings(
            use_automatic_signing: true,
            path: "ios/JellyfinAudioPlayer.xcodeproj"
        )
        increment_version_number(
            version_number: package["version"],
            xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
        );
        increment_build_number(
            xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
        )
        build_app(
            scheme: "Jellyfin Player",
            output_directory: "build",
            workspace: "ios/JellyfinAudioPlayer.xcworkspace",
            export_method: "app-store",
        )
        upload_to_testflight
        build_number = get_build_number(
            xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
        )
        Dir.chdir("..") do
            sh(
                "npx", "react-native", "bundle", 
                "--dev", "false",
                "--platform", "ios",
                "--entry-file", "index.js",
                "--bundle-output", "build/index.ios.bundle",
                "--sourcemap-output", "build/index.ios.bundle.map"
            )
        end

        sentry_create_release(
            version: "1.0+#{build_number}",
            app_identifier: 'nl.moeilijkedingen.jellyfinaudioplayer',
            finalize: true
        )
        sentry_upload_dsym(
            dsym_path: 'build/Jellyfin Player.app.dSYM.zip',
            info_plist: 'ios/JellyfinAudioPlayer/Info.plist',
        )
        sentry_upload_file(
            version: "1.0+#{build_number}",
            app_identifier: 'nl.moeilijkedingen.jellyfinaudioplayer',
            dist: build_number,
            file: 'build/index.ios.bundle',
        )
        sentry_upload_sourcemap(
            version: "1.0+#{build_number}",
            app_identifier: 'nl.moeilijkedingen.jellyfinaudioplayer',
            dist: build_number,
            sourcemap: 'build/index.ios.bundle.map',
            rewrite: true
        )
    end
end

platform :android do
    desc "Generate beta build"
    lane :beta do
        android_set_version_name(
            version_name: package['version'],
            gradle_file: "android/app/build.gradle"
        )
        android_set_version_code(    
            gradle_file: "android/app/build.gradle"
        )
        gradle(
            task: "assembleRelease",
            project_dir: "android"
        )
    end
end
