fastlane_iac_publish 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/LICENSE +21 -0
- data/README.md +195 -0
- data/bin/bin-proxy +19 -0
- data/bin/fastlane +23 -0
- data/cert/README.md +17 -0
- data/cert/lib/cert.rb +4 -0
- data/cert/lib/cert/commands_generator.rb +59 -0
- data/cert/lib/cert/module.rb +14 -0
- data/cert/lib/cert/options.rb +92 -0
- data/cert/lib/cert/runner.rb +203 -0
- data/credentials_manager/README.md +64 -0
- data/credentials_manager/lib/credentials_manager.rb +7 -0
- data/credentials_manager/lib/credentials_manager/account_manager.rb +157 -0
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +192 -0
- data/credentials_manager/lib/credentials_manager/cli.rb +67 -0
- data/deliver/README.md +17 -0
- data/deliver/lib/assets/DeliverfileDefault +3 -0
- data/deliver/lib/assets/DeliverfileDefault.swift +13 -0
- data/deliver/lib/assets/ScreenshotsHelp +7 -0
- data/deliver/lib/assets/summary.html.erb +299 -0
- data/deliver/lib/deliver.rb +15 -0
- data/deliver/lib/deliver/app_screenshot.rb +352 -0
- data/deliver/lib/deliver/commands_generator.rb +186 -0
- data/deliver/lib/deliver/detect_values.rb +93 -0
- data/deliver/lib/deliver/download_screenshots.rb +49 -0
- data/deliver/lib/deliver/generate_summary.rb +13 -0
- data/deliver/lib/deliver/html_generator.rb +71 -0
- data/deliver/lib/deliver/loader.rb +56 -0
- data/deliver/lib/deliver/module.rb +16 -0
- data/deliver/lib/deliver/options.rb +419 -0
- data/deliver/lib/deliver/runner.rb +202 -0
- data/deliver/lib/deliver/setup.rb +135 -0
- data/deliver/lib/deliver/submit_for_review.rb +122 -0
- data/deliver/lib/deliver/upload_assets.rb +27 -0
- data/deliver/lib/deliver/upload_metadata.rb +391 -0
- data/deliver/lib/deliver/upload_price_tier.rb +23 -0
- data/deliver/lib/deliver/upload_screenshots.rb +158 -0
- data/fastlane/README.md +11 -0
- data/fastlane/lib/assets/ActionDetails.md.erb +106 -0
- data/fastlane/lib/assets/Actions.md.erb +43 -0
- data/fastlane/lib/assets/AppfileTemplate +6 -0
- data/fastlane/lib/assets/AppfileTemplate.swift +7 -0
- data/fastlane/lib/assets/AppfileTemplateAndroid +2 -0
- data/fastlane/lib/assets/DefaultFastfileTemplate +20 -0
- data/fastlane/lib/assets/DefaultFastfileTemplate.swift +13 -0
- data/fastlane/lib/assets/completions/completion.bash +23 -0
- data/fastlane/lib/assets/completions/completion.fish +39 -0
- data/fastlane/lib/assets/completions/completion.sh +12 -0
- data/fastlane/lib/assets/completions/completion.zsh +23 -0
- data/fastlane/lib/assets/custom_action_template.rb +82 -0
- data/fastlane/lib/assets/mailgun_html_template.erb +142 -0
- data/fastlane/lib/assets/report_template.xml.erb +15 -0
- data/fastlane/lib/assets/s3_html_template.erb +105 -0
- data/fastlane/lib/assets/s3_plist_template.erb +31 -0
- data/fastlane/lib/assets/s3_version_template.erb +4 -0
- data/fastlane/lib/fastlane.rb +50 -0
- data/fastlane/lib/fastlane/action.rb +198 -0
- data/fastlane/lib/fastlane/action_collector.rb +35 -0
- data/fastlane/lib/fastlane/actions/README.md +3 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +162 -0
- data/fastlane/lib/fastlane/actions/adb.rb +78 -0
- data/fastlane/lib/fastlane/actions/adb_devices.rb +71 -0
- data/fastlane/lib/fastlane/actions/add_extra_platforms.rb +45 -0
- data/fastlane/lib/fastlane/actions/add_git_tag.rb +122 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +193 -0
- data/fastlane/lib/fastlane/actions/appaloosa.rb +266 -0
- data/fastlane/lib/fastlane/actions/appetize.rb +188 -0
- data/fastlane/lib/fastlane/actions/appetize_viewing_url_generator.rb +146 -0
- data/fastlane/lib/fastlane/actions/appium.rb +206 -0
- data/fastlane/lib/fastlane/actions/appledoc.rb +226 -0
- data/fastlane/lib/fastlane/actions/appstore.rb +14 -0
- data/fastlane/lib/fastlane/actions/apteligent.rb +105 -0
- data/fastlane/lib/fastlane/actions/artifactory.rb +157 -0
- data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +220 -0
- data/fastlane/lib/fastlane/actions/backup_file.rb +41 -0
- data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +135 -0
- data/fastlane/lib/fastlane/actions/badge.rb +155 -0
- data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +107 -0
- data/fastlane/lib/fastlane/actions/build_android_app.rb +14 -0
- data/fastlane/lib/fastlane/actions/build_app.rb +14 -0
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +151 -0
- data/fastlane/lib/fastlane/actions/bundle_install.rb +156 -0
- data/fastlane/lib/fastlane/actions/capture_android_screenshots.rb +63 -0
- data/fastlane/lib/fastlane/actions/capture_ios_screenshots.rb +61 -0
- data/fastlane/lib/fastlane/actions/capture_screenshots.rb +14 -0
- data/fastlane/lib/fastlane/actions/carthage.rb +215 -0
- data/fastlane/lib/fastlane/actions/cert.rb +14 -0
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +197 -0
- data/fastlane/lib/fastlane/actions/chatwork.rb +94 -0
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +53 -0
- data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +68 -0
- data/fastlane/lib/fastlane/actions/clean_cocoapods_cache.rb +52 -0
- data/fastlane/lib/fastlane/actions/clear_derived_data.rb +70 -0
- data/fastlane/lib/fastlane/actions/clipboard.rb +52 -0
- data/fastlane/lib/fastlane/actions/cloc.rb +89 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +148 -0
- data/fastlane/lib/fastlane/actions/commit_github_file.rb +186 -0
- data/fastlane/lib/fastlane/actions/commit_version_bump.rb +301 -0
- data/fastlane/lib/fastlane/actions/copy_artifacts.rb +114 -0
- data/fastlane/lib/fastlane/actions/crashlytics.rb +203 -0
- data/fastlane/lib/fastlane/actions/create_app_on_managed_play_store.rb +174 -0
- data/fastlane/lib/fastlane/actions/create_app_online.rb +75 -0
- data/fastlane/lib/fastlane/actions/create_keychain.rb +173 -0
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +190 -0
- data/fastlane/lib/fastlane/actions/danger.rb +124 -0
- data/fastlane/lib/fastlane/actions/debug.rb +32 -0
- data/fastlane/lib/fastlane/actions/default_platform.rb +47 -0
- data/fastlane/lib/fastlane/actions/delete_keychain.rb +68 -0
- data/fastlane/lib/fastlane/actions/deliver.rb +14 -0
- data/fastlane/lib/fastlane/actions/deploygate.rb +210 -0
- data/fastlane/lib/fastlane/actions/device_grid/README.md +157 -0
- data/fastlane/lib/fastlane/actions/docs/build_ios_app.md +245 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +259 -0
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +363 -0
- data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +103 -0
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +282 -0
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +330 -0
- data/fastlane/lib/fastlane/actions/docs/get_certificates.md +86 -0
- data/fastlane/lib/fastlane/actions/docs/get_provisioning_profile.md +223 -0
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +134 -0
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +151 -0
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +479 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +730 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +162 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +231 -0
- data/fastlane/lib/fastlane/actions/dotgpg_environment.rb +57 -0
- data/fastlane/lib/fastlane/actions/download.rb +76 -0
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +266 -0
- data/fastlane/lib/fastlane/actions/download_from_play_store.rb +61 -0
- data/fastlane/lib/fastlane/actions/dsym_zip.rb +93 -0
- data/fastlane/lib/fastlane/actions/echo.rb +14 -0
- data/fastlane/lib/fastlane/actions/ensure_bundle_exec.rb +59 -0
- data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +69 -0
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +81 -0
- data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +135 -0
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +97 -0
- data/fastlane/lib/fastlane/actions/environment_variable.rb +77 -0
- data/fastlane/lib/fastlane/actions/erb.rb +88 -0
- data/fastlane/lib/fastlane/actions/fastlane_version.rb +15 -0
- data/fastlane/lib/fastlane/actions/flock.rb +82 -0
- data/fastlane/lib/fastlane/actions/frame_screenshots.rb +63 -0
- data/fastlane/lib/fastlane/actions/frameit.rb +14 -0
- data/fastlane/lib/fastlane/actions/gcovr.rb +163 -0
- data/fastlane/lib/fastlane/actions/get_build_number.rb +106 -0
- data/fastlane/lib/fastlane/actions/get_build_number_repository.rb +120 -0
- data/fastlane/lib/fastlane/actions/get_certificates.rb +76 -0
- data/fastlane/lib/fastlane/actions/get_github_release.rb +163 -0
- data/fastlane/lib/fastlane/actions/get_info_plist_value.rb +78 -0
- data/fastlane/lib/fastlane/actions/get_ipa_info_plist_value.rb +82 -0
- data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +120 -0
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +100 -0
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +87 -0
- data/fastlane/lib/fastlane/actions/get_version_number.rb +170 -0
- data/fastlane/lib/fastlane/actions/git_add.rb +93 -0
- data/fastlane/lib/fastlane/actions/git_branch.rb +58 -0
- data/fastlane/lib/fastlane/actions/git_commit.rb +80 -0
- data/fastlane/lib/fastlane/actions/git_pull.rb +53 -0
- data/fastlane/lib/fastlane/actions/git_submodule_update.rb +52 -0
- data/fastlane/lib/fastlane/actions/git_tag_exists.rb +74 -0
- data/fastlane/lib/fastlane/actions/github_api.rb +262 -0
- data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +73 -0
- data/fastlane/lib/fastlane/actions/gradle.rb +249 -0
- data/fastlane/lib/fastlane/actions/gym.rb +14 -0
- data/fastlane/lib/fastlane/actions/hg_add_tag.rb +48 -0
- data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +183 -0
- data/fastlane/lib/fastlane/actions/hg_ensure_clean_status.rb +53 -0
- data/fastlane/lib/fastlane/actions/hg_push.rb +64 -0
- data/fastlane/lib/fastlane/actions/hipchat.rb +200 -0
- data/fastlane/lib/fastlane/actions/hockey.rb +406 -0
- data/fastlane/lib/fastlane/actions/ifttt.rb +96 -0
- data/fastlane/lib/fastlane/actions/import.rb +49 -0
- data/fastlane/lib/fastlane/actions/import_certificate.rb +77 -0
- data/fastlane/lib/fastlane/actions/import_from_git.rb +71 -0
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +117 -0
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +177 -0
- data/fastlane/lib/fastlane/actions/install_on_device.rb +95 -0
- data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +58 -0
- data/fastlane/lib/fastlane/actions/install_xcode_plugin.rb +91 -0
- data/fastlane/lib/fastlane/actions/installr.rb +132 -0
- data/fastlane/lib/fastlane/actions/ipa.rb +246 -0
- data/fastlane/lib/fastlane/actions/is_ci.rb +51 -0
- data/fastlane/lib/fastlane/actions/jazzy.rb +56 -0
- data/fastlane/lib/fastlane/actions/jira.rb +115 -0
- data/fastlane/lib/fastlane/actions/lane_context.rb +60 -0
- data/fastlane/lib/fastlane/actions/last_git_commit.rb +58 -0
- data/fastlane/lib/fastlane/actions/last_git_tag.rb +51 -0
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +134 -0
- data/fastlane/lib/fastlane/actions/lcov.rb +102 -0
- data/fastlane/lib/fastlane/actions/mailgun.rb +197 -0
- data/fastlane/lib/fastlane/actions/make_changelog_from_jenkins.rb +81 -0
- data/fastlane/lib/fastlane/actions/match.rb +14 -0
- data/fastlane/lib/fastlane/actions/min_fastlane_version.rb +57 -0
- data/fastlane/lib/fastlane/actions/modify_services.rb +173 -0
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +230 -0
- data/fastlane/lib/fastlane/actions/notification.rb +75 -0
- data/fastlane/lib/fastlane/actions/notify.rb +40 -0
- data/fastlane/lib/fastlane/actions/number_of_commits.rb +75 -0
- data/fastlane/lib/fastlane/actions/oclint.rb +269 -0
- data/fastlane/lib/fastlane/actions/onesignal.rb +156 -0
- data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +33 -0
- data/fastlane/lib/fastlane/actions/opt_out_usage.rb +40 -0
- data/fastlane/lib/fastlane/actions/pem.rb +14 -0
- data/fastlane/lib/fastlane/actions/pilot.rb +14 -0
- data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +183 -0
- data/fastlane/lib/fastlane/actions/pod_push.rb +145 -0
- data/fastlane/lib/fastlane/actions/podio_item.rb +217 -0
- data/fastlane/lib/fastlane/actions/precheck.rb +14 -0
- data/fastlane/lib/fastlane/actions/println.rb +14 -0
- data/fastlane/lib/fastlane/actions/produce.rb +14 -0
- data/fastlane/lib/fastlane/actions/prompt.rb +119 -0
- data/fastlane/lib/fastlane/actions/push_git_tags.rb +76 -0
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +127 -0
- data/fastlane/lib/fastlane/actions/puts.rb +68 -0
- data/fastlane/lib/fastlane/actions/read_podspec.rb +90 -0
- data/fastlane/lib/fastlane/actions/recreate_schemes.rb +46 -0
- data/fastlane/lib/fastlane/actions/register_device.rb +110 -0
- data/fastlane/lib/fastlane/actions/register_devices.rb +160 -0
- data/fastlane/lib/fastlane/actions/reset_git_repo.rb +121 -0
- data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +92 -0
- data/fastlane/lib/fastlane/actions/resign.rb +132 -0
- data/fastlane/lib/fastlane/actions/restore_file.rb +44 -0
- data/fastlane/lib/fastlane/actions/rocket.rb +83 -0
- data/fastlane/lib/fastlane/actions/rsync.rb +74 -0
- data/fastlane/lib/fastlane/actions/ruby_version.rb +56 -0
- data/fastlane/lib/fastlane/actions/run_tests.rb +131 -0
- data/fastlane/lib/fastlane/actions/s3.rb +460 -0
- data/fastlane/lib/fastlane/actions/say.rb +56 -0
- data/fastlane/lib/fastlane/actions/scan.rb +14 -0
- data/fastlane/lib/fastlane/actions/scp.rb +114 -0
- data/fastlane/lib/fastlane/actions/screengrab.rb +14 -0
- data/fastlane/lib/fastlane/actions/set_build_number_repository.rb +76 -0
- data/fastlane/lib/fastlane/actions/set_changelog.rb +172 -0
- data/fastlane/lib/fastlane/actions/set_github_release.rb +274 -0
- data/fastlane/lib/fastlane/actions/set_info_plist_value.rb +92 -0
- data/fastlane/lib/fastlane/actions/set_pod_key.rb +78 -0
- data/fastlane/lib/fastlane/actions/setup_ci.rb +121 -0
- data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +58 -0
- data/fastlane/lib/fastlane/actions/setup_jenkins.rb +193 -0
- data/fastlane/lib/fastlane/actions/setup_travis.rb +57 -0
- data/fastlane/lib/fastlane/actions/sh.rb +71 -0
- data/fastlane/lib/fastlane/actions/sigh.rb +14 -0
- data/fastlane/lib/fastlane/actions/skip_docs.rb +52 -0
- data/fastlane/lib/fastlane/actions/slack.rb +288 -0
- data/fastlane/lib/fastlane/actions/slather.rb +314 -0
- data/fastlane/lib/fastlane/actions/snapshot.rb +14 -0
- data/fastlane/lib/fastlane/actions/sonar.rb +138 -0
- data/fastlane/lib/fastlane/actions/spaceship_logs.rb +135 -0
- data/fastlane/lib/fastlane/actions/splunkmint.rb +156 -0
- data/fastlane/lib/fastlane/actions/spm.rb +123 -0
- data/fastlane/lib/fastlane/actions/ssh.rb +162 -0
- data/fastlane/lib/fastlane/actions/supply.rb +14 -0
- data/fastlane/lib/fastlane/actions/swiftlint.rb +182 -0
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +103 -0
- data/fastlane/lib/fastlane/actions/team_id.rb +42 -0
- data/fastlane/lib/fastlane/actions/team_name.rb +42 -0
- data/fastlane/lib/fastlane/actions/testfairy.rb +263 -0
- data/fastlane/lib/fastlane/actions/testflight.rb +14 -0
- data/fastlane/lib/fastlane/actions/tryouts.rb +149 -0
- data/fastlane/lib/fastlane/actions/twitter.rb +89 -0
- data/fastlane/lib/fastlane/actions/typetalk.rb +93 -0
- data/fastlane/lib/fastlane/actions/unlock_keychain.rb +132 -0
- data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +91 -0
- data/fastlane/lib/fastlane/actions/update_app_identifier.rb +124 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +177 -0
- data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +99 -0
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +143 -0
- data/fastlane/lib/fastlane/actions/update_plist.rb +80 -0
- data/fastlane/lib/fastlane/actions/update_project_code_signing.rb +76 -0
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +173 -0
- data/fastlane/lib/fastlane/actions/update_project_team.rb +95 -0
- data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +91 -0
- data/fastlane/lib/fastlane/actions/update_url_schemes.rb +123 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +244 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +165 -0
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +65 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +80 -0
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +107 -0
- data/fastlane/lib/fastlane/actions/validate_play_store_json_key.rb +104 -0
- data/fastlane/lib/fastlane/actions/verify_build.rb +199 -0
- data/fastlane/lib/fastlane/actions/verify_pod_keys.rb +67 -0
- data/fastlane/lib/fastlane/actions/verify_xcode.rb +152 -0
- data/fastlane/lib/fastlane/actions/version_bump_podspec.rb +105 -0
- data/fastlane/lib/fastlane/actions/version_get_podspec.rb +71 -0
- data/fastlane/lib/fastlane/actions/xcode_install.rb +105 -0
- data/fastlane/lib/fastlane/actions/xcode_select.rb +63 -0
- data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +312 -0
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +641 -0
- data/fastlane/lib/fastlane/actions/xcov.rb +66 -0
- data/fastlane/lib/fastlane/actions/xctool.rb +55 -0
- data/fastlane/lib/fastlane/actions/xcversion.rb +55 -0
- data/fastlane/lib/fastlane/actions/zip.rb +120 -0
- data/fastlane/lib/fastlane/auto_complete.rb +82 -0
- data/fastlane/lib/fastlane/boolean.rb +5 -0
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +185 -0
- data/fastlane/lib/fastlane/command_line_handler.rb +49 -0
- data/fastlane/lib/fastlane/commands_generator.rb +350 -0
- data/fastlane/lib/fastlane/configuration_helper.rb +26 -0
- data/fastlane/lib/fastlane/core_ext/bundler_monkey_patch.rb +14 -0
- data/fastlane/lib/fastlane/documentation/actions_list.rb +214 -0
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +89 -0
- data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +228 -0
- data/fastlane/lib/fastlane/environment_printer.rb +297 -0
- data/fastlane/lib/fastlane/erb_template_helper.rb +30 -0
- data/fastlane/lib/fastlane/fast_file.rb +351 -0
- data/fastlane/lib/fastlane/fastlane_require.rb +75 -0
- data/fastlane/lib/fastlane/features.rb +4 -0
- data/fastlane/lib/fastlane/helper/README.md +29 -0
- data/fastlane/lib/fastlane/helper/adb_helper.rb +52 -0
- data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +151 -0
- data/fastlane/lib/fastlane/helper/dotenv_helper.rb +50 -0
- data/fastlane/lib/fastlane/helper/gem_helper.rb +26 -0
- data/fastlane/lib/fastlane/helper/git_helper.rb +135 -0
- data/fastlane/lib/fastlane/helper/gradle_helper.rb +62 -0
- data/fastlane/lib/fastlane/helper/podspec_helper.rb +75 -0
- data/fastlane/lib/fastlane/helper/sh_helper.rb +134 -0
- data/fastlane/lib/fastlane/helper/xcodeproj_helper.rb +12 -0
- data/fastlane/lib/fastlane/helper/xcversion_helper.rb +25 -0
- data/fastlane/lib/fastlane/junit_generator.rb +27 -0
- data/fastlane/lib/fastlane/lane.rb +97 -0
- data/fastlane/lib/fastlane/lane_list.rb +137 -0
- data/fastlane/lib/fastlane/lane_manager.rb +140 -0
- data/fastlane/lib/fastlane/lane_manager_base.rb +92 -0
- data/fastlane/lib/fastlane/markdown_table_formatter.rb +62 -0
- data/fastlane/lib/fastlane/new_action.rb +47 -0
- data/fastlane/lib/fastlane/one_off.rb +45 -0
- data/fastlane/lib/fastlane/other_action.rb +29 -0
- data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +55 -0
- data/fastlane/lib/fastlane/plugins/plugin_generator.rb +86 -0
- data/fastlane/lib/fastlane/plugins/plugin_generator_ui.rb +19 -0
- data/fastlane/lib/fastlane/plugins/plugin_info.rb +49 -0
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +159 -0
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +387 -0
- data/fastlane/lib/fastlane/plugins/plugin_search.rb +46 -0
- data/fastlane/lib/fastlane/plugins/plugin_update_manager.rb +70 -0
- data/fastlane/lib/fastlane/plugins/plugins.rb +12 -0
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +35 -0
- data/fastlane/lib/fastlane/plugins/template/.circleci/config.yml +43 -0
- data/fastlane/lib/fastlane/plugins/template/.gitignore +12 -0
- data/fastlane/lib/fastlane/plugins/template/.rspec +5 -0
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +180 -0
- data/fastlane/lib/fastlane/plugins/template/.travis.yml +4 -0
- data/fastlane/lib/fastlane/plugins/template/Gemfile +6 -0
- data/fastlane/lib/fastlane/plugins/template/LICENSE.erb +21 -0
- data/fastlane/lib/fastlane/plugins/template/README.md.erb +52 -0
- data/fastlane/lib/fastlane/plugins/template/Rakefile +9 -0
- data/fastlane/lib/fastlane/plugins/template/fastlane/Fastfile.erb +3 -0
- data/fastlane/lib/fastlane/plugins/template/fastlane/Pluginfile.erb +1 -0
- data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%.rb.erb +16 -0
- data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/actions/%plugin_name%_action.rb.erb +47 -0
- data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/helper/%plugin_name%_helper.rb.erb +16 -0
- data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/version.rb.erb +5 -0
- data/fastlane/lib/fastlane/plugins/template/spec/%plugin_name%_action_spec.rb.erb +9 -0
- data/fastlane/lib/fastlane/plugins/template/spec/spec_helper.rb.erb +15 -0
- data/fastlane/lib/fastlane/runner.rb +371 -0
- data/fastlane/lib/fastlane/server/action_command.rb +61 -0
- data/fastlane/lib/fastlane/server/action_command_return.rb +14 -0
- data/fastlane/lib/fastlane/server/command_executor.rb +7 -0
- data/fastlane/lib/fastlane/server/command_parser.rb +44 -0
- data/fastlane/lib/fastlane/server/control_command.rb +23 -0
- data/fastlane/lib/fastlane/server/json_return_value_processor.rb +72 -0
- data/fastlane/lib/fastlane/server/socket_server.rb +232 -0
- data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +101 -0
- data/fastlane/lib/fastlane/setup/setup.rb +355 -0
- data/fastlane/lib/fastlane/setup/setup_android.rb +97 -0
- data/fastlane/lib/fastlane/setup/setup_ios.rb +504 -0
- data/fastlane/lib/fastlane/shells.rb +6 -0
- data/fastlane/lib/fastlane/supported_platforms.rb +28 -0
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +383 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +320 -0
- data/fastlane/lib/fastlane/swift_lane_manager.rb +304 -0
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +206 -0
- data/fastlane/lib/fastlane/tools.rb +33 -0
- data/fastlane/lib/fastlane/version.rb +6 -0
- data/fastlane/swift/Appfile.swift +17 -0
- data/fastlane/swift/ArgumentProcessor.swift +93 -0
- data/fastlane/swift/ControlCommand.swift +76 -0
- data/fastlane/swift/Deliverfile.swift +21 -0
- data/fastlane/swift/DeliverfileProtocol.swift +129 -0
- data/fastlane/swift/Fastfile.swift +12 -0
- data/fastlane/swift/Fastlane.swift +4396 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +425 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +103 -0
- data/fastlane/swift/FastlaneSwiftRunner/README.txt +10 -0
- data/fastlane/swift/Gymfile.swift +21 -0
- data/fastlane/swift/GymfileProtocol.swift +87 -0
- data/fastlane/swift/LaneFileProtocol.swift +140 -0
- data/fastlane/swift/Matchfile.swift +21 -0
- data/fastlane/swift/MatchfileProtocol.swift +61 -0
- data/fastlane/swift/Precheckfile.swift +21 -0
- data/fastlane/swift/PrecheckfileProtocol.swift +24 -0
- data/fastlane/swift/RubyCommand.swift +141 -0
- data/fastlane/swift/RubyCommandable.swift +44 -0
- data/fastlane/swift/Runner.swift +200 -0
- data/fastlane/swift/RunnerArgument.swift +24 -0
- data/fastlane/swift/Scanfile.swift +21 -0
- data/fastlane/swift/ScanfileProtocol.swift +117 -0
- data/fastlane/swift/Screengrabfile.swift +21 -0
- data/fastlane/swift/ScreengrabfileProtocol.swift +48 -0
- data/fastlane/swift/Snapshotfile.swift +21 -0
- data/fastlane/swift/SnapshotfileProtocol.swift +75 -0
- data/fastlane/swift/SocketClient.swift +305 -0
- data/fastlane/swift/SocketClientDelegateProtocol.swift +25 -0
- data/fastlane/swift/SocketResponse.swift +85 -0
- data/fastlane/swift/main.swift +52 -0
- data/fastlane/swift/upgrade_manifest.json +1 -0
- data/fastlane_core/README.md +79 -0
- data/fastlane_core/lib/assets/XMLTemplate.xml.erb +12 -0
- data/fastlane_core/lib/fastlane_core.rb +46 -0
- data/fastlane_core/lib/fastlane_core/analytics/action_completion_context.rb +34 -0
- data/fastlane_core/lib/fastlane_core/analytics/action_launch_context.rb +38 -0
- data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +23 -0
- data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +54 -0
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +71 -0
- data/fastlane_core/lib/fastlane_core/analytics/app_identifier_guesser.rb +64 -0
- data/fastlane_core/lib/fastlane_core/android_package_name_guesser.rb +79 -0
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +80 -0
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +116 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +99 -0
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +103 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +314 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +332 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +182 -0
- data/fastlane_core/lib/fastlane_core/core_ext/cfpropertylist.rb +23 -0
- data/fastlane_core/lib/fastlane_core/core_ext/shellwords.rb +63 -0
- data/fastlane_core/lib/fastlane_core/core_ext/string.rb +17 -0
- data/fastlane_core/lib/fastlane_core/device_manager.rb +331 -0
- data/fastlane_core/lib/fastlane_core/env.rb +9 -0
- data/fastlane_core/lib/fastlane_core/fastlane_folder.rb +72 -0
- data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +57 -0
- data/fastlane_core/lib/fastlane_core/feature/feature.rb +51 -0
- data/fastlane_core/lib/fastlane_core/features.rb +4 -0
- data/fastlane_core/lib/fastlane_core/globals.rb +27 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +414 -0
- data/fastlane_core/lib/fastlane_core/ios_app_identifier_guesser.rb +112 -0
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +63 -0
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +52 -0
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +520 -0
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +74 -0
- data/fastlane_core/lib/fastlane_core/languages.rb +16 -0
- data/fastlane_core/lib/fastlane_core/module.rb +31 -0
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +44 -0
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +48 -0
- data/fastlane_core/lib/fastlane_core/print_table.rb +131 -0
- data/fastlane_core/lib/fastlane_core/project.rb +481 -0
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +111 -0
- data/fastlane_core/lib/fastlane_core/string_filters.rb +51 -0
- data/fastlane_core/lib/fastlane_core/swag.rb +85 -0
- data/fastlane_core/lib/fastlane_core/tag_version.rb +31 -0
- data/fastlane_core/lib/fastlane_core/test_parser.rb +107 -0
- data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +17 -0
- data/fastlane_core/lib/fastlane_core/ui/errors.rb +1 -0
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_common_error.rb +19 -0
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_crash.rb +11 -0
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_error.rb +25 -0
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_exception.rb +19 -0
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_shell_error.rb +11 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +294 -0
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +62 -0
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +158 -0
- data/fastlane_core/lib/fastlane_core/ui/interface.rb +205 -0
- data/fastlane_core/lib/fastlane_core/ui/ui.rb +26 -0
- data/fastlane_core/lib/fastlane_core/update_checker/changelog.rb +37 -0
- data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +109 -0
- data/frameit/README.md +17 -0
- data/frameit/lib/assets/empty.png +0 -0
- data/frameit/lib/frameit.rb +13 -0
- data/frameit/lib/frameit/commands_generator.rb +114 -0
- data/frameit/lib/frameit/config_parser.rb +114 -0
- data/frameit/lib/frameit/dependency_checker.rb +22 -0
- data/frameit/lib/frameit/device_types.rb +18 -0
- data/frameit/lib/frameit/editor.rb +563 -0
- data/frameit/lib/frameit/frame_downloader.rb +85 -0
- data/frameit/lib/frameit/mac_editor.rb +35 -0
- data/frameit/lib/frameit/module.rb +42 -0
- data/frameit/lib/frameit/offsets.rb +21 -0
- data/frameit/lib/frameit/options.rb +82 -0
- data/frameit/lib/frameit/runner.rb +82 -0
- data/frameit/lib/frameit/screenshot.rb +137 -0
- data/frameit/lib/frameit/strings_parser.rb +46 -0
- data/frameit/lib/frameit/template_finder.rb +42 -0
- data/frameit/lib/frameit/trim_box.rb +35 -0
- data/gym/README.md +17 -0
- data/gym/lib/assets/GymfileTemplate +13 -0
- data/gym/lib/assets/GymfileTemplate.swift +13 -0
- data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +61 -0
- data/gym/lib/gym.rb +9 -0
- data/gym/lib/gym/code_signing_mapping.rb +181 -0
- data/gym/lib/gym/commands_generator.rb +78 -0
- data/gym/lib/gym/detect_values.rb +171 -0
- data/gym/lib/gym/error_handler.rb +306 -0
- data/gym/lib/gym/generators/README.md +1 -0
- data/gym/lib/gym/generators/build_command_generator.rb +143 -0
- data/gym/lib/gym/generators/package_command_generator.rb +56 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +193 -0
- data/gym/lib/gym/manager.rb +22 -0
- data/gym/lib/gym/module.rb +36 -0
- data/gym/lib/gym/options.rb +262 -0
- data/gym/lib/gym/runner.rb +264 -0
- data/gym/lib/gym/xcode.rb +27 -0
- data/gym/lib/gym/xcodebuild_fixes/README.md +9 -0
- data/gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb +35 -0
- data/match/README.md +17 -0
- data/match/lib/assets/MatchfileTemplate +11 -0
- data/match/lib/assets/MatchfileTemplate.swift +9 -0
- data/match/lib/assets/READMETemplate.md +56 -0
- data/match/lib/match.rb +13 -0
- data/match/lib/match/change_password.rb +70 -0
- data/match/lib/match/commands_generator.rb +175 -0
- data/match/lib/match/encryption.rb +45 -0
- data/match/lib/match/encryption/interface.rb +17 -0
- data/match/lib/match/encryption/openssl.rb +161 -0
- data/match/lib/match/generator.rb +91 -0
- data/match/lib/match/migrate.rb +98 -0
- data/match/lib/match/module.rb +27 -0
- data/match/lib/match/nuke.rb +260 -0
- data/match/lib/match/options.rb +198 -0
- data/match/lib/match/runner.rb +333 -0
- data/match/lib/match/setup.rb +40 -0
- data/match/lib/match/spaceship_ensure.rb +83 -0
- data/match/lib/match/storage.rb +42 -0
- data/match/lib/match/storage/git_storage.rb +214 -0
- data/match/lib/match/storage/google_cloud_storage.rb +265 -0
- data/match/lib/match/storage/interface.rb +110 -0
- data/match/lib/match/table_printer.rb +51 -0
- data/match/lib/match/utils.rb +75 -0
- data/pem/README.md +17 -0
- data/pem/lib/pem.rb +4 -0
- data/pem/lib/pem/commands_generator.rb +46 -0
- data/pem/lib/pem/manager.rb +112 -0
- data/pem/lib/pem/module.rb +19 -0
- data/pem/lib/pem/options.rb +103 -0
- data/pilot/README.md +17 -0
- data/pilot/lib/pilot.rb +9 -0
- data/pilot/lib/pilot/build_manager.rb +453 -0
- data/pilot/lib/pilot/commands_generator.rb +174 -0
- data/pilot/lib/pilot/features.rb +0 -0
- data/pilot/lib/pilot/manager.rb +80 -0
- data/pilot/lib/pilot/module.rb +11 -0
- data/pilot/lib/pilot/options.rb +266 -0
- data/pilot/lib/pilot/tester_exporter.rb +58 -0
- data/pilot/lib/pilot/tester_importer.rb +53 -0
- data/pilot/lib/pilot/tester_manager.rb +168 -0
- data/pilot/lib/pilot/tester_util.rb +0 -0
- data/precheck/README.md +17 -0
- data/precheck/lib/assets/PrecheckfileTemplate +27 -0
- data/precheck/lib/assets/PrecheckfileTemplate.swift +19 -0
- data/precheck/lib/precheck.rb +3 -0
- data/precheck/lib/precheck/commands_generator.rb +74 -0
- data/precheck/lib/precheck/item_to_check.rb +58 -0
- data/precheck/lib/precheck/module.rb +21 -0
- data/precheck/lib/precheck/options.rb +79 -0
- data/precheck/lib/precheck/rule.rb +171 -0
- data/precheck/lib/precheck/rule_check_result.rb +19 -0
- data/precheck/lib/precheck/rule_processor.rb +231 -0
- data/precheck/lib/precheck/rules/abstract_text_match_rule.rb +80 -0
- data/precheck/lib/precheck/rules/all.rb +1 -0
- data/precheck/lib/precheck/rules/copyright_date_rule.rb +37 -0
- data/precheck/lib/precheck/rules/curse_words_rule.rb +62 -0
- data/precheck/lib/precheck/rules/custom_text_rule.rb +35 -0
- data/precheck/lib/precheck/rules/free_stuff_iap_rule.rb +31 -0
- data/precheck/lib/precheck/rules/future_functionality_rule.rb +33 -0
- data/precheck/lib/precheck/rules/negative_apple_sentiment_rule.rb +37 -0
- data/precheck/lib/precheck/rules/other_platforms_rule.rb +43 -0
- data/precheck/lib/precheck/rules/placeholder_words_rule.rb +31 -0
- data/precheck/lib/precheck/rules/rules_data/curse_word_hashes/en_us.txt +349 -0
- data/precheck/lib/precheck/rules/test_words_rule.rb +30 -0
- data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +47 -0
- data/precheck/lib/precheck/runner.rb +176 -0
- data/produce/README.md +17 -0
- data/produce/lib/produce.rb +6 -0
- data/produce/lib/produce/available_default_languages.rb +51 -0
- data/produce/lib/produce/cloud_container.rb +82 -0
- data/produce/lib/produce/commands_generator.rb +235 -0
- data/produce/lib/produce/developer_center.rb +134 -0
- data/produce/lib/produce/group.rb +90 -0
- data/produce/lib/produce/itunes_connect.rb +92 -0
- data/produce/lib/produce/manager.rb +15 -0
- data/produce/lib/produce/merchant.rb +121 -0
- data/produce/lib/produce/module.rb +14 -0
- data/produce/lib/produce/options.rb +172 -0
- data/produce/lib/produce/service.rb +313 -0
- data/scan/README.md +17 -0
- data/scan/lib/assets/ScanfileTemplate +16 -0
- data/scan/lib/assets/ScanfileTemplate.swift +13 -0
- data/scan/lib/scan.rb +10 -0
- data/scan/lib/scan/commands_generator.rb +78 -0
- data/scan/lib/scan/detect_values.rb +219 -0
- data/scan/lib/scan/error_handler.rb +52 -0
- data/scan/lib/scan/manager.rb +21 -0
- data/scan/lib/scan/module.rb +32 -0
- data/scan/lib/scan/options.rb +390 -0
- data/scan/lib/scan/runner.rb +173 -0
- data/scan/lib/scan/slack_poster.rb +60 -0
- data/scan/lib/scan/test_command_generator.rb +160 -0
- data/scan/lib/scan/test_result_parser.rb +26 -0
- data/scan/lib/scan/xcpretty_reporter_options_generator.rb +85 -0
- data/screengrab/README.md +17 -0
- data/screengrab/lib/assets/ScreengrabfileTemplate +15 -0
- data/screengrab/lib/assets/ScreengrabfileTemplate.swift +15 -0
- data/screengrab/lib/screengrab.rb +7 -0
- data/screengrab/lib/screengrab/android_environment.rb +91 -0
- data/screengrab/lib/screengrab/commands_generator.rb +70 -0
- data/screengrab/lib/screengrab/dependency_checker.rb +58 -0
- data/screengrab/lib/screengrab/detect_values.rb +16 -0
- data/screengrab/lib/screengrab/module.rb +24 -0
- data/screengrab/lib/screengrab/options.rb +135 -0
- data/screengrab/lib/screengrab/page.html.erb +190 -0
- data/screengrab/lib/screengrab/reports_generator.rb +36 -0
- data/screengrab/lib/screengrab/runner.rb +379 -0
- data/screengrab/lib/screengrab/setup.rb +24 -0
- data/sigh/README.md +17 -0
- data/sigh/lib/assets/resign.sh +888 -0
- data/sigh/lib/sigh.rb +4 -0
- data/sigh/lib/sigh/commands_generator.rb +153 -0
- data/sigh/lib/sigh/download_all.rb +45 -0
- data/sigh/lib/sigh/local_manage.rb +145 -0
- data/sigh/lib/sigh/manager.rb +47 -0
- data/sigh/lib/sigh/module.rb +16 -0
- data/sigh/lib/sigh/options.rb +160 -0
- data/sigh/lib/sigh/repair.rb +34 -0
- data/sigh/lib/sigh/resign.rb +220 -0
- data/sigh/lib/sigh/runner.rb +285 -0
- data/snapshot/README.md +17 -0
- data/snapshot/lib/assets/SnapfileTemplate +34 -0
- data/snapshot/lib/assets/SnapfileTemplate.swift +41 -0
- data/snapshot/lib/assets/SnapshotHelper.swift +303 -0
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +172 -0
- data/snapshot/lib/snapshot.rb +19 -0
- data/snapshot/lib/snapshot/collector.rb +140 -0
- data/snapshot/lib/snapshot/commands_generator.rb +115 -0
- data/snapshot/lib/snapshot/dependency_checker.rb +69 -0
- data/snapshot/lib/snapshot/detect_values.rb +71 -0
- data/snapshot/lib/snapshot/error_handler.rb +24 -0
- data/snapshot/lib/snapshot/fixes/README.md +5 -0
- data/snapshot/lib/snapshot/fixes/hardware_keyboard_fix.rb +27 -0
- data/snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb +27 -0
- data/snapshot/lib/snapshot/latest_os_version.rb +34 -0
- data/snapshot/lib/snapshot/module.rb +44 -0
- data/snapshot/lib/snapshot/options.rb +223 -0
- data/snapshot/lib/snapshot/page.html.erb +285 -0
- data/snapshot/lib/snapshot/reports_generator.rb +125 -0
- data/snapshot/lib/snapshot/reset_simulators.rb +122 -0
- data/snapshot/lib/snapshot/runner.rb +146 -0
- data/snapshot/lib/snapshot/screenshot_flatten.rb +20 -0
- data/snapshot/lib/snapshot/screenshot_rotate.rb +36 -0
- data/snapshot/lib/snapshot/setup.rb +58 -0
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +54 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +215 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +143 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_xcode_8.rb +113 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +102 -0
- data/snapshot/lib/snapshot/test_command_generator_base.rb +117 -0
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +67 -0
- data/snapshot/lib/snapshot/update.rb +36 -0
- data/spaceship/README.md +183 -0
- data/spaceship/lib/assets/displayFamilies.json +181 -0
- data/spaceship/lib/assets/languageMapping.json +306 -0
- data/spaceship/lib/assets/languageMappingReadable.json +30 -0
- data/spaceship/lib/spaceship.rb +26 -0
- data/spaceship/lib/spaceship/babosa_fix.rb +30 -0
- data/spaceship/lib/spaceship/base.rb +310 -0
- data/spaceship/lib/spaceship/client.rb +892 -0
- data/spaceship/lib/spaceship/commands_generator.rb +52 -0
- data/spaceship/lib/spaceship/connect_api.rb +47 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +178 -0
- data/spaceship/lib/spaceship/connect_api/model.rb +152 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +97 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_app_localization.rb +28 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_app_review_detail.rb +32 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_build_localization.rb +20 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_build_metric.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +56 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +144 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +56 -0
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +46 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +37 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +48 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +53 -0
- data/spaceship/lib/spaceship/connect_api/models/pre_release_version.rb +20 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +60 -0
- data/spaceship/lib/spaceship/connect_api/models/user.rb +50 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +48 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/testflight/client.rb +33 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +322 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +56 -0
- data/spaceship/lib/spaceship/connect_api/users/client.rb +33 -0
- data/spaceship/lib/spaceship/connect_api/users/users.rb +16 -0
- data/spaceship/lib/spaceship/du/du_client.rb +134 -0
- data/spaceship/lib/spaceship/du/upload_file.rb +58 -0
- data/spaceship/lib/spaceship/du/utilities.rb +99 -0
- data/spaceship/lib/spaceship/errors.rb +79 -0
- data/spaceship/lib/spaceship/globals.rb +12 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +14 -0
- data/spaceship/lib/spaceship/helper/plist_middleware.rb +16 -0
- data/spaceship/lib/spaceship/helper/rels_middleware.rb +28 -0
- data/spaceship/lib/spaceship/launcher.rb +99 -0
- data/spaceship/lib/spaceship/module.rb +8 -0
- data/spaceship/lib/spaceship/playground.rb +75 -0
- data/spaceship/lib/spaceship/portal/app.rb +192 -0
- data/spaceship/lib/spaceship/portal/app_group.rb +73 -0
- data/spaceship/lib/spaceship/portal/app_service.rb +87 -0
- data/spaceship/lib/spaceship/portal/certificate.rb +351 -0
- data/spaceship/lib/spaceship/portal/cloud_container.rb +74 -0
- data/spaceship/lib/spaceship/portal/device.rb +191 -0
- data/spaceship/lib/spaceship/portal/invite.rb +53 -0
- data/spaceship/lib/spaceship/portal/key.rb +101 -0
- data/spaceship/lib/spaceship/portal/legacy_wrapper.rb +21 -0
- data/spaceship/lib/spaceship/portal/merchant.rb +86 -0
- data/spaceship/lib/spaceship/portal/passbook.rb +78 -0
- data/spaceship/lib/spaceship/portal/person.rb +62 -0
- data/spaceship/lib/spaceship/portal/persons.rb +67 -0
- data/spaceship/lib/spaceship/portal/portal.rb +17 -0
- data/spaceship/lib/spaceship/portal/portal_base.rb +16 -0
- data/spaceship/lib/spaceship/portal/portal_client.rb +848 -0
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +559 -0
- data/spaceship/lib/spaceship/portal/provisioning_profile_template.rb +52 -0
- data/spaceship/lib/spaceship/portal/spaceship.rb +154 -0
- data/spaceship/lib/spaceship/portal/ui/select_team.rb +116 -0
- data/spaceship/lib/spaceship/portal/website_push.rb +88 -0
- data/spaceship/lib/spaceship/provider.rb +13 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +74 -0
- data/spaceship/lib/spaceship/test_flight.rb +10 -0
- data/spaceship/lib/spaceship/test_flight/app_test_info.rb +40 -0
- data/spaceship/lib/spaceship/test_flight/base.rb +39 -0
- data/spaceship/lib/spaceship/test_flight/beta_review_info.rb +19 -0
- data/spaceship/lib/spaceship/test_flight/build.rb +239 -0
- data/spaceship/lib/spaceship/test_flight/build_trains.rb +46 -0
- data/spaceship/lib/spaceship/test_flight/client.rb +361 -0
- data/spaceship/lib/spaceship/test_flight/export_compliance.rb +12 -0
- data/spaceship/lib/spaceship/test_flight/group.rb +131 -0
- data/spaceship/lib/spaceship/test_flight/test_info.rb +56 -0
- data/spaceship/lib/spaceship/test_flight/tester.rb +136 -0
- data/spaceship/lib/spaceship/tunes/app_analytics.rb +168 -0
- data/spaceship/lib/spaceship/tunes/app_details.rb +147 -0
- data/spaceship/lib/spaceship/tunes/app_image.rb +51 -0
- data/spaceship/lib/spaceship/tunes/app_ratings.rb +58 -0
- data/spaceship/lib/spaceship/tunes/app_review.rb +55 -0
- data/spaceship/lib/spaceship/tunes/app_review_attachment.rb +49 -0
- data/spaceship/lib/spaceship/tunes/app_screenshot.rb +12 -0
- data/spaceship/lib/spaceship/tunes/app_status.rb +63 -0
- data/spaceship/lib/spaceship/tunes/app_submission.rb +161 -0
- data/spaceship/lib/spaceship/tunes/app_trailer.rb +64 -0
- data/spaceship/lib/spaceship/tunes/app_version.rb +961 -0
- data/spaceship/lib/spaceship/tunes/app_version_common.rb +35 -0
- data/spaceship/lib/spaceship/tunes/app_version_generated_promocodes.rb +28 -0
- data/spaceship/lib/spaceship/tunes/app_version_history.rb +52 -0
- data/spaceship/lib/spaceship/tunes/app_version_promocodes.rb +27 -0
- data/spaceship/lib/spaceship/tunes/app_version_ref.rb +15 -0
- data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +27 -0
- data/spaceship/lib/spaceship/tunes/application.rb +448 -0
- data/spaceship/lib/spaceship/tunes/availability.rb +132 -0
- data/spaceship/lib/spaceship/tunes/b2b_user.rb +30 -0
- data/spaceship/lib/spaceship/tunes/build.rb +263 -0
- data/spaceship/lib/spaceship/tunes/build_details.rb +42 -0
- data/spaceship/lib/spaceship/tunes/build_train.rb +181 -0
- data/spaceship/lib/spaceship/tunes/developer_response.rb +23 -0
- data/spaceship/lib/spaceship/tunes/device_type.rb +17 -0
- data/spaceship/lib/spaceship/tunes/display_family.rb +84 -0
- data/spaceship/lib/spaceship/tunes/errors.rb +17 -0
- data/spaceship/lib/spaceship/tunes/iap.rb +151 -0
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +243 -0
- data/spaceship/lib/spaceship/tunes/iap_families.rb +57 -0
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +73 -0
- data/spaceship/lib/spaceship/tunes/iap_family_list.rb +28 -0
- data/spaceship/lib/spaceship/tunes/iap_list.rb +76 -0
- data/spaceship/lib/spaceship/tunes/iap_status.rb +52 -0
- data/spaceship/lib/spaceship/tunes/iap_subscription_pricing_info.rb +46 -0
- data/spaceship/lib/spaceship/tunes/iap_subscription_pricing_tier.rb +25 -0
- data/spaceship/lib/spaceship/tunes/iap_type.rb +45 -0
- data/spaceship/lib/spaceship/tunes/language_converter.rb +65 -0
- data/spaceship/lib/spaceship/tunes/language_item.rb +61 -0
- data/spaceship/lib/spaceship/tunes/legacy_wrapper.rb +13 -0
- data/spaceship/lib/spaceship/tunes/member.rb +84 -0
- data/spaceship/lib/spaceship/tunes/members.rb +35 -0
- data/spaceship/lib/spaceship/tunes/pricing_info.rb +42 -0
- data/spaceship/lib/spaceship/tunes/pricing_tier.rb +25 -0
- data/spaceship/lib/spaceship/tunes/sandbox_tester.rb +74 -0
- data/spaceship/lib/spaceship/tunes/spaceship.rb +39 -0
- data/spaceship/lib/spaceship/tunes/territory.rb +39 -0
- data/spaceship/lib/spaceship/tunes/transit_app_file.rb +23 -0
- data/spaceship/lib/spaceship/tunes/tunes.rb +35 -0
- data/spaceship/lib/spaceship/tunes/tunes_base.rb +17 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +1572 -0
- data/spaceship/lib/spaceship/tunes/user_detail.rb +15 -0
- data/spaceship/lib/spaceship/tunes/version_set.rb +26 -0
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +287 -0
- data/spaceship/lib/spaceship/ui.rb +27 -0
- data/supply/README.md +17 -0
- data/supply/lib/supply.rb +30 -0
- data/supply/lib/supply/apk_listing.rb +14 -0
- data/supply/lib/supply/client.rb +458 -0
- data/supply/lib/supply/commands_generator.rb +66 -0
- data/supply/lib/supply/languages.rb +88 -0
- data/supply/lib/supply/listing.rb +32 -0
- data/supply/lib/supply/options.rb +266 -0
- data/supply/lib/supply/reader.rb +25 -0
- data/supply/lib/supply/setup.rb +112 -0
- data/supply/lib/supply/uploader.rb +349 -0
- metadata +1772 -0
@@ -0,0 +1,203 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'fastlane_core/globals'
|
3
|
+
require 'fastlane_core/cert_checker'
|
4
|
+
require 'fastlane_core/keychain_importer'
|
5
|
+
require 'fastlane_core/print_table'
|
6
|
+
require 'spaceship'
|
7
|
+
|
8
|
+
require_relative 'module'
|
9
|
+
|
10
|
+
module Cert
|
11
|
+
class Runner
|
12
|
+
def launch
|
13
|
+
run
|
14
|
+
|
15
|
+
installed = FastlaneCore::CertChecker.installed?(ENV["CER_FILE_PATH"], in_keychain: ENV["CER_KEYCHAIN_PATH"])
|
16
|
+
UI.message("Verifying the certificate is properly installed locally...")
|
17
|
+
UI.user_error!("Could not find the newly generated certificate installed", show_github_issues: true) unless installed
|
18
|
+
UI.success("Successfully installed certificate #{ENV['CER_CERTIFICATE_ID']}")
|
19
|
+
return ENV["CER_FILE_PATH"]
|
20
|
+
end
|
21
|
+
|
22
|
+
def login
|
23
|
+
UI.message("Starting login with user '#{Cert.config[:username]}'")
|
24
|
+
Spaceship.login(Cert.config[:username], nil)
|
25
|
+
Spaceship.select_team
|
26
|
+
UI.message("Successfully logged in")
|
27
|
+
end
|
28
|
+
|
29
|
+
def run
|
30
|
+
FileUtils.mkdir_p(Cert.config[:output_path])
|
31
|
+
|
32
|
+
FastlaneCore::PrintTable.print_values(config: Cert.config, hide_keys: [:output_path], title: "Summary for cert #{Fastlane::VERSION}")
|
33
|
+
|
34
|
+
login
|
35
|
+
|
36
|
+
should_create = Cert.config[:force]
|
37
|
+
unless should_create
|
38
|
+
cert_path = find_existing_cert
|
39
|
+
should_create = cert_path.nil?
|
40
|
+
end
|
41
|
+
|
42
|
+
return unless should_create
|
43
|
+
|
44
|
+
if create_certificate # no certificate here, creating a new one
|
45
|
+
return # success
|
46
|
+
else
|
47
|
+
UI.user_error!("Something went wrong when trying to create a new certificate...")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Command method for the :revoke_expired sub-command
|
52
|
+
def revoke_expired_certs!
|
53
|
+
FastlaneCore::PrintTable.print_values(config: Cert.config, hide_keys: [:output_path], title: "Summary for cert #{Fastlane::VERSION}")
|
54
|
+
|
55
|
+
login
|
56
|
+
|
57
|
+
to_revoke = expired_certs
|
58
|
+
|
59
|
+
if to_revoke.empty?
|
60
|
+
UI.success("No expired certificates were found to revoke! 👍")
|
61
|
+
return
|
62
|
+
end
|
63
|
+
|
64
|
+
revoke_count = 0
|
65
|
+
|
66
|
+
to_revoke.each do |certificate|
|
67
|
+
begin
|
68
|
+
UI.message("#{certificate.id} #{certificate.name} has expired, revoking...")
|
69
|
+
certificate.revoke!
|
70
|
+
revoke_count += 1
|
71
|
+
rescue => e
|
72
|
+
UI.error("An error occurred while revoking #{certificate.id} #{certificate.name}")
|
73
|
+
UI.error("#{e.message}\n#{e.backtrace.join("\n")}") if FastlaneCore::Globals.verbose?
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
UI.success("#{revoke_count} expired certificate#{'s' if revoke_count != 1} #{revoke_count == 1 ? 'has' : 'have'} been revoked! 👍")
|
78
|
+
end
|
79
|
+
|
80
|
+
def expired_certs
|
81
|
+
certificates.select do |certificate|
|
82
|
+
certificate.expires < Time.now.utc
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def find_existing_cert
|
87
|
+
certificates.each do |certificate|
|
88
|
+
unless certificate.can_download
|
89
|
+
next
|
90
|
+
end
|
91
|
+
|
92
|
+
path = store_certificate(certificate, Cert.config[:filename])
|
93
|
+
private_key_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.p12"))
|
94
|
+
|
95
|
+
# As keychain is specific to macOS, this will likely fail on non macOS systems.
|
96
|
+
# See also: https://github.com/fastlane/fastlane/pull/14462
|
97
|
+
keychain = File.expand_path(Cert.config[:keychain_path]) unless Cert.config[:keychain_path].nil?
|
98
|
+
if FastlaneCore::CertChecker.installed?(path, in_keychain: keychain)
|
99
|
+
# This certificate is installed on the local machine
|
100
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
101
|
+
ENV["CER_FILE_PATH"] = path
|
102
|
+
ENV["CER_KEYCHAIN_PATH"] = keychain
|
103
|
+
|
104
|
+
UI.success("Found the certificate #{certificate.id} (#{certificate.name}) which is installed on the local machine. Using this one.")
|
105
|
+
|
106
|
+
return path
|
107
|
+
elsif File.exist?(private_key_path)
|
108
|
+
password = Cert.config[:keychain_password]
|
109
|
+
FastlaneCore::KeychainImporter.import_file(private_key_path, keychain, keychain_password: password)
|
110
|
+
FastlaneCore::KeychainImporter.import_file(path, keychain, keychain_password: password)
|
111
|
+
|
112
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
113
|
+
ENV["CER_FILE_PATH"] = path
|
114
|
+
ENV["CER_KEYCHAIN_PATH"] = keychain
|
115
|
+
|
116
|
+
UI.success("Found the cached certificate #{certificate.id} (#{certificate.name}). Using this one.")
|
117
|
+
|
118
|
+
return path
|
119
|
+
else
|
120
|
+
UI.error("Certificate #{certificate.id} (#{certificate.name}) can't be found on your local computer")
|
121
|
+
end
|
122
|
+
|
123
|
+
File.delete(path) # as apparently this certificate is pretty useless without a private key
|
124
|
+
end
|
125
|
+
|
126
|
+
UI.important("Couldn't find an existing certificate... creating a new one")
|
127
|
+
return nil
|
128
|
+
end
|
129
|
+
|
130
|
+
# All certificates of this type
|
131
|
+
def certificates
|
132
|
+
certificate_type.all
|
133
|
+
end
|
134
|
+
|
135
|
+
# The kind of certificate we're interested in
|
136
|
+
def certificate_type
|
137
|
+
case Cert.config[:platform].to_s
|
138
|
+
when 'ios', 'tvos'
|
139
|
+
cert_type = Spaceship.certificate.production
|
140
|
+
cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
|
141
|
+
cert_type = Spaceship.certificate.development if Cert.config[:development]
|
142
|
+
|
143
|
+
when 'macos'
|
144
|
+
cert_type = Spaceship.certificate.mac_app_distribution
|
145
|
+
cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
cert_type
|
150
|
+
end
|
151
|
+
|
152
|
+
def create_certificate
|
153
|
+
# Create a new certificate signing request
|
154
|
+
csr, pkey = Spaceship.certificate.create_certificate_signing_request
|
155
|
+
|
156
|
+
# Use the signing request to create a new (development|distribution) certificate
|
157
|
+
begin
|
158
|
+
certificate = certificate_type.create!(csr: csr)
|
159
|
+
rescue => ex
|
160
|
+
type_name = (Cert.config[:development] ? "Development" : "Distribution")
|
161
|
+
if ex.to_s.include?("You already have a current")
|
162
|
+
UI.user_error!("Could not create another #{type_name} certificate, reached the maximum number of available #{type_name} certificates.", show_github_issues: true)
|
163
|
+
elsif ex.to_s.include?("You are not allowed to perform this operation.") && type_name == "Distribution"
|
164
|
+
UI.user_error!("You do not have permission to create this certificate. Only Team Admins can create Distribution certificates\n 🔍 See https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/ManagingYourTeam/ManagingYourTeam.html for more information.")
|
165
|
+
end
|
166
|
+
raise ex
|
167
|
+
end
|
168
|
+
|
169
|
+
# Store all that onto the filesystem
|
170
|
+
|
171
|
+
request_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.certSigningRequest"))
|
172
|
+
File.write(request_path, csr.to_pem)
|
173
|
+
|
174
|
+
private_key_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.p12"))
|
175
|
+
File.write(private_key_path, pkey)
|
176
|
+
|
177
|
+
cert_path = store_certificate(certificate, Cert.config[:filename])
|
178
|
+
|
179
|
+
# Import all the things into the Keychain
|
180
|
+
keychain = File.expand_path(Cert.config[:keychain_path])
|
181
|
+
password = Cert.config[:keychain_password]
|
182
|
+
FastlaneCore::KeychainImporter.import_file(private_key_path, keychain, keychain_password: password)
|
183
|
+
FastlaneCore::KeychainImporter.import_file(cert_path, keychain, keychain_password: password)
|
184
|
+
|
185
|
+
# Environment variables for the fastlane action
|
186
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
187
|
+
ENV["CER_FILE_PATH"] = cert_path
|
188
|
+
|
189
|
+
UI.success("Successfully generated #{certificate.id} which was imported to the local machine.")
|
190
|
+
|
191
|
+
return cert_path
|
192
|
+
end
|
193
|
+
|
194
|
+
def store_certificate(certificate, filename = nil)
|
195
|
+
cert_name = filename ? filename : certificate.id
|
196
|
+
cert_name = "#{cert_name}.cer" unless File.extname(cert_name) == ".cer"
|
197
|
+
path = File.expand_path(File.join(Cert.config[:output_path], cert_name))
|
198
|
+
raw_data = certificate.download_raw
|
199
|
+
File.write(path, raw_data)
|
200
|
+
return path
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
CredentialsManager
|
2
|
+
===================
|
3
|
+
|
4
|
+
`CredentialsManager` is used by most components in the [fastlane.tools](https://fastlane.tools) toolchain.
|
5
|
+
|
6
|
+
All code related to your username and password can be found here: [account_manager.rb](https://github.com/fastlane/fastlane/blob/master/credentials_manager/lib/credentials_manager/account_manager.rb)
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
Along with the [Ruby libraries](https://github.com/fastlane/fastlane/tree/master/credentials_manager#implementing-a-custom-solution) you can use the command line interface to add credentials to the keychain.
|
10
|
+
|
11
|
+
**Adding Credentials**
|
12
|
+
```
|
13
|
+
fastlane fastlane-credentials add --username felix@krausefx.com
|
14
|
+
Password: *********
|
15
|
+
Credential felix@krausefx.com:********* added to keychain.
|
16
|
+
```
|
17
|
+
|
18
|
+
**Removing Credentials**
|
19
|
+
```
|
20
|
+
fastlane fastlane-credentials remove --username felix@krausefx.com
|
21
|
+
password has been deleted.
|
22
|
+
```
|
23
|
+
|
24
|
+
## Storing in the keychain
|
25
|
+
|
26
|
+
By default, your Apple credentials are stored in the macOS Keychain.
|
27
|
+
|
28
|
+
Your password is only stored locally on your computer.
|
29
|
+
|
30
|
+
## Change Password
|
31
|
+
|
32
|
+
You can easily delete the stored password by opening the "Keychain Access" app, switching to *All Items*, and searching for "*deliver*". Select the item you want to change and delete it. Next time running one of the tools, you'll be asked for the new password.
|
33
|
+
|
34
|
+
## Using environment variables
|
35
|
+
|
36
|
+
Pass the user credentials via the following environment variables:
|
37
|
+
|
38
|
+
```
|
39
|
+
FASTLANE_USER
|
40
|
+
FASTLANE_PASSWORD
|
41
|
+
```
|
42
|
+
|
43
|
+
If you don't want to have your password stored in the Keychain set the `FASTLANE_DONT_STORE_PASSWORD` environment variable to `"1"`.
|
44
|
+
|
45
|
+
## Implementing a custom solution
|
46
|
+
|
47
|
+
All _fastlane_ tools are Ruby-based, and you can take a look at the source code to easily implement your own authentication solution.
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
require 'credentials_manager'
|
51
|
+
|
52
|
+
data = CredentialsManager::AccountManager.new(user: user, password: password)
|
53
|
+
puts data.user
|
54
|
+
puts data.password
|
55
|
+
```
|
56
|
+
|
57
|
+
# Code of Conduct
|
58
|
+
Help us keep _fastlane_ open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
59
|
+
|
60
|
+
# License
|
61
|
+
|
62
|
+
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
63
|
+
|
64
|
+
> This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'security'
|
2
|
+
require 'highline/import' # to hide the entered password
|
3
|
+
|
4
|
+
require_relative 'appfile_config'
|
5
|
+
|
6
|
+
module CredentialsManager
|
7
|
+
class AccountManager
|
8
|
+
DEFAULT_PREFIX = "deliver"
|
9
|
+
|
10
|
+
# Is used for iTunes Transporter
|
11
|
+
attr_reader :prefix
|
12
|
+
|
13
|
+
# @param prefix [String] Very optional, is used for the
|
14
|
+
# iTunes Transporter which uses application specific passwords
|
15
|
+
# @param note [String] An optional note that will be shown next
|
16
|
+
# to the password and username prompt
|
17
|
+
def initialize(user: nil, password: nil, prefix: nil, note: nil)
|
18
|
+
@prefix = prefix || DEFAULT_PREFIX
|
19
|
+
|
20
|
+
@user = user
|
21
|
+
@password = password
|
22
|
+
@note = note
|
23
|
+
end
|
24
|
+
|
25
|
+
# Is the default prefix "deliver"
|
26
|
+
def default_prefix?
|
27
|
+
@prefix == DEFAULT_PREFIX
|
28
|
+
end
|
29
|
+
|
30
|
+
def user
|
31
|
+
if default_prefix?
|
32
|
+
@user ||= ENV["FASTLANE_USER"]
|
33
|
+
@user ||= ENV["DELIVER_USER"]
|
34
|
+
@user ||= AppfileConfig.try_fetch_value(:apple_id)
|
35
|
+
end
|
36
|
+
|
37
|
+
ask_for_login if @user.to_s.length == 0
|
38
|
+
return @user
|
39
|
+
end
|
40
|
+
|
41
|
+
def fetch_password_from_env
|
42
|
+
password = ENV["FASTLANE_PASSWORD"] || ENV["DELIVER_PASSWORD"]
|
43
|
+
return password if password.to_s.length > 0
|
44
|
+
return nil
|
45
|
+
end
|
46
|
+
|
47
|
+
def password(ask_if_missing: true)
|
48
|
+
if default_prefix?
|
49
|
+
@password ||= fetch_password_from_env
|
50
|
+
end
|
51
|
+
|
52
|
+
unless @password
|
53
|
+
item = Security::InternetPassword.find(server: server_name)
|
54
|
+
@password ||= item.password if item
|
55
|
+
end
|
56
|
+
ask_for_login while ask_if_missing && @password.to_s.length == 0
|
57
|
+
return @password
|
58
|
+
end
|
59
|
+
|
60
|
+
# Call this method to ask the user to re-enter the credentials
|
61
|
+
# @param force: if false, the user is asked before it gets deleted
|
62
|
+
# @return: Did the user decide to remove the old entry and enter a new password?
|
63
|
+
def invalid_credentials(force: false)
|
64
|
+
puts("The login credentials for '#{user}' seem to be wrong".red)
|
65
|
+
|
66
|
+
if fetch_password_from_env
|
67
|
+
puts("The password was taken from the environment variable")
|
68
|
+
puts("Please make sure it is correct")
|
69
|
+
return false
|
70
|
+
end
|
71
|
+
|
72
|
+
if force || agree("Do you want to re-enter your password? (y/n)", true)
|
73
|
+
puts("Removing Keychain entry for user '#{user}'...".yellow) if mac?
|
74
|
+
remove_from_keychain
|
75
|
+
ask_for_login
|
76
|
+
return true
|
77
|
+
end
|
78
|
+
false
|
79
|
+
end
|
80
|
+
|
81
|
+
def add_to_keychain
|
82
|
+
if options
|
83
|
+
Security::InternetPassword.add(server_name, user, password, options)
|
84
|
+
else
|
85
|
+
Security::InternetPassword.add(server_name, user, password)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def remove_from_keychain
|
90
|
+
Security::InternetPassword.delete(server: server_name)
|
91
|
+
@password = nil
|
92
|
+
end
|
93
|
+
|
94
|
+
def server_name
|
95
|
+
"#{@prefix}.#{user}"
|
96
|
+
end
|
97
|
+
|
98
|
+
# Use env variables from this method to augment internet password item with additional data.
|
99
|
+
# These variables are used by Xamarin Studio to authenticate Apple developers.
|
100
|
+
def options
|
101
|
+
hash = {}
|
102
|
+
hash[:p] = ENV["FASTLANE_PATH"] if ENV["FASTLANE_PATH"]
|
103
|
+
hash[:P] = ENV["FASTLANE_PORT"] if ENV["FASTLANE_PORT"]
|
104
|
+
hash[:r] = ENV["FASTLANE_PROTOCOL"] if ENV["FASTLANE_PROTOCOL"]
|
105
|
+
hash.empty? ? nil : hash
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def ask_for_login
|
111
|
+
if ENV["FASTLANE_HIDE_LOGIN_INFORMATION"].to_s.length == 0
|
112
|
+
puts("-------------------------------------------------------------------------------------".green)
|
113
|
+
puts("Please provide your Apple Developer Program account credentials".green)
|
114
|
+
puts("The login information you enter will be stored in your macOS Keychain".green) if mac?
|
115
|
+
if default_prefix?
|
116
|
+
# We don't want to show this message, if we ask for the application specific password
|
117
|
+
# which has a different prefix
|
118
|
+
puts("You can also pass the password using the `FASTLANE_PASSWORD` environment variable".green)
|
119
|
+
puts("See more information about it on GitHub: https://github.com/fastlane/fastlane/tree/master/credentials_manager".green) if mac?
|
120
|
+
end
|
121
|
+
puts("-------------------------------------------------------------------------------------".green)
|
122
|
+
end
|
123
|
+
|
124
|
+
if @user.to_s.length == 0
|
125
|
+
raise "Missing username, and running in non-interactive shell" if $stdout.isatty == false
|
126
|
+
prompt_text = "Username"
|
127
|
+
prompt_text += " (#{@note})" if @note
|
128
|
+
prompt_text += ": "
|
129
|
+
@user = ask(prompt_text) while @user.to_s.length == 0
|
130
|
+
# Returning here since only the username was asked for. This method will be called again when a password is needed.
|
131
|
+
return
|
132
|
+
end
|
133
|
+
|
134
|
+
while @password.to_s.length == 0
|
135
|
+
raise "Missing password for user #{@user}, and running in non-interactive shell" if $stdout.isatty == false
|
136
|
+
note = @note + " " if @note
|
137
|
+
@password = ask("Password (#{note}for #{@user}): ") { |q| q.echo = "*" }
|
138
|
+
end
|
139
|
+
|
140
|
+
return true if ENV["FASTLANE_DONT_STORE_PASSWORD"]
|
141
|
+
return true unless mac?
|
142
|
+
|
143
|
+
# Now we store this information in the keychain
|
144
|
+
if add_to_keychain
|
145
|
+
return true
|
146
|
+
else
|
147
|
+
puts("Could not store password in keychain".red)
|
148
|
+
return false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Helper.mac? - but we don't have access to the helper here
|
153
|
+
def mac?
|
154
|
+
(/darwin/ =~ RUBY_PLATFORM) != nil
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
require 'fastlane_core/globals'
|
2
|
+
|
3
|
+
module CredentialsManager
|
4
|
+
# Access the content of the app file (e.g. app identifier and Apple ID)
|
5
|
+
class AppfileConfig
|
6
|
+
def self.try_fetch_value(key)
|
7
|
+
# We need to load the file every time we call this method
|
8
|
+
# to support the `for_lane` keyword
|
9
|
+
begin
|
10
|
+
return self.new.data[key]
|
11
|
+
rescue => ex
|
12
|
+
puts(ex.to_s)
|
13
|
+
return nil
|
14
|
+
end
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.default_path
|
19
|
+
["./fastlane/Appfile", "./.fastlane/Appfile", "./Appfile"].each do |current|
|
20
|
+
return current if File.exist?(current)
|
21
|
+
end
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize(path = nil)
|
26
|
+
if path
|
27
|
+
raise "Could not find Appfile at path '#{path}'".red unless File.exist?(File.expand_path(path))
|
28
|
+
end
|
29
|
+
|
30
|
+
path ||= self.class.default_path
|
31
|
+
|
32
|
+
if path && File.exist?(path) # it might not exist, we still want to use the default values
|
33
|
+
full_path = File.expand_path(path)
|
34
|
+
Dir.chdir(File.expand_path('..', path)) do
|
35
|
+
content = File.read(full_path, encoding: "utf-8")
|
36
|
+
|
37
|
+
# From https://github.com/orta/danger/blob/master/lib/danger/danger_core/dangerfile.rb
|
38
|
+
if content.tr!('“”‘’‛', %(""'''))
|
39
|
+
puts("Your #{File.basename(path)} has had smart quotes sanitised. " \
|
40
|
+
'To avoid issues in the future, you should not use ' \
|
41
|
+
'TextEdit for editing it. If you are not using TextEdit, ' \
|
42
|
+
'you should turn off smart quotes in your editor of choice.'.red)
|
43
|
+
end
|
44
|
+
|
45
|
+
# rubocop:disable Security/Eval
|
46
|
+
eval(content)
|
47
|
+
# rubocop:enable Security/Eval
|
48
|
+
|
49
|
+
print_debug_information(path: full_path) if FastlaneCore::Globals.verbose?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
fallback_to_default_values
|
54
|
+
end
|
55
|
+
|
56
|
+
def print_debug_information(path: nil)
|
57
|
+
self.class.already_printed_debug_information ||= {}
|
58
|
+
return if self.class.already_printed_debug_information[self.data]
|
59
|
+
# self.class.already_printed_debug_information is a hash, we use to detect if we already printed this data
|
60
|
+
# this is necessary, as on the course of a fastlane run, the values might change, e.g. when using
|
61
|
+
# the `for_lane` keyword.
|
62
|
+
|
63
|
+
puts("Successfully loaded Appfile at path '#{path}'".yellow)
|
64
|
+
|
65
|
+
self.data.each do |key, value|
|
66
|
+
puts("- #{key.to_s.cyan}: '#{value.to_s.green}'")
|
67
|
+
end
|
68
|
+
puts("-------")
|
69
|
+
|
70
|
+
self.class.already_printed_debug_information[self.data] = true
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.already_printed_debug_information
|
74
|
+
@already_printed_debug_information ||= {}
|
75
|
+
end
|
76
|
+
|
77
|
+
def fallback_to_default_values
|
78
|
+
data[:apple_id] ||= ENV["FASTLANE_USER"] || ENV["DELIVER_USER"] || ENV["DELIVER_USERNAME"]
|
79
|
+
end
|
80
|
+
|
81
|
+
def data
|
82
|
+
@data ||= {}
|
83
|
+
end
|
84
|
+
|
85
|
+
# Setters
|
86
|
+
|
87
|
+
# iOS
|
88
|
+
def app_identifier(*args, &block)
|
89
|
+
setter(:app_identifier, *args, &block)
|
90
|
+
end
|
91
|
+
|
92
|
+
def apple_id(*args, &block)
|
93
|
+
setter(:apple_id, *args, &block)
|
94
|
+
end
|
95
|
+
|
96
|
+
def apple_dev_portal_id(*args, &block)
|
97
|
+
setter(:apple_dev_portal_id, *args, &block)
|
98
|
+
end
|
99
|
+
|
100
|
+
def itunes_connect_id(*args, &block)
|
101
|
+
setter(:itunes_connect_id, *args, &block)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Developer Portal
|
105
|
+
def team_id(*args, &block)
|
106
|
+
setter(:team_id, *args, &block)
|
107
|
+
end
|
108
|
+
|
109
|
+
def team_name(*args, &block)
|
110
|
+
setter(:team_name, *args, &block)
|
111
|
+
end
|
112
|
+
|
113
|
+
# App Store Connect
|
114
|
+
def itc_team_id(*args, &block)
|
115
|
+
setter(:itc_team_id, *args, &block)
|
116
|
+
end
|
117
|
+
|
118
|
+
def itc_team_name(*args, &block)
|
119
|
+
setter(:itc_team_name, *args, &block)
|
120
|
+
end
|
121
|
+
|
122
|
+
# Android
|
123
|
+
def json_key_file(*args, &block)
|
124
|
+
setter(:json_key_file, *args, &block)
|
125
|
+
end
|
126
|
+
|
127
|
+
def json_key_data_raw(*args, &block)
|
128
|
+
setter(:json_key_data_raw, *args, &block)
|
129
|
+
end
|
130
|
+
|
131
|
+
def issuer(*args, &block)
|
132
|
+
puts("Appfile: DEPRECATED issuer: use json_key_file instead".red)
|
133
|
+
setter(:issuer, *args, &block)
|
134
|
+
end
|
135
|
+
|
136
|
+
def package_name(*args, &block)
|
137
|
+
setter(:package_name, *args, &block)
|
138
|
+
end
|
139
|
+
|
140
|
+
def keyfile(*args, &block)
|
141
|
+
puts("Appfile: DEPRECATED keyfile: use json_key_file instead".red)
|
142
|
+
setter(:keyfile, *args, &block)
|
143
|
+
end
|
144
|
+
|
145
|
+
# Override Appfile configuration for a specific lane.
|
146
|
+
#
|
147
|
+
# lane_name - Symbol representing a lane name. (Can be either :name, 'name' or 'platform name')
|
148
|
+
# block - Block to execute to override configuration values.
|
149
|
+
#
|
150
|
+
# Discussion If received lane name does not match the lane name available as environment variable, no changes will
|
151
|
+
# be applied.
|
152
|
+
def for_lane(lane_name)
|
153
|
+
if lane_name.to_s.split(" ").count > 1
|
154
|
+
# That's the legacy syntax 'platform name'
|
155
|
+
puts("You use deprecated syntax '#{lane_name}' in your Appfile.".yellow)
|
156
|
+
puts("Please follow the Appfile guide: https://docs.fastlane.tools/advanced/#appfile".yellow)
|
157
|
+
platform, lane_name = lane_name.split(" ")
|
158
|
+
|
159
|
+
return unless platform == ENV["FASTLANE_PLATFORM_NAME"]
|
160
|
+
# the lane name will be verified below
|
161
|
+
end
|
162
|
+
|
163
|
+
if ENV["FASTLANE_LANE_NAME"] == lane_name.to_s
|
164
|
+
yield
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# Override Appfile configuration for a specific platform.
|
169
|
+
#
|
170
|
+
# platform_name - Symbol representing a platform name.
|
171
|
+
# block - Block to execute to override configuration values.
|
172
|
+
#
|
173
|
+
# Discussion If received platform name does not match the platform name available as environment variable, no changes will
|
174
|
+
# be applied.
|
175
|
+
def for_platform(platform_name)
|
176
|
+
if ENV["FASTLANE_PLATFORM_NAME"] == platform_name.to_s
|
177
|
+
yield
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
private
|
182
|
+
|
183
|
+
def setter(key, *args)
|
184
|
+
if block_given?
|
185
|
+
value = yield
|
186
|
+
else
|
187
|
+
value = args.shift
|
188
|
+
end
|
189
|
+
data[key] = value if value && value.to_s.length > 0
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|