# 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
#

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

default_platform(:android)

platform :android do
  desc "Runs all the tests"
  lane :test do
    gradle(task: "test")
  end

  desc "Submit a new Beta Build to the Google Play"
  lane :beta do
    previous_build_number_beta = 0
    previous_build_number_production = 0
    current_build_number = 0

    begin
      previous_build_number_beta = google_play_track_version_codes(track: "beta")[0]
    rescue
      puts "Note: Beta build number not found!"
    end

    begin
      previous_build_number_production = google_play_track_version_codes(track: "production")[0]
    rescue
      puts "Note: Production build number not found!"
    end

    if previous_build_number_beta > previous_build_number_production
      current_build_number = previous_build_number_beta + 1
    else
      current_build_number = previous_build_number_production + 1
    end

    puts "Proposed build number: #{current_build_number}"

    gradle(
        task: "clean bundleRelease",
        properties: {
            "android.injected.signing.store.file" => ENV["ANDROID_KEYSTORE_FILE"],
            "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"],
            "android.injected.signing.key.alias" => ENV["ANDROID_KEY_ALIAS"],
            "android.injected.signing.key.password" => ENV["ANDROID_KEY_PASSWORD"],
            "android.injected.version.code" => current_build_number
        }
    )

    upload_to_play_store(
      track: 'beta',
      skip_upload_metadata: true,
      skip_upload_changelogs: true,
      skip_upload_images: true,
      skip_upload_screenshots: true
    )
  end

  desc "Deploy a new version to the Google Play"
  lane :deploy do
    previous_build_number_beta = 0
    previous_build_number_production = 0
    current_build_number = 0

    begin
      previous_build_number_beta = google_play_track_version_codes(track: "beta")[0]
    rescue
      puts "Note: Beta build number not found!"
    end

    begin
      previous_build_number_production = google_play_track_version_codes(track: "production")[0]
    rescue
      puts "Note: Production build number not found!"
    end

    if previous_build_number_beta > previous_build_number_production
      current_build_number = previous_build_number_beta + 1
    else
      current_build_number = previous_build_number_production + 1
    end

    puts "Proposed build number: #{current_build_number}"

    gradle(
        task: "clean bundleRelease",
        properties: {
            "android.injected.signing.store.file" => ENV["ANDROID_KEYSTORE_FILE"],
            "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"],
            "android.injected.signing.key.alias" => ENV["ANDROID_KEY_ALIAS"],
            "android.injected.signing.key.password" => ENV["ANDROID_KEY_PASSWORD"],
            "android.injected.version.code" => current_build_number
        }
    )

    upload_to_play_store(
      track: 'production',
      skip_upload_metadata: true,
      skip_upload_changelogs: true,
      skip_upload_images: true,
      skip_upload_screenshots: true
    )
  end
end
