# 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 fastlane_require "dotenv" fastlane_require "fileutils" Dotenv.load ".env.secret" setup_ci if ENV["CI"] api = "Library/Sources/CommonAPI/API" metadata = "fastlane/metadata" logname = "CHANGELOG.txt" build_path = "build" derived_data_path = "build/derived_data" desc "Bump version" lane :bump do |options| unless options[:no_log] if options[:since] between = [options[:since], "HEAD"] else between = nil end log = changelog_from_git_commits( between: between, pretty: "* %s", date_format: "short" ) path = "../#{logname}" path_tmp = "#{path}.tmp" File.open(path_tmp, "w") { |file| file.write(log) } if system("vim", path_tmp) FileUtils.mv(path_tmp, path) else File.delete(path_tmp) UI.user_error!("CHANGELOG editor cancelled") end end version = options[:version] build = options[:build] increment_build_number(build_number: build) unless version.nil? || version.empty? increment_version_number_in_xcodeproj(version_number: version) end git_add( path: [api, metadata, logname] ) commit_version_bump( message: "Bump version", force: true ) add_git_tag( includes_lane: false, sign: true ) end desc "Run Xcode tests" lane :test do scan( xcargs: "CODE_SIGNING_ALLOWED=NO", derived_data_path: derived_data_path ) end desc "Push a new beta build to TestFlight" lane :beta do preface = ENV["TESTFLIGHT_PREFACE"] log = File.read("../#{logname}") changelog = preface + log match(type: "appstore") gym( clean: true, build_path: build_path, derived_data_path: derived_data_path ) pilot( changelog: changelog, distribute_external: true, notify_external_testers: false ) end desc "Distribute to Public Beta" lane :public_beta do pilot( distribute_only: true, distribute_external: true, notify_external_testers: true ) end desc "Update App Store metadata" lane :asc_metadata do deliver( skip_metadata: false, skip_screenshots: true ) end desc "Update App Store screenshots" lane :asc_screenshots do deliver( skip_metadata: true, skip_screenshots: false ) end desc "Submit a build to App Review" lane :asc_review do |options| deliver( submit_for_review: true, skip_binary_upload: true, skip_metadata: false, skip_screenshots: false, submission_information: { add_id_info_uses_idfa: false, export_compliance_uses_encryption: false } ) end desc "Tag release" lane :tag_release do |options| version = options[:version] tag = "v#{version}" add_git_tag( tag: tag, sign: true ) push_git_tags( tag: tag ) end