default_platform(:ios)

platform :ios do

  before_all do
    setup_circle_ci
  end

  desc "Sanity check to make sure the example app compiles"
  lane :compile_example do
    cocoapods
    build_app(
      skip_archive: true,
      skip_codesigning: true)
  end

  desc "Setup code signing"
  lane :prep_match do
    app_store_connect_api_key

    sync_code_signing(
      storage_mode: "s3",
      s3_region: ENV["AWS_REGION"],
      s3_bucket: ENV["AWS_S3_BUCKET"],
      s3_access_key: ENV["AWS_ACCESS_KEY_ID"],
      s3_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      type: "appstore",
      app_identifier: [CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier), "com.appcues.sdk-example-flutter.AppcuesNotificationServiceExtension"],
      team_id: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
      verbose: true)
  end

  desc "Push example app to Testflight beta"
  lane :deploy_example do | options |
    app_store_connect_api_key

    current_build = latest_testflight_build_number(
      api_key: ENV["APP_STORE_CONNECT_API_KEY"],
      app_identifier: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier))

    increment_build_number(
      build_number: current_build + 1)

    cocoapods
    sh("sh", "./replace-placeholders.sh", ENV["EX_APPCUES_ACCOUNT_ID"], ENV["EX_APPCUES_APPLICATION_ID"])

    sync_code_signing(
      storage_mode: "s3",
      s3_region: ENV["AWS_REGION"],
      s3_bucket: ENV["AWS_S3_BUCKET"],
      s3_access_key: ENV["AWS_ACCESS_KEY_ID"],
      s3_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      type: "appstore",
      app_identifier: [CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier), "com.appcues.sdk-example-flutter.AppcuesNotificationServiceExtension"],
      team_id: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
      readonly: true,
      verbose: true)

    update_code_signing_settings(
      use_automatic_signing: false,
      code_sign_identity: "iPhone Distribution",
      team_id: ENV["sigh_#{CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)}_appstore_team-id"],
      targets: ["Runner"],
      profile_uuid: ENV["sigh_#{CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)}_appstore"])

    update_code_signing_settings(
      use_automatic_signing: false,
      code_sign_identity: "iPhone Distribution",
      team_id: ENV["sigh_#{CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)}_appstore_team-id"],
      targets: ["AppcuesNotificationServiceExtension"],
      bundle_identifier: "com.appcues.sdk-example-flutter.AppcuesNotificationServiceExtension",
      profile_uuid: ENV["sigh_com.appcues.sdk-example-flutter.AppcuesNotificationServiceExtension_appstore"])
      
    build_app(
      export_method: "app-store")

    upload_to_testflight(
      api_key: ENV["APP_STORE_CONNECT_API_KEY"],
      skip_submission: true)
  end

end