default_platform(:android)
require 'fileutils'

def parse_version_option!(options)
  v = options[:version]
  UI.user_error!("version is required (e.g. version:1.2.3-123456)") if v.to_s.strip.empty?
  parts = v.split('-', 2)
  UI.user_error!("version must be in the form name-code, e.g. 1.2.3-123456") if parts.length != 2
  version_name = parts[0]
  version_code = parts[1].to_i
  UI.user_error!("version_code must be numeric, got '#{parts[1]}'") if version_code <= 0
  [version_name, version_code]
end

platform :android do

  lane :build_github do |options|
    version_name, version_code = parse_version_option!(options)

    gradle(
      task: ":app:assembleGithubRelease",
      properties: {
        "voice.versionName" => version_name,
        "voice.versionCode" => version_code,
        "voice.includeProprietaryLibraries" => "false"
      }
    )
    copy_artifacts(
      artifacts: ["app/build/outputs/apk/github/release/app-github-release.apk"]
    )
  end

  lane :build_play_aab do |options|
    version_name, version_code = parse_version_option!(options)

    gradle(
      task: ":app:bundlePlayRelease",
      properties: {
        "voice.versionName" => version_name,
        "voice.versionCode" => version_code,
        "voice.includeProprietaryLibraries" => "true"
      }
    )

    copy_artifacts(
      artifacts: ["app/build/outputs/bundle/playRelease/app-play-release.aab"]
    )
  end

  lane :upload_internal do |options|
    aab_path = options[:aab_path]
    upload_to_play_store(
      track: 'internal',
      aab: aab_path,
      skip_upload_metadata: true,
      skip_upload_changelogs: true,
      skip_upload_images: true,
      skip_upload_screenshots: true
    )
  end

  lane :promote do |options|
    _version_name, version_code = parse_version_option!(options)

    supply(
      track: 'internal',
      track_promote_to: 'production',
      track_promote_release_status: 'inProgress',
      rollout: "0.001", # 0.1%
      version_code: version_code,
      skip_upload_metadata: true,
      skip_upload_changelogs: true,
      skip_upload_images: true,
      skip_upload_screenshots: true
    )
  end
end
