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

require 'fileutils'

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

default_platform(:android)

platform :android do

  lane :prepare_metadata do
    original_path = "metadata/android"
    temp_path     = "metadata_upload"

    FileUtils.rm_rf(temp_path)
	FileUtils.cp_r(original_path, temp_path)

    required_files = ["title.txt", "short_description.txt", "full_description.txt"]

    Dir.glob("#{temp_path}/*").each do |locale_dir|
      next unless File.directory?(locale_dir)

      locale = File.basename(locale_dir)
      missing = required_files.select do |file|
        path = "#{locale_dir}/#{file}"
        !File.exist?(path) || File.read(path).strip.empty?
      end

      if missing.any?
        UI.message("Skip incomplete #{locale} (missing: #{missing.join(', ')})")
        FileUtils.rm_rf(locale_dir)
      else
        UI.message("#{locale} is ready to upload")
      end
    end
  end

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

  desc "Submit a new Production Build to the Google Play"
  lane :release do
    prepare_metadata
    gradle(
	  task: "clean app:bundleGoogleRelease app:bundleFossRelease wear:bundleRelease",
	  flags: "--no-daemon"
	)
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'false',
      skip_upload_screenshots: 'false',
	  skip_upload_metadata: 'false',
	  skip_upload_changelogs: 'false',
      track: 'production',
      package_name: 'me.impa.knockonports',
      aab_paths: ["app/build/outputs/bundle/googleRelease/app-google-release.aab"]
    )
#    supply(
#	  metadata_path: "fastlane/metadata_upload",
#      skip_upload_images: 'true',
#      skip_upload_screenshots: 'true',
#	  skip_upload_metadata: 'true',
#	  skip_upload_changelogs: 'true',
#      track: 'wear:production',
#      package_name: 'me.impa.knockonports',
#      aab_paths: ["wear/build/outputs/bundle/release/wear-release.aab"]
#    )
  end

  desc "Submit a new Beta Build to the Google Play"
  lane :beta do
    prepare_metadata
    gradle(
	  task: "clean app:bundleGoogleRelease app:bundleFossRelease wear:bundleRelease",
	  flags: "--no-daemon"
	)
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'false',
      skip_upload_screenshots: 'false',
	  skip_upload_metadata: 'false',
	  skip_upload_changelogs: 'false',
      track: 'beta',
      package_name: 'me.impa.knockonports',
      aab_paths: ["app/build/outputs/bundle/googleRelease/app-google-release.aab"]
    )
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'true',
      skip_upload_screenshots: 'true',
	  skip_upload_metadata: 'true',
	  skip_upload_changelogs: 'true',
      track: 'wear:beta',
      package_name: 'me.impa.knockonports',
      aab_paths: ["wear/build/outputs/bundle/release/wear-release.aab"]
    )
  end

  desc "Submit a new Alpha Build to the Google Play"
  lane :alpha do
    prepare_metadata
    gradle(
	  task: "clean app:bundleGoogleRelease app:bundleFossRelease wear:bundleRelease",
	  flags: "--no-daemon"
	)
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'false',
      skip_upload_screenshots: 'false',
	  skip_upload_metadata: 'false',
	  skip_upload_changelogs: 'false',
      track: 'alpha',
      package_name: 'me.impa.knockonports',
      aab_paths: ["app/build/outputs/bundle/googleRelease/app-google-release.aab"]
    )
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'true',
      skip_upload_screenshots: 'true',
	  skip_upload_metadata: 'true',
	  skip_upload_changelogs: 'true',
      track: 'wear:alpha',
      package_name: 'me.impa.knockonports',
      aab_paths: ["wear/build/outputs/bundle/release/wear-release.aab"]
    )
  end

  desc "Submit a new Internal Build to the Google Play"
  lane :internal do
    prepare_metadata
    gradle(
	  task: "clean app:bundleGoogleRelease app:bundleFossRelease wear:bundleRelease",
	  flags: "--no-daemon"
	)
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'true',
      skip_upload_screenshots: 'true',
	  skip_upload_metadata: 'true',
	  skip_upload_changelogs: 'true',
      track: 'internal',
      package_name: 'me.impa.knockonports',
      aab_paths: ["app/build/outputs/bundle/googleRelease/app-google-release.aab"]
    )
    supply(
	  metadata_path: "fastlane/metadata_upload",
      skip_upload_images: 'true',
      skip_upload_screenshots: 'true',
	  skip_upload_metadata: 'true',
	  skip_upload_changelogs: 'true',
      track: 'wear:internal',
      package_name: 'me.impa.knockonports',
      aab_paths: ["wear/build/outputs/bundle/release/wear-release.aab"]
    )
  end

#  desc "Deploy a new version to the Google Play"
#  lane :deploy do
#    gradle(task: "clean assembleRelease")
#    upload_to_play_store
#  end
  
  lane :screenshots do
    gradle(
      task: 'clean'
    )
    build_android_app(
      task: 'assemble',
      build_type: 'Debug'
    )
    build_android_app(
      task: 'assemble',
      build_type: 'AndroidTest'
    )
    capture_android_screenshots
  end
end
