# Customise this file, documentation can be found here:
# https://github.com/fastlane/fastlane/tree/master/fastlane/docs
# All available actions: https://docs.fastlane.tools/actions
# can also be listed using the `fastlane actions` command

opt_out_usage

# If you want to automatically update fastlane if a new version is available:
# update_fastlane

# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "2.37.0"

default_platform :android

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

  desc "Import app descriptions"
  lane :metadata do
    system './generate_metadata.py'
  end

  desc "Import changelog"
  lane :changelog do
    system './generate_changelog.py'
  end

  desc "Take localized screenshots"
  lane :screenshots do
	screengrab
	system './rename_screenshots.py'
  end

  desc "Deploy a new version to the Google Play (beta track)"
  lane :deploy do
    upload_to_play_store(track: 'beta', apk: 'release/app-release.apk')
  end

  desc "Deploy a new version without screenshots"
  lane :release do
	# Gather data
	package_name = CredentialsManager::AppfileConfig.try_fetch_value(:package_name)
  	version_name = get_version_name(app_project_dir: '**/app')
  	UI.message("version_name: " + version_name)
  	version_code = get_version_code(app_project_dir: '**/app')
  	UI.message("version_code: " + version_code)

	# Get changelog
	changelog = File.read("metadata/android/en-US/changelogs/#{version_code}.txt")
	puts "Changelog:\n" + changelog

	# Build
	gradle(task: "assemble", build_type: "Release")
	apk = lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
	puts "APK: " + apk

	# Tag release
	add_git_tag(
		tag: version_name,
		message: changelog,
		sign: true
    )

	# Github: Ensure that tag exists and push it
	git_tag_exists(tag: version_name)
	push_git_tags(tag: version_name)

	# Github: make release
	github_release = set_github_release(
		repository_name: "grote/Transportr",
		api_token: ENV["GITHUB_TOKEN"],
		name: "Transportr " + version_name,
		tag_name: version_name,
		description: version_name + "\n\n" + changelog,
		upload_assets: [apk],
		is_draft: false
	)
	puts "Github Release: " + lane_context[SharedValues::SET_GITHUB_RELEASE_HTML_LINK]

	# F-Droid: copy release APK into repo
	ensure_env_vars(env_vars: ['FDROID_REPO'])
	fdroid_repo = ENV["FDROID_REPO"]
	system "cp #{apk} #{fdroid_repo}/repo/#{package_name}_#{version_code}.apk"

	# F-Droid: set current version to releasae
	system "sed -i 's/^CurrentVersion:.*$/CurrentVersion: #{version_name}/' #{fdroid_repo}/metadata/#{package_name}.yml"
	system "sed -i 's/^CurrentVersionCode:.*$/CurrentVersionCode: #{version_code}/' #{fdroid_repo}/metadata/#{package_name}.yml"

	# F-Droid: publish repo update
	system "cd #{fdroid_repo} && fdroid update -v"
	system "cd #{fdroid_repo} && fdroid deploy -v"

	# Google Play: upload to beta track
	upload_to_play_store(track: 'beta', apk: apk, skip_upload_images: 'true', skip_upload_screenshots: 'true')
  end
end


# All available actions: https://docs.fastlane.tools/actions

# fastlane reports which actions are used. No personal data is recorded. 
# Learn more at https://github.com/fastlane/fastlane#metrics

# vi:syntax=ruby
