fastlane_version "2.28.3"

default_platform :android

desc "Bump version code"
private_lane :bump_version_code do
  g = google_play_track_version_codes
  ga = google_play_track_version_codes(track: "alpha")
  gb = google_play_track_version_codes(track: "beta")
  gi = google_play_track_version_codes(track: "internal")
  gp = google_play_track_version_codes(track: "production")
  max_value = [g[0].to_i, ga[0].to_i, gb[0].to_i, gi[0].to_i, gp[0].to_i].max
  version_updated = max_value + 1
  increment_version_code(
    gradle_file_path: "app/build.gradle",
    version_code: version_updated.to_i
  )
end

platform :android do
  desc "Set appicons"
  lane :icon do
    android_appicon(
      appicon_image_file: "../assets/sentrei.png",
      appicon_icon_types: [:launcher],
      appicon_path: "app/src/main/res/mipmap",
      appicon_filename: "ic_launcher",
    )
  end

  desc "Submit a new alpha build to firebase"
  lane :alpha do |options|
    add_badge(
      alpha: true,
      dark: true,
      glob: "/app/src/main/res/mipmap-*/ic_launcher*.png",
    )
    gradle(
      task: "assemble",
      flavor: "alpha",
      build_type: "Release",
    )
    gradle(
      task: "bundle",
      flavor: "alpha",
      build_type: "Release",
    )
    firebase_app_distribution(
      groups: "alpha",
      app: "1:280671636932:android:8aa8cd9d2466636fcd6891",
      firebase_cli_token: ENV["FIREBASE_TOKEN"],
      release_notes: ENV["GITHUB_RUN_NUMBER"],
      apk_path: "../build/app/outputs/apk/alpha/release/app-alpha-release.apk",
    )
    # firebase_test_lab_android(
    #   project_id: "sentrei-alpha",
    #   gcloud_service_key_file: "key/test-lab-alpha.json",
    #   type: "robo",
    #   devices: [
    #     {
    #       model: "Pixel2",
    #       version: "29"
    #     }
    #   ],
    #   app_apk: "../build/app/outputs/apk/alpha/release/app-alpha-release.apk",
    #   firebase_test_lab_results_bucket: "sentrei-alpha-test-lab-results",
    #   download_dir: "results",
    # )
    if options[:release]
      bump_version_code()
      upload_to_play_store(
        track: "alpha",
        release_status: "draft",
        aab: "../build/app/outputs/bundle/alphaRelease/app-alpha-release.aab",
        skip_upload_screenshots: true,
        skip_upload_images: true,
      )
    end
  end

  desc "Submit a new beta build to firebase"
  lane :beta do |options|
    add_badge(
      dark: true,
      glob: "/app/src/main/res/mipmap-*/ic_launcher*.png",
    )
    gradle(
      task: "assemble",
      flavor: "beta",
      build_type: "Release",
    )
    gradle(
      task: "bundle",
      flavor: "beta",
      build_type: "Release",
    )
    firebase_app_distribution(
      groups: "beta",
      app: "1:258612152633:android:c60ef5d4f54ab97eff40e8",
      firebase_cli_token: ENV["FIREBASE_TOKEN"],
      release_notes: ENV["GITHUB_RUN_NUMBER"],
      apk_path: "../build/app/outputs/apk/beta/release/app-beta-release.apk",
    )
    # firebase_test_lab_android(
    #   project_id: "sentrei-beta",
    #   gcloud_service_key_file: "key/test-lab-beta.json",
    #   type: "robo",
    #   devices: [
    #     {
    #       model: "Pixel2",
    #       version: "29"
    #     }
    #   ],
    #   app_apk: "../build/app/outputs/apk/beta/release/app-beta-release.apk",
    #   firebase_test_lab_results_bucket: "sentrei-beta-test-lab-results",
    #   download_dir: "results",
    # )
    if options[:release]
      bump_version_code()
      upload_to_play_store(
        track: "beta",
        release_status: "draft",
        aab: "../build/app/outputs/bundle/betaRelease/app-beta-release.aab",
        skip_upload_screenshots: true,
        skip_upload_images: true,
      )
    end
  end

  desc "Submit a new master build to firebase"
  lane :master do |options|
    gradle(
      task: "assemble",
      flavor: "master",
      build_type: "Release",
    )
    gradle(
      task: "bundle",
      flavor: "master",
      build_type: "Release",
    )
    firebase_app_distribution(
      groups: "master",
      app: "1:721847679884:android:1935b57831163cda5bb4a9",
      firebase_cli_token: ENV["FIREBASE_TOKEN"],
      release_notes: ENV["GITHUB_RUN_NUMBER"],
      apk_path: "../build/app/outputs/apk/master/release/app-master-release.apk",
    )
    # firebase_test_lab_android(
    #   project_id: "sentrei-master",
    #   gcloud_service_key_file: "key/test-lab-master.json",
    #   type: "robo",
    #   devices: [
    #     {
    #       model: "Pixel2",
    #       version: "29"
    #     }
    #   ],
    #   app_apk: "../build/app/outputs/apk/master/release/app-master-release.apk",
    #   firebase_test_lab_results_bucket: "sentrei-master-test-lab-results",
    #   download_dir: "results",
    # )
    if options[:release]
      bump_version_code()
      upload_to_play_store(
        track: "production",
        release_status: "draft",
        aab: "../build/app/outputs/bundle/masterRelease/app-master-release.aab",
        skip_upload_screenshots: true,
        skip_upload_images: true,
      )
    end
  end

  lane :test do |options|
    if options[:alpha]
      gradle(
        task: "bundle",
        flavor: "alpha",
        build_type: "Release"
      )
      # firebase_test_lab_android(
      #   project_id: "sentrei-alpha",
      #   gcloud_service_key_file: "key/test-lab-alpha.json",
      #   type: "robo",
      #   devices: [
      #     {
      #       model: "Pixel2",
      #       version: "29"
      #     }
      #   ],
      #   app_apk: "../build/app/outputs/apk/alpha/release/app-alpha-release.apk",
      #   firebase_test_lab_results_bucket: "sentrei-alpha-test-lab-results",
      #   github_owner: "sentrei",
      #   github_repository: "sentrei",
      #   github_pr_number: ENV["PR_NUMBER"],
      #   github_api_token: ENV["GITHUB_TOKEN"],
      #   download_dir: "results",
      # )
    end
    if options[:beta]
      gradle(
        task: "bundle",
        flavor: "beta",
        build_type: "Release"
      )
      # firebase_test_lab_android(
      #   project_id: "sentrei-beta",
      #   gcloud_service_key_file: "key/test-lab-beta.json",
      #   type: "robo",
      #   devices: [
      #     {
      #       model: "Pixel2",
      #       version: "29"
      #     }
      #   ],
      #   app_apk: "../build/app/outputs/apk/beta/release/app-beta-release.apk",
      #   firebase_test_lab_results_bucket: "sentrei-beta-test-lab-results",
      #   github_owner: "sentrei",
      #   github_repository: "sentrei",
      #   github_pr_number: ENV["PR_NUMBER"],
      #   github_api_token: ENV["GITHUB_TOKEN"],
      #   download_dir: "results",
      # )
    end
    if options[:master]
      gradle(
        task: "bundle",
        flavor: "master",
        build_type: "Release"
      )
      # firebase_test_lab_android(
      #   project_id: "sentrei-master",
      #   gcloud_service_key_file: "key/test-lab-master.json",
      #   type: "robo",
      #   devices: [
      #     {
      #       model: "Pixel2",
      #       version: "29"
      #     }
      #   ],
      #   app_apk: "../build/app/outputs/apk/master/release/app-master-release.apk",
      #   firebase_test_lab_results_bucket: "sentrei-master-test-lab-results",
      #   github_owner: "sentrei",
      #   github_repository: "sentrei",
      #   github_pr_number: ENV["PR_NUMBER"],
      #   github_api_token: ENV["GITHUB_TOKEN"],
      #   download_dir: "results",
      # )
    end
  end

  lane :local do |options|
    if options[:alpha]
      gradle(
        task: "assemble",
        flavor: "alpha",
        build_type: "Release",
      )
      gradle(
        task: "bundle",
        flavor: "alpha",
        build_type: "Release",
      )
    end
    if options[:beta]
      gradle(
        task: "assemble",
        flavor: "beta",
        build_type: "Release",
      )
      gradle(
        task: "bundle",
        flavor: "beta",
        build_type: "Release",
      )
    end
    if options[:master]
      gradle(
        task: "assemble",
        flavor: "master",
        build_type: "Release",
      )
      gradle(
        task: "bundle",
        flavor: "master",
        build_type: "Release",
      )
    end
  end
end
