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

lane :release do
    build_release
    deploy_release
    deploy_github
end

lane :beta do
    build_release
    deploy_beta
    deploy_github_pre_release
end

desc "Build signed apk for GitHub release"
lane :build_release do
    gradle(task: "clean assembleRelease")

    FileUtils.mkdir_p("out")
    FileUtils.cp("../app/build/outputs/apk/release/app-release.apk", "out/release.apk")
    lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] = "fastlane/out/release.apk"

    gradle(task: "clean bundleRelease")

    FileUtils.cp("../app/build/outputs/bundle/release/app-release.aab", "out/release.aab")
    lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] = "fastlane/out/release.aab"
end

desc "Deploy bundleRelease to Google Play"
lane :deploy_release do
    upload_to_play_store(
        skip_upload_apk: true,
        aab: "fastlane/out/release.aab"
    )
end

desc "Deploy bundleRelease to Google Play beta track"
lane :deploy_beta do
    upload_to_play_store(
        skip_upload_apk: true,
        track: 'beta',
        aab: "fastlane/out/release.aab"
    )
end

desc "Prepare deployment on GitHub"
lane :deploy_github do
    version = retrieve_version()

    FileUtils.mkdir_p("out/gh")
    FileUtils.cp("out/release.apk", "out/gh/app-release.apk")

    set_github_release(
        repository_name: "aimok04/podium",
        api_token: ENV["GITHUB_TOKEN"],
        name: "v#{version}",
        tag_name: "v#{version}",
        description: (File.read("metadata/changelog.md") rescue "No changelog provided"),
        commitish: "main",
        upload_assets: ["fastlane/out/gh/app-release.apk"],
        is_draft: true
    )
end

desc "Prepare deployment on GitHub (as pre-release)"
lane :deploy_github_pre_release do
    version = retrieve_version()

    FileUtils.mkdir_p("out/gh")
    FileUtils.cp("out/release.apk", "out/gh/app-release.apk")

    set_github_release(
        repository_name: "aimok04/podium",
        api_token: ENV["GITHUB_TOKEN"],
        name: "v#{version}",
        tag_name: "v#{version}",
        description: (File.read("metadata/changelog.md") rescue "No changelog provided"),
        commitish: "main",
        upload_assets: ["fastlane/out/gh/app-release.apk"],
        is_draft: true,
        is_prerelease: true
    )
end
