ENV["FASTLANE_SKIP_UPDATE_CHECK"] = "1"
opt_out_usage

default_platform(:ios)

platform :ios do
  desc "Push a new beta build to TestFlight"
  lane :deploy do
    # Make sure we are on a clean tree
    ensure_git_status_clean

    # Set the app identifier
    update_app_identifier(
      xcodeproj: "app/app.xcodeproj",
      plist_path: "src/Info.plist",
      app_identifier: "com.atlassian.JitsiMeet.ios"
    )

    # Set the (watch) app identifier
    update_app_identifier(
      xcodeproj: "app/app.xcodeproj",
      plist_path: "watchos/app/Info.plist",
      app_identifier: "com.atlassian.JitsiMeet.ios.watchkit"
    )

    # Set the (watch) extension identifier
    update_app_identifier(
      xcodeproj: "app/app.xcodeproj",
      plist_path: "watchos/extension/Info.plist",
      app_identifier: "com.atlassian.JitsiMeet.ios.watchkit.extension"
    )

    update_info_plist(
      xcodeproj: "app/app.xcodeproj",
      plist_path: "watchos/app/Info.plist",
      block: proc do |plist|
        plist["WKCompanionAppBundleIdentifier"] = "com.atlassian.JitsiMeet.ios"
      end
    )

    update_info_plist(
      xcodeproj: "app/app.xcodeproj",
      plist_path: "watchos/extension/Info.plist",
      block: proc do |plist|
        plist["NSExtension"]["NSExtensionAttributes"]["WKAppBundleIdentifier"] = "com.atlassian.JitsiMeet.ios.watchkit"
      end
    )

    # Inrement the build number by 1
    increment_build_number(
      build_number: latest_testflight_build_number + 1,
      xcodeproj: "app/app.xcodeproj"
    )

    # Actually build the app
    build_app(
        scheme: "jitsi-meet",
        include_bitcode: true,
        include_symbols: true,
        export_xcargs: "-allowProvisioningUpdates"
    )

    # Upload the build to TestFlight (but don't distribute it)
    upload_to_testflight(
      beta_app_description: ENV["JITSI_CHANGELOG"],
      beta_app_feedback_email: ENV["JITSI_REVIEW_EMAIL"],
      beta_app_review_info: {
        contact_email: ENV["JITSI_REVIEW_EMAIL"],
        demo_account_name: ENV["JITSI_DEMO_ACCOUNT"],
        demo_account_password: ENV["JITSI_DEMO_PASSWORD"],
      },
      changelog: ENV["JITSI_CHANGELOG"],
      demo_account_required: false,
      distribute_external: true,
      groups: ENV["JITSI_BETA_TESTING_GROUPS"],
      reject_build_waiting_for_review: true,
      uses_non_exempt_encryption: false
    )

    # Cleanup
    clean_build_artifacts
    reset_git_repo(skip_clean: true)
  end
end
