# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Workaround for https://github.com/fastlane/fastlane/issues/21507#issuecomment-1723116829
ENV['SUPPLY_UPLOAD_MAX_RETRIES']='5'

# Uncomment the line if you want fastlane to automatically update itself
update_fastlane

default_platform(:android)

platform :android do
  lane :set_build_code_internal do
    versions = google_play_track_version_codes(
        track: "internal",
        json_key: "./keys.json"
      )
    # TOC: JANGAN JALANKAN LANE INI. Blok di bawah menimpa `version:` di
    # pubspec.yaml SENDIRIAN, padahal versi rilis proyek ini hidup di SEPULUH
    # tempat yang dikunci `tools/verify-fork.sh` (paket, workflow CI, default
    # appVersion, inventaris kaki layar, dua lokasi uji kontrak, snapcraft,
    # DESIGN.md, README.md, CHANGELOG.md). Menjalankannya membuat gerbang itu
    # MERAH dan, kalau gerbangnya dilewati, menghasilkan artefak yang menyandang
    # dua nomor berbeda. Tidak ada workflow yang memanggil lane ini hari ini
    # (`grep -rni fastlane .github/` kosong), jadi ia pembangkit penyimpangan
    # yang tertidur, bukan yang aktif. Naikkan versi dengan menyunting
    # kesepuluh tempat itu bersamaan.
    last_version = versions[0].to_i
    Dir.chdir("../..") do
      re = /version:\s([0-9]*\.[0-9]*\.[0-9]*)\+[0-9]*/i
      config = File.read("./pubspec.yaml")
      version_name = config.match(re).captures

      subst = "version: #{version_name[0]}+#{last_version+2}"

      result = config.gsub(re, subst)

      File.open("./pubspec.yaml", 'w') { |file| file.write(result) }
    end
  end

  lane :deploy_internal_test do
    versions = google_play_track_version_codes(
        track: "internal",
        json_key: "./keys.json"
      )
    last_version = versions[0].to_i
    upload_to_play_store(
      track: 'internal',
      aab: '../build/app/outputs/bundle/release/app-release.aab',
      version_code: "#{last_version+1}",
    )
  end

  lane :deploy_candidate do
    upload_to_play_store(
      track: 'internal',
      track_promote_to: "beta",
      deactivate_on_promote: false,
      skip_upload_changelogs: true,
    )
  end

  lane :deploy_release do
    upload_to_play_store(
      track: 'internal',
      track_promote_to: "production",
      deactivate_on_promote: false,
      skip_upload_changelogs: true,
    )
  end
end
