fastlane_hotfix 2.165.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/LICENSE +21 -0
- data/README.md +208 -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 +60 -0
- data/cert/lib/cert/module.rb +16 -0
- data/cert/lib/cert/options.rb +132 -0
- data/cert/lib/cert/runner.rb +239 -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 +196 -0
- data/credentials_manager/lib/credentials_manager/cli.rb +69 -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 +354 -0
- data/deliver/lib/deliver/app_screenshot_iterator.rb +95 -0
- data/deliver/lib/deliver/commands_generator.rb +190 -0
- data/deliver/lib/deliver/detect_values.rb +102 -0
- data/deliver/lib/deliver/download_screenshots.rb +76 -0
- data/deliver/lib/deliver/generate_summary.rb +13 -0
- data/deliver/lib/deliver/html_generator.rb +78 -0
- data/deliver/lib/deliver/languages.rb +7 -0
- data/deliver/lib/deliver/loader.rb +55 -0
- data/deliver/lib/deliver/module.rb +18 -0
- data/deliver/lib/deliver/options.rb +465 -0
- data/deliver/lib/deliver/queue_worker.rb +49 -0
- data/deliver/lib/deliver/runner.rb +233 -0
- data/deliver/lib/deliver/setup.rb +199 -0
- data/deliver/lib/deliver/submit_for_review.rb +214 -0
- data/deliver/lib/deliver/upload_metadata.rb +688 -0
- data/deliver/lib/deliver/upload_price_tier.rb +40 -0
- data/deliver/lib/deliver/upload_screenshots.rb +333 -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 +53 -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 +5 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +185 -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 +249 -0
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +134 -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 +226 -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 +165 -0
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +47 -0
- data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -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 +230 -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 +54 -0
- data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +72 -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 +170 -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 +211 -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 +177 -0
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +265 -0
- data/fastlane/lib/fastlane/actions/danger.rb +131 -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_app.md +245 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +333 -0
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +371 -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 +349 -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 +573 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +725 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +203 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +250 -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 +369 -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_env_vars.rb +58 -0
- data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +69 -0
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +92 -0
- data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +135 -0
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +125 -0
- data/fastlane/lib/fastlane/actions/environment_variable.rb +77 -0
- data/fastlane/lib/fastlane/actions/erb.rb +96 -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 +64 -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 +77 -0
- data/fastlane/lib/fastlane/actions/get_github_release.rb +166 -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 +101 -0
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +87 -0
- data/fastlane/lib/fastlane/actions/get_version_number.rb +200 -0
- data/fastlane/lib/fastlane/actions/git_add.rb +93 -0
- data/fastlane/lib/fastlane/actions/git_branch.rb +61 -0
- data/fastlane/lib/fastlane/actions/git_commit.rb +80 -0
- data/fastlane/lib/fastlane/actions/git_pull.rb +64 -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_release_names.rb +74 -0
- data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +77 -0
- data/fastlane/lib/fastlane/actions/gradle.rb +329 -0
- data/fastlane/lib/fastlane/actions/gym.rb +10 -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 +83 -0
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +117 -0
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +180 -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 +60 -0
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +155 -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/notarize.rb +193 -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 +186 -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 +189 -0
- data/fastlane/lib/fastlane/actions/pod_push.rb +173 -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 +151 -0
- data/fastlane/lib/fastlane/actions/register_devices.rb +214 -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 +114 -0
- data/fastlane/lib/fastlane/actions/s3.rb +174 -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 +204 -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 +132 -0
- data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +58 -0
- data/fastlane/lib/fastlane/actions/setup_jenkins.rb +202 -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 +329 -0
- data/fastlane/lib/fastlane/actions/snapshot.rb +14 -0
- data/fastlane/lib/fastlane/actions/sonar.rb +177 -0
- data/fastlane/lib/fastlane/actions/spaceship_logs.rb +135 -0
- data/fastlane/lib/fastlane/actions/spaceship_stats.rb +73 -0
- data/fastlane/lib/fastlane/actions/splunkmint.rb +156 -0
- data/fastlane/lib/fastlane/actions/spm.rb +138 -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 +240 -0
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +109 -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 +285 -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_code_signing_settings.rb +203 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +137 -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_keychain_access_groups.rb +94 -0
- data/fastlane/lib/fastlane/actions/update_plist.rb +115 -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 +231 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +165 -0
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +67 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +80 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +119 -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 +159 -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 +68 -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 +207 -0
- data/fastlane/lib/fastlane/command_line_handler.rb +49 -0
- data/fastlane/lib/fastlane/commands_generator.rb +369 -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 +303 -0
- data/fastlane/lib/fastlane/erb_template_helper.rb +30 -0
- data/fastlane/lib/fastlane/fast_file.rb +439 -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 +66 -0
- data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +157 -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 +137 -0
- data/fastlane/lib/fastlane/helper/gradle_helper.rb +62 -0
- data/fastlane/lib/fastlane/helper/lane_helper.rb +13 -0
- data/fastlane/lib/fastlane/helper/podspec_helper.rb +75 -0
- data/fastlane/lib/fastlane/helper/s3_client_helper.rb +78 -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 +130 -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 +399 -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/.github/workflows/test.yml +29 -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 +188 -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 +378 -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 +238 -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 +477 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +419 -0
- data/fastlane/lib/fastlane/swift_lane_manager.rb +296 -0
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +210 -0
- data/fastlane/lib/fastlane/tools.rb +33 -0
- data/fastlane/lib/fastlane/version.rb +6 -0
- data/fastlane/swift/Actions.swift +16 -0
- data/fastlane/swift/Appfile.swift +15 -0
- data/fastlane/swift/ArgumentProcessor.swift +89 -0
- data/fastlane/swift/ControlCommand.swift +74 -0
- data/fastlane/swift/Deliverfile.swift +20 -0
- data/fastlane/swift/DeliverfileProtocol.swift +259 -0
- data/fastlane/swift/Fastfile.swift +16 -0
- data/fastlane/swift/Fastlane.swift +9402 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +434 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +97 -0
- data/fastlane/swift/FastlaneSwiftRunner/README.txt +10 -0
- data/fastlane/swift/Gymfile.swift +20 -0
- data/fastlane/swift/GymfileProtocol.swift +187 -0
- data/fastlane/swift/LaneFileProtocol.swift +149 -0
- data/fastlane/swift/MainProcess.swift +77 -0
- data/fastlane/swift/Matchfile.swift +20 -0
- data/fastlane/swift/MatchfileProtocol.swift +187 -0
- data/fastlane/swift/Plugins.swift +16 -0
- data/fastlane/swift/Precheckfile.swift +20 -0
- data/fastlane/swift/PrecheckfileProtocol.swift +51 -0
- data/fastlane/swift/RubyCommand.swift +157 -0
- data/fastlane/swift/RubyCommandable.swift +43 -0
- data/fastlane/swift/Runner.swift +275 -0
- data/fastlane/swift/RunnerArgument.swift +20 -0
- data/fastlane/swift/Scanfile.swift +20 -0
- data/fastlane/swift/ScanfileProtocol.swift +263 -0
- data/fastlane/swift/Screengrabfile.swift +20 -0
- data/fastlane/swift/ScreengrabfileProtocol.swift +99 -0
- data/fastlane/swift/Snapshotfile.swift +20 -0
- data/fastlane/swift/SnapshotfileProtocol.swift +187 -0
- data/fastlane/swift/SocketClient.swift +327 -0
- data/fastlane/swift/SocketClientDelegateProtocol.swift +21 -0
- data/fastlane/swift/SocketResponse.swift +82 -0
- data/fastlane/swift/formatting/Brewfile +1 -0
- data/fastlane/swift/formatting/Brewfile.lock.json +47 -0
- data/fastlane/swift/formatting/Rakefile +18 -0
- data/fastlane/swift/main.swift +47 -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 +70 -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 +96 -0
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +144 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +100 -0
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +103 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +321 -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 +374 -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 +437 -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 +595 -0
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +120 -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 +51 -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 +509 -0
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +124 -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 +159 -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 +140 -0
- data/frameit/lib/frameit/config_parser.rb +136 -0
- data/frameit/lib/frameit/dependency_checker.rb +22 -0
- data/frameit/lib/frameit/device.rb +90 -0
- data/frameit/lib/frameit/device_types.rb +144 -0
- data/frameit/lib/frameit/editor.rb +560 -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 +28 -0
- data/frameit/lib/frameit/options.rb +112 -0
- data/frameit/lib/frameit/runner.rb +97 -0
- data/frameit/lib/frameit/screenshot.rb +134 -0
- data/frameit/lib/frameit/strings_parser.rb +46 -0
- data/frameit/lib/frameit/template_finder.rb +45 -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 +210 -0
- data/gym/lib/gym/commands_generator.rb +78 -0
- data/gym/lib/gym/detect_values.rb +206 -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 +147 -0
- data/gym/lib/gym/generators/package_command_generator.rb +68 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +232 -0
- data/gym/lib/gym/manager.rb +22 -0
- data/gym/lib/gym/module.rb +74 -0
- data/gym/lib/gym/options.rb +286 -0
- data/gym/lib/gym/runner.rb +365 -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 +59 -0
- data/match/lib/match.rb +14 -0
- data/match/lib/match/change_password.rb +53 -0
- data/match/lib/match/commands_generator.rb +190 -0
- data/match/lib/match/encryption.rb +49 -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 +122 -0
- data/match/lib/match/importer.rb +157 -0
- data/match/lib/match/migrate.rb +109 -0
- data/match/lib/match/module.rb +32 -0
- data/match/lib/match/nuke.rb +350 -0
- data/match/lib/match/options.rb +315 -0
- data/match/lib/match/runner.rb +369 -0
- data/match/lib/match/setup.rb +40 -0
- data/match/lib/match/spaceship_ensure.rb +97 -0
- data/match/lib/match/storage.rb +46 -0
- data/match/lib/match/storage/git_storage.rb +250 -0
- data/match/lib/match/storage/google_cloud_storage.rb +382 -0
- data/match/lib/match/storage/interface.rb +119 -0
- data/match/lib/match/storage/s3_storage.rb +205 -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 +47 -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 +546 -0
- data/pilot/lib/pilot/commands_generator.rb +174 -0
- data/pilot/lib/pilot/features.rb +0 -0
- data/pilot/lib/pilot/manager.rb +90 -0
- data/pilot/lib/pilot/module.rb +11 -0
- data/pilot/lib/pilot/options.rb +303 -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 +104 -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 +265 -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 +197 -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 +236 -0
- data/produce/lib/produce/developer_center.rb +143 -0
- data/produce/lib/produce/group.rb +90 -0
- data/produce/lib/produce/itunes_connect.rb +139 -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 +184 -0
- data/produce/lib/produce/service.rb +319 -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 +224 -0
- data/scan/lib/scan/error_handler.rb +57 -0
- data/scan/lib/scan/manager.rb +38 -0
- data/scan/lib/scan/module.rb +32 -0
- data/scan/lib/scan/options.rb +445 -0
- data/scan/lib/scan/runner.rb +197 -0
- data/scan/lib/scan/slack_poster.rb +60 -0
- data/scan/lib/scan/test_command_generator.rb +174 -0
- data/scan/lib/scan/test_result_parser.rb +33 -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 +26 -0
- data/screengrab/lib/screengrab/options.rb +148 -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 +449 -0
- data/screengrab/lib/screengrab/setup.rb +24 -0
- data/sigh/README.md +17 -0
- data/sigh/lib/assets/resign.sh +909 -0
- data/sigh/lib/sigh.rb +4 -0
- data/sigh/lib/sigh/commands_generator.rb +154 -0
- data/sigh/lib/sigh/download_all.rb +112 -0
- data/sigh/lib/sigh/local_manage.rb +145 -0
- data/sigh/lib/sigh/manager.rb +47 -0
- data/sigh/lib/sigh/module.rb +42 -0
- data/sigh/lib/sigh/options.rb +187 -0
- data/sigh/lib/sigh/repair.rb +34 -0
- data/sigh/lib/sigh/resign.rb +220 -0
- data/sigh/lib/sigh/runner.rb +402 -0
- data/snapshot/README.md +17 -0
- data/snapshot/lib/assets/SnapfileTemplate +37 -0
- data/snapshot/lib/assets/SnapfileTemplate.swift +41 -0
- data/snapshot/lib/assets/SnapshotHelper.swift +301 -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 +86 -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_shared_pasteboard.rb +16 -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 +290 -0
- data/snapshot/lib/snapshot/page.html.erb +285 -0
- data/snapshot/lib/snapshot/reports_generator.rb +139 -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 +62 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +219 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +200 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_xcode_8.rb +113 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +108 -0
- data/snapshot/lib/snapshot/test_command_generator_base.rb +128 -0
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +70 -0
- data/snapshot/lib/snapshot/update.rb +38 -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 +30 -0
- data/spaceship/lib/spaceship/base.rb +310 -0
- data/spaceship/lib/spaceship/client.rb +913 -0
- data/spaceship/lib/spaceship/commands_generator.rb +53 -0
- data/spaceship/lib/spaceship/connect_api.rb +116 -0
- data/spaceship/lib/spaceship/connect_api/api_client.rb +279 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +216 -0
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +99 -0
- data/spaceship/lib/spaceship/connect_api/model.rb +172 -0
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +114 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +388 -0
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +95 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +39 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +131 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +100 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_point.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +187 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +153 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +217 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +85 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +57 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -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_feedback.rb +75 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_screenshot.rb +18 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +57 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb +44 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +172 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +61 -0
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +58 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +102 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +58 -0
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/pre_release_version.rb +20 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +97 -0
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +64 -0
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/models/user.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +92 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +143 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +102 -0
- data/spaceship/lib/spaceship/connect_api/testflight/client.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +391 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +102 -0
- data/spaceship/lib/spaceship/connect_api/token_refresh_middleware.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/tunes/client.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +1045 -0
- data/spaceship/lib/spaceship/connect_api/users/client.rb +24 -0
- data/spaceship/lib/spaceship/connect_api/users/users.rb +80 -0
- data/spaceship/lib/spaceship/du/du_client.rb +138 -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 +82 -0
- data/spaceship/lib/spaceship/globals.rb +12 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +20 -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 +201 -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 +365 -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 +862 -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/stats_middleware.rb +65 -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 +242 -0
- data/spaceship/lib/spaceship/test_flight/build_trains.rb +50 -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 +970 -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 +453 -0
- data/spaceship/lib/spaceship/tunes/availability.rb +164 -0
- data/spaceship/lib/spaceship/tunes/b2b_organization.rb +50 -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 +184 -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 +168 -0
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +264 -0
- data/spaceship/lib/spaceship/tunes/iap_families.rb +68 -0
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +90 -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 +56 -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 +1644 -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 +346 -0
- data/spaceship/lib/spaceship/ui.rb +27 -0
- data/supply/README.md +17 -0
- data/supply/lib/supply.rb +53 -0
- data/supply/lib/supply/apk_listing.rb +14 -0
- data/supply/lib/supply/client.rb +551 -0
- data/supply/lib/supply/commands_generator.rb +67 -0
- data/supply/lib/supply/languages.rb +88 -0
- data/supply/lib/supply/listing.rb +32 -0
- data/supply/lib/supply/options.rb +324 -0
- data/supply/lib/supply/reader.rb +41 -0
- data/supply/lib/supply/release_listing.rb +18 -0
- data/supply/lib/supply/setup.rb +122 -0
- data/supply/lib/supply/uploader.rb +480 -0
- metadata +1832 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
# See: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html
|
4
|
+
#
|
5
|
+
# DESCRIPTION
|
6
|
+
# xcode-select controls the location of the developer directory used by xcrun(1), xcodebuild(1), cc(1),
|
7
|
+
# and other Xcode and BSD development tools. This also controls the locations that are searched for by
|
8
|
+
# man(1) for developer tool manpages.
|
9
|
+
#
|
10
|
+
# DEVELOPER_DIR
|
11
|
+
# Overrides the active developer directory. When DEVELOPER_DIR is set, its value will be used
|
12
|
+
# instead of the system-wide active developer directory.
|
13
|
+
#
|
14
|
+
# Note that for historical reason, the developer directory is considered to be the Developer content
|
15
|
+
# directory inside the Xcode application (for example /Applications/Xcode.app/Contents/Developer).
|
16
|
+
# You can set the environment variable to either the actual Developer contents directory, or the
|
17
|
+
# Xcode application directory -- the xcode-select provided shims will automatically convert the
|
18
|
+
# environment variable into the full Developer content path.
|
19
|
+
#
|
20
|
+
class XcodeSelectAction < Action
|
21
|
+
def self.run(params)
|
22
|
+
params = nil unless params.kind_of?(Array)
|
23
|
+
xcode_path = (params || []).first
|
24
|
+
|
25
|
+
# Verify that a param was passed in
|
26
|
+
UI.user_error!("Path to Xcode application required (e.g. `xcode_select(\"/Applications/Xcode.app\")`)") unless xcode_path.to_s.length > 0
|
27
|
+
|
28
|
+
# Verify that a path to a directory was passed in
|
29
|
+
UI.user_error!("Path '#{xcode_path}' doesn't exist") unless Dir.exist?(xcode_path)
|
30
|
+
|
31
|
+
UI.message("Setting Xcode version to #{xcode_path} for all build steps")
|
32
|
+
|
33
|
+
ENV["DEVELOPER_DIR"] = File.join(xcode_path, "/Contents/Developer")
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.description
|
37
|
+
"Change the xcode-path to use. Useful for beta versions of Xcode"
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.details
|
41
|
+
[
|
42
|
+
"Select and build with the Xcode installed at the provided path.",
|
43
|
+
"Use the `xcversion` action if you want to select an Xcode:",
|
44
|
+
"- Based on a version specifier or",
|
45
|
+
"- You don't have known, stable paths, as may happen in a CI environment."
|
46
|
+
].join("\n")
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.author
|
50
|
+
"dtrenz"
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.is_supported?(platform)
|
54
|
+
[:ios, :mac].include?(platform)
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.example_code
|
58
|
+
[
|
59
|
+
'xcode_select("/Applications/Xcode-8.3.2.app")'
|
60
|
+
]
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.category
|
64
|
+
:building
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,312 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
XCODE_SERVER_GET_ASSETS_PATH = :XCODE_SERVER_GET_ASSETS_PATH
|
5
|
+
XCODE_SERVER_GET_ASSETS_ARCHIVE_PATH = :XCODE_SERVER_GET_ASSETS_ARCHIVE_PATH
|
6
|
+
end
|
7
|
+
|
8
|
+
class XcodeServerGetAssetsAction < Action
|
9
|
+
require 'excon'
|
10
|
+
require 'json'
|
11
|
+
require 'fileutils'
|
12
|
+
|
13
|
+
def self.run(params)
|
14
|
+
host = params[:host]
|
15
|
+
bot_name = params[:bot_name]
|
16
|
+
integration_number_override = params[:integration_number]
|
17
|
+
target_folder = params[:target_folder]
|
18
|
+
keep_all_assets = params[:keep_all_assets]
|
19
|
+
username = params[:username]
|
20
|
+
password = params[:password]
|
21
|
+
trust_self_signed_certs = params[:trust_self_signed_certs]
|
22
|
+
|
23
|
+
# setup (not)trusting self signed certificates.
|
24
|
+
# it's normal to have a self signed certificate on your Xcode Server
|
25
|
+
Excon.defaults[:ssl_verify_peer] = !trust_self_signed_certs # for self-signed certificates
|
26
|
+
|
27
|
+
# create Xcode Server config
|
28
|
+
xcs = XcodeServer.new(host, username, password)
|
29
|
+
bots = xcs.fetch_all_bots
|
30
|
+
|
31
|
+
UI.important("Fetched #{bots.count} Bots from Xcode Server at #{host}.")
|
32
|
+
|
33
|
+
# pull out names
|
34
|
+
bot_names = bots.map { |bot| bot['name'] }
|
35
|
+
|
36
|
+
# match the bot name with a found bot, otherwise fail
|
37
|
+
found_bots = bots.select { |bot| bot['name'] == bot_name }
|
38
|
+
UI.user_error!("Failed to find a Bot with name #{bot_name} on server #{host}, only available Bots: #{bot_names}") if found_bots.count == 0
|
39
|
+
|
40
|
+
bot = found_bots[0]
|
41
|
+
|
42
|
+
UI.success("Found Bot with name #{bot_name} with id #{bot['_id']}.")
|
43
|
+
|
44
|
+
# we have our bot, get finished integrations, sorted from newest to oldest
|
45
|
+
integrations = xcs.fetch_integrations(bot['_id']).select { |i| i['currentStep'] == 'completed' }
|
46
|
+
UI.user_error!("Failed to find any completed integration for Bot \"#{bot_name}\"") if (integrations || []).count == 0
|
47
|
+
|
48
|
+
# if no integration number is specified, pick the newest one (this is sorted from newest to oldest)
|
49
|
+
if integration_number_override
|
50
|
+
integration = integrations.find { |i| i['number'] == integration_number_override }
|
51
|
+
UI.user_error!("Specified integration number #{integration_number_override} does not exist.") unless integration
|
52
|
+
else
|
53
|
+
integration = integrations.first
|
54
|
+
end
|
55
|
+
|
56
|
+
# consider: only taking the last successful one? or allow failing tests? warnings?
|
57
|
+
|
58
|
+
UI.important("Using integration #{integration['number']}.")
|
59
|
+
|
60
|
+
# fetch assets for this integration
|
61
|
+
assets_path = xcs.fetch_assets(integration['_id'], target_folder, self)
|
62
|
+
UI.user_error!("Failed to fetch assets for integration #{integration['number']}.") unless assets_path
|
63
|
+
|
64
|
+
asset_entries = Dir.entries(assets_path).map { |i| File.join(assets_path, i) }
|
65
|
+
|
66
|
+
UI.success("Successfully downloaded #{asset_entries.count} assets to file #{assets_path}!")
|
67
|
+
|
68
|
+
# now find the archive and unzip it
|
69
|
+
zipped_archive_path = asset_entries.find { |i| i.end_with?('xcarchive.zip') }
|
70
|
+
|
71
|
+
if zipped_archive_path
|
72
|
+
|
73
|
+
UI.important("Found an archive in the assets folder...")
|
74
|
+
|
75
|
+
archive_file_path = File.basename(zipped_archive_path, File.extname(zipped_archive_path))
|
76
|
+
archive_dir_path = File.dirname(zipped_archive_path)
|
77
|
+
archive_path = File.join(archive_dir_path, archive_file_path)
|
78
|
+
if File.exist?(archive_path)
|
79
|
+
# we already have the archive, skip
|
80
|
+
UI.important("Archive #{archive_path} already exists, not unzipping again...")
|
81
|
+
else
|
82
|
+
# unzip the archive
|
83
|
+
sh("unzip -q \"#{zipped_archive_path}\" -d \"#{archive_dir_path}\"")
|
84
|
+
end
|
85
|
+
|
86
|
+
# reload asset entries to also contain the xcarchive file
|
87
|
+
asset_entries = Dir.entries(assets_path).map { |i| File.join(assets_path, i) }
|
88
|
+
|
89
|
+
# optionally delete everything except for the archive
|
90
|
+
unless keep_all_assets
|
91
|
+
files_to_delete = asset_entries.select do |i|
|
92
|
+
File.extname(i) != '.xcarchive' && ![".", ".."].include?(File.basename(i))
|
93
|
+
end
|
94
|
+
|
95
|
+
files_to_delete.each do |i|
|
96
|
+
FileUtils.rm_rf(i)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
Actions.lane_context[SharedValues::XCODE_SERVER_GET_ASSETS_ARCHIVE_PATH] = archive_path
|
101
|
+
end
|
102
|
+
|
103
|
+
Actions.lane_context[SharedValues::XCODE_SERVER_GET_ASSETS_PATH] = assets_path
|
104
|
+
|
105
|
+
return assets_path
|
106
|
+
end
|
107
|
+
|
108
|
+
class XcodeServer
|
109
|
+
def initialize(host, username, password)
|
110
|
+
@host = host.start_with?('https://') ? host : "https://#{host}"
|
111
|
+
@username = username
|
112
|
+
@password = password
|
113
|
+
end
|
114
|
+
|
115
|
+
def fetch_all_bots
|
116
|
+
response = get_endpoint('/bots')
|
117
|
+
UI.user_error!("You are unauthorized to access data on #{@host}, please check that you're passing in a correct username and password.") if response.status == 401
|
118
|
+
UI.user_error!("Failed to fetch Bots from Xcode Server at #{@host}, response: #{response.status}: #{response.body}.") if response.status != 200
|
119
|
+
JSON.parse(response.body)['results']
|
120
|
+
end
|
121
|
+
|
122
|
+
def fetch_integrations(bot_id)
|
123
|
+
response = get_endpoint("/bots/#{bot_id}/integrations?last=10")
|
124
|
+
UI.user_error!("Failed to fetch Integrations for Bot #{bot_id} from Xcode Server at #{@host}, response: #{response.status}: #{response.body}") if response.status != 200
|
125
|
+
JSON.parse(response.body)['results']
|
126
|
+
end
|
127
|
+
|
128
|
+
def fetch_assets(integration_id, target_folder, action)
|
129
|
+
# create a temp folder and a file, stream the download into it
|
130
|
+
Dir.mktmpdir do |dir|
|
131
|
+
temp_file = File.join(dir, "tmp_download.#{rand(1_000_000)}")
|
132
|
+
f = open(temp_file, 'w')
|
133
|
+
streamer = lambda do |chunk, remaining_bytes, total_bytes|
|
134
|
+
if remaining_bytes && total_bytes
|
135
|
+
UI.important("Downloading: #{100 - (100 * remaining_bytes.to_f / total_bytes.to_f).to_i}%")
|
136
|
+
else
|
137
|
+
UI.error(chunk.to_s)
|
138
|
+
end
|
139
|
+
f.write(chunk)
|
140
|
+
end
|
141
|
+
|
142
|
+
response = self.get_endpoint("/integrations/#{integration_id}/assets", streamer)
|
143
|
+
f.close
|
144
|
+
|
145
|
+
UI.user_error!("Integration doesn't have any assets (it probably never ran).") if response.status == 500
|
146
|
+
UI.user_error!("Failed to fetch Assets zip for Integration #{integration_id} from Xcode Server at #{@host}, response: #{response.status}: #{response.body}") if response.status != 200
|
147
|
+
|
148
|
+
# unzip it, it's a .tar.gz file
|
149
|
+
out_folder = File.join(dir, "out_#{rand(1_000_000)}")
|
150
|
+
FileUtils.mkdir_p(out_folder)
|
151
|
+
|
152
|
+
action.sh("cd \"#{out_folder}\"; cat \"#{temp_file}\" | gzip -d | tar -x")
|
153
|
+
|
154
|
+
# then pull the real name from headers
|
155
|
+
asset_filename = response.headers['Content-Disposition'].split(';')[1].split('=')[1].delete('"')
|
156
|
+
asset_foldername = asset_filename.split('.')[0]
|
157
|
+
|
158
|
+
# rename the folder in out_folder to asset_foldername
|
159
|
+
found_folder = Dir.entries(out_folder).select { |item| item != '.' && item != '..' }[0]
|
160
|
+
|
161
|
+
UI.user_error!("Internal error, couldn't find unzipped folder") if found_folder.nil?
|
162
|
+
|
163
|
+
unzipped_folder_temp_name = File.join(out_folder, found_folder)
|
164
|
+
unzipped_folder = File.join(out_folder, asset_foldername)
|
165
|
+
|
166
|
+
# rename to destination name
|
167
|
+
FileUtils.mv(unzipped_folder_temp_name, unzipped_folder)
|
168
|
+
|
169
|
+
target_folder = File.absolute_path(target_folder)
|
170
|
+
|
171
|
+
# create target folder if it doesn't exist
|
172
|
+
FileUtils.mkdir_p(target_folder)
|
173
|
+
|
174
|
+
# and move+rename it to the destination place
|
175
|
+
FileUtils.cp_r(unzipped_folder, target_folder)
|
176
|
+
out = File.join(target_folder, asset_foldername)
|
177
|
+
return out
|
178
|
+
end
|
179
|
+
return nil
|
180
|
+
end
|
181
|
+
|
182
|
+
def headers
|
183
|
+
require 'base64'
|
184
|
+
headers = {
|
185
|
+
'User-Agent' => 'fastlane-xcode_server_get_assets', # XCS wants user agent. for some API calls. not for others. sigh.
|
186
|
+
'X-XCSAPIVersion' => 1 # XCS API version with this API, Xcode needs this otherwise it explodes in a 500 error fire. Currently Xcode 7 Beta 5 is on Version 5.
|
187
|
+
}
|
188
|
+
|
189
|
+
if @username && @password
|
190
|
+
userpass = "#{@username}:#{@password}"
|
191
|
+
headers['Authorization'] = "Basic #{Base64.strict_encode64(userpass)}"
|
192
|
+
end
|
193
|
+
|
194
|
+
return headers
|
195
|
+
end
|
196
|
+
|
197
|
+
def get_endpoint(endpoint, response_block = nil)
|
198
|
+
url = url_for_endpoint(endpoint)
|
199
|
+
headers = self.headers || {}
|
200
|
+
|
201
|
+
if response_block
|
202
|
+
response = Excon.get(url, response_block: response_block, headers: headers)
|
203
|
+
else
|
204
|
+
response = Excon.get(url, headers: headers)
|
205
|
+
end
|
206
|
+
|
207
|
+
return response
|
208
|
+
end
|
209
|
+
|
210
|
+
private
|
211
|
+
|
212
|
+
def url_for_endpoint(endpoint)
|
213
|
+
"#{@host}:20343/api#{endpoint}"
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
#####################################################
|
218
|
+
# @!group Documentation
|
219
|
+
#####################################################
|
220
|
+
|
221
|
+
def self.description
|
222
|
+
"Downloads Xcode Bot assets like the `.xcarchive` and logs"
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.details
|
226
|
+
[
|
227
|
+
"This action downloads assets from your Xcode Server Bot (works with Xcode Server using Xcode 6 and 7. By default, this action downloads all assets, unzips them and deletes everything except for the `.xcarchive`.",
|
228
|
+
"If you'd like to keep all downloaded assets, pass `keep_all_assets: true`.",
|
229
|
+
"This action returns the path to the downloaded assets folder and puts into shared values the paths to the asset folder and to the `.xcarchive` inside it."
|
230
|
+
].join("\n")
|
231
|
+
end
|
232
|
+
|
233
|
+
def self.available_options
|
234
|
+
[
|
235
|
+
FastlaneCore::ConfigItem.new(key: :host,
|
236
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_HOST",
|
237
|
+
description: "IP Address/Hostname of Xcode Server",
|
238
|
+
optional: false),
|
239
|
+
FastlaneCore::ConfigItem.new(key: :bot_name,
|
240
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_BOT_NAME",
|
241
|
+
description: "Name of the Bot to pull assets from",
|
242
|
+
optional: false),
|
243
|
+
FastlaneCore::ConfigItem.new(key: :integration_number,
|
244
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_INTEGRATION_NUMBER",
|
245
|
+
description: "Optionally you can override which integration's assets should be downloaded. If not provided, the latest integration is used",
|
246
|
+
is_string: false,
|
247
|
+
optional: true),
|
248
|
+
FastlaneCore::ConfigItem.new(key: :username,
|
249
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_USERNAME",
|
250
|
+
description: "Username for your Xcode Server",
|
251
|
+
optional: true,
|
252
|
+
default_value: ""),
|
253
|
+
FastlaneCore::ConfigItem.new(key: :password,
|
254
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_PASSWORD",
|
255
|
+
description: "Password for your Xcode Server",
|
256
|
+
sensitive: true,
|
257
|
+
optional: true,
|
258
|
+
default_value: ""),
|
259
|
+
FastlaneCore::ConfigItem.new(key: :target_folder,
|
260
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_TARGET_FOLDER",
|
261
|
+
description: "Relative path to a folder into which to download assets",
|
262
|
+
optional: true,
|
263
|
+
default_value: './xcs_assets'),
|
264
|
+
FastlaneCore::ConfigItem.new(key: :keep_all_assets,
|
265
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_KEEP_ALL_ASSETS",
|
266
|
+
description: "Whether to keep all assets or let the script delete everything except for the .xcarchive",
|
267
|
+
optional: true,
|
268
|
+
is_string: false,
|
269
|
+
default_value: false),
|
270
|
+
FastlaneCore::ConfigItem.new(key: :trust_self_signed_certs,
|
271
|
+
env_name: "FL_XCODE_SERVER_GET_ASSETS_TRUST_SELF_SIGNED_CERTS",
|
272
|
+
description: "Whether to trust self-signed certs on your Xcode Server",
|
273
|
+
optional: true,
|
274
|
+
is_string: false,
|
275
|
+
default_value: true)
|
276
|
+
]
|
277
|
+
end
|
278
|
+
|
279
|
+
def self.output
|
280
|
+
[
|
281
|
+
['XCODE_SERVER_GET_ASSETS_PATH', 'Absolute path to the downloaded assets folder'],
|
282
|
+
['XCODE_SERVER_GET_ASSETS_ARCHIVE_PATH', 'Absolute path to the downloaded xcarchive file']
|
283
|
+
]
|
284
|
+
end
|
285
|
+
|
286
|
+
def self.return_type
|
287
|
+
:array_of_strings
|
288
|
+
end
|
289
|
+
|
290
|
+
def self.authors
|
291
|
+
["czechboy0"]
|
292
|
+
end
|
293
|
+
|
294
|
+
def self.is_supported?(platform)
|
295
|
+
[:ios, :mac].include?(platform)
|
296
|
+
end
|
297
|
+
|
298
|
+
def self.example_code
|
299
|
+
[
|
300
|
+
'xcode_server_get_assets(
|
301
|
+
host: "10.99.0.59", # Specify Xcode Server\'s Host or IP Address
|
302
|
+
bot_name: "release-1.3.4" # Specify the particular Bot
|
303
|
+
)'
|
304
|
+
]
|
305
|
+
end
|
306
|
+
|
307
|
+
def self.category
|
308
|
+
:testing
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
@@ -0,0 +1,641 @@
|
|
1
|
+
# rubocop:disable all
|
2
|
+
module Fastlane
|
3
|
+
module Actions
|
4
|
+
module SharedValues
|
5
|
+
XCODEBUILD_ARCHIVE ||= :XCODEBUILD_ARCHIVE
|
6
|
+
XCODEBUILD_DERIVED_DATA_PATH = :XCODEBUILD_DERIVED_DATA_PATH
|
7
|
+
end
|
8
|
+
|
9
|
+
# xcodebuild man page:
|
10
|
+
# https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html
|
11
|
+
|
12
|
+
class XcodebuildAction < Action
|
13
|
+
ARGS_MAP = {
|
14
|
+
# actions
|
15
|
+
analyze: "analyze",
|
16
|
+
archive: "archive",
|
17
|
+
build: "build",
|
18
|
+
clean: "clean",
|
19
|
+
install: "install",
|
20
|
+
installsrc: "installsrc",
|
21
|
+
test: "test",
|
22
|
+
|
23
|
+
# parameters
|
24
|
+
alltargets: "-alltargets",
|
25
|
+
arch: "-arch",
|
26
|
+
archive_path: "-archivePath",
|
27
|
+
configuration: "-configuration",
|
28
|
+
derivedDataPath: "-derivedDataPath",
|
29
|
+
destination_timeout: "-destination-timeout",
|
30
|
+
dry_run: "-dry-run",
|
31
|
+
enableAddressSanitizer: "-enableAddressSanitizer",
|
32
|
+
enableThreadSanitizer: "-enableThreadSanitizer",
|
33
|
+
enableCodeCoverage: "-enableCodeCoverage",
|
34
|
+
export_archive: "-exportArchive",
|
35
|
+
export_format: "-exportFormat",
|
36
|
+
export_installer_identity: "-exportInstallerIdentity",
|
37
|
+
export_options_plist: "-exportOptionsPlist",
|
38
|
+
export_path: "-exportPath",
|
39
|
+
export_profile: "-exportProvisioningProfile",
|
40
|
+
export_signing_identity: "-exportSigningIdentity",
|
41
|
+
export_with_original_signing_identity: "-exportWithOriginalSigningIdentity",
|
42
|
+
hide_shell_script_environment: "-hideShellScriptEnvironment",
|
43
|
+
jobs: "-jobs",
|
44
|
+
parallelize_targets: "-parallelizeTargets",
|
45
|
+
project: "-project",
|
46
|
+
result_bundle_path: "-resultBundlePath",
|
47
|
+
scheme: "-scheme",
|
48
|
+
sdk: "-sdk",
|
49
|
+
skip_unavailable_actions: "-skipUnavailableActions",
|
50
|
+
target: "-target",
|
51
|
+
toolchain: "-toolchain",
|
52
|
+
workspace: "-workspace",
|
53
|
+
xcconfig: "-xcconfig"
|
54
|
+
}
|
55
|
+
|
56
|
+
def self.is_supported?(platform)
|
57
|
+
[:ios, :mac].include? platform
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.example_code
|
61
|
+
[
|
62
|
+
'xcodebuild(
|
63
|
+
archive: true,
|
64
|
+
archive_path: "./build-dir/MyApp.xcarchive",
|
65
|
+
scheme: "MyApp",
|
66
|
+
workspace: "MyApp.xcworkspace"
|
67
|
+
)'
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.category
|
72
|
+
:building
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.run(params)
|
76
|
+
unless Helper.test?
|
77
|
+
UI.user_error!("xcodebuild not installed") if `which xcodebuild`.length == 0
|
78
|
+
end
|
79
|
+
|
80
|
+
# The args we will build with
|
81
|
+
xcodebuild_args = Array[]
|
82
|
+
|
83
|
+
# Supported ENV vars
|
84
|
+
build_path = ENV["XCODE_BUILD_PATH"] || nil
|
85
|
+
scheme = ENV["XCODE_SCHEME"]
|
86
|
+
workspace = ENV["XCODE_WORKSPACE"]
|
87
|
+
project = ENV["XCODE_PROJECT"]
|
88
|
+
buildlog_path = ENV["XCODE_BUILDLOG_PATH"]
|
89
|
+
|
90
|
+
# Set derived data path.
|
91
|
+
params[:derivedDataPath] ||= ENV["XCODE_DERIVED_DATA_PATH"]
|
92
|
+
Actions.lane_context[SharedValues::XCODEBUILD_DERIVED_DATA_PATH] = params[:derivedDataPath]
|
93
|
+
|
94
|
+
# Append slash to build path, if needed
|
95
|
+
if build_path && !build_path.end_with?("/")
|
96
|
+
build_path += "/"
|
97
|
+
end
|
98
|
+
|
99
|
+
# By default we use xcpretty
|
100
|
+
raw_buildlog = false
|
101
|
+
|
102
|
+
# By default we don't pass the utf flag
|
103
|
+
xcpretty_utf = false
|
104
|
+
|
105
|
+
if params
|
106
|
+
# Operation bools
|
107
|
+
archiving = params.key? :archive
|
108
|
+
exporting = params.key? :export_archive
|
109
|
+
testing = params.key? :test
|
110
|
+
xcpretty_utf = params[:xcpretty_utf]
|
111
|
+
|
112
|
+
if params.key? :raw_buildlog
|
113
|
+
raw_buildlog = params[:raw_buildlog]
|
114
|
+
end
|
115
|
+
|
116
|
+
if exporting
|
117
|
+
# If not passed, retrieve path from previous xcodebuild call
|
118
|
+
params[:archive_path] ||= Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE]
|
119
|
+
|
120
|
+
# If not passed, construct export path from env vars
|
121
|
+
if params[:export_path].nil?
|
122
|
+
ipa_filename = scheme ? scheme : File.basename(params[:archive_path], ".*")
|
123
|
+
params[:export_path] = "#{build_path}#{ipa_filename}"
|
124
|
+
end
|
125
|
+
|
126
|
+
# Default to ipa as export format
|
127
|
+
export_format = params[:export_format] || "ipa"
|
128
|
+
|
129
|
+
# Store IPA path for later deploy steps (i.e. Crashlytics)
|
130
|
+
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = params[:export_path] + "." + export_format.downcase
|
131
|
+
else
|
132
|
+
# If not passed, check for archive scheme & workspace/project env vars
|
133
|
+
params[:scheme] ||= scheme
|
134
|
+
params[:workspace] ||= workspace
|
135
|
+
params[:project] ||= project
|
136
|
+
|
137
|
+
# If no project or workspace was passed in or set as an environment
|
138
|
+
# variable, attempt to autodetect the workspace.
|
139
|
+
if params[:project].to_s.empty? && params[:workspace].to_s.empty?
|
140
|
+
params[:workspace] = detect_workspace
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
if archiving
|
145
|
+
# If not passed, construct archive path from env vars
|
146
|
+
params[:archive_path] ||= "#{build_path}#{params[:scheme]}.xcarchive"
|
147
|
+
|
148
|
+
# Cache path for later xcodebuild calls
|
149
|
+
Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE] = params[:archive_path]
|
150
|
+
end
|
151
|
+
|
152
|
+
if params.key? :enable_address_sanitizer
|
153
|
+
params[:enableAddressSanitizer] = params[:enable_address_sanitizer] ? 'YES' : 'NO'
|
154
|
+
end
|
155
|
+
if params.key? :enable_thread_sanitizer
|
156
|
+
params[:enableThreadSanitizer] = params[:enable_thread_sanitizer] ? 'YES' : 'NO'
|
157
|
+
end
|
158
|
+
if params.key? :enable_code_coverage
|
159
|
+
params[:enableCodeCoverage] = params[:enable_code_coverage] ? 'YES' : 'NO'
|
160
|
+
end
|
161
|
+
|
162
|
+
# Maps parameter hash to CLI args
|
163
|
+
params = export_options_to_plist(params)
|
164
|
+
if hash_args = hash_to_args(params)
|
165
|
+
xcodebuild_args += hash_args
|
166
|
+
end
|
167
|
+
|
168
|
+
buildlog_path ||= params[:buildlog_path]
|
169
|
+
end
|
170
|
+
|
171
|
+
# By default we put xcodebuild.log in the Logs folder
|
172
|
+
buildlog_path ||= File.expand_path("#{FastlaneCore::Helper.buildlog_path}/fastlane/xcbuild/#{Time.now.strftime('%F')}/#{Process.pid}")
|
173
|
+
|
174
|
+
# Joins args into space delimited string
|
175
|
+
xcodebuild_args = xcodebuild_args.join(" ")
|
176
|
+
|
177
|
+
# Default args
|
178
|
+
xcpretty_args = []
|
179
|
+
|
180
|
+
# Formatting style
|
181
|
+
if params && params[:output_style]
|
182
|
+
output_style = params[:output_style]
|
183
|
+
UI.user_error!("Invalid output_style #{output_style}") unless [:standard, :basic].include?(output_style)
|
184
|
+
else
|
185
|
+
output_style = :standard
|
186
|
+
end
|
187
|
+
|
188
|
+
case output_style
|
189
|
+
when :standard
|
190
|
+
xcpretty_args << '--color' unless Helper.colors_disabled?
|
191
|
+
when :basic
|
192
|
+
xcpretty_args << '--no-utf'
|
193
|
+
end
|
194
|
+
|
195
|
+
if testing
|
196
|
+
if params[:reports]
|
197
|
+
# New report options format
|
198
|
+
reports = params[:reports].reduce("") do |arguments, report|
|
199
|
+
report_string = "--report #{report[:report]}"
|
200
|
+
|
201
|
+
if report[:output]
|
202
|
+
report_string << " --output \"#{report[:output]}\""
|
203
|
+
elsif report[:report] == 'junit'
|
204
|
+
report_string << " --output \"#{build_path}report/report.xml\""
|
205
|
+
elsif report[:report] == 'html'
|
206
|
+
report_string << " --output \"#{build_path}report/report.html\""
|
207
|
+
elsif report[:report] == 'json-compilation-database'
|
208
|
+
report_string << " --output \"#{build_path}report/report.json\""
|
209
|
+
end
|
210
|
+
|
211
|
+
if report[:screenshots]
|
212
|
+
report_string << " --screenshots"
|
213
|
+
end
|
214
|
+
|
215
|
+
unless arguments == ""
|
216
|
+
arguments << " "
|
217
|
+
end
|
218
|
+
|
219
|
+
arguments << report_string
|
220
|
+
end
|
221
|
+
|
222
|
+
xcpretty_args.push reports
|
223
|
+
|
224
|
+
elsif params[:report_formats]
|
225
|
+
# Test report file format
|
226
|
+
report_formats = params[:report_formats].map do |format|
|
227
|
+
"--report #{format}"
|
228
|
+
end.sort.join(" ")
|
229
|
+
|
230
|
+
xcpretty_args.push report_formats
|
231
|
+
|
232
|
+
# Save screenshots flag
|
233
|
+
if params[:report_formats].include?("html") && params[:report_screenshots]
|
234
|
+
xcpretty_args.push "--screenshots"
|
235
|
+
end
|
236
|
+
|
237
|
+
xcpretty_args.sort!
|
238
|
+
|
239
|
+
# Test report file path
|
240
|
+
if params[:report_path]
|
241
|
+
xcpretty_args.push "--output \"#{params[:report_path]}\""
|
242
|
+
elsif build_path
|
243
|
+
xcpretty_args.push "--output \"#{build_path}report\""
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
# Stdout format
|
249
|
+
if testing && !archiving
|
250
|
+
xcpretty_args << (params[:xcpretty_output] ? "--#{params[:xcpretty_output]}" : "--test")
|
251
|
+
else
|
252
|
+
xcpretty_args << (params[:xcpretty_output] ? "--#{params[:xcpretty_output]}" : "--simple")
|
253
|
+
end
|
254
|
+
|
255
|
+
xcpretty_args = xcpretty_args.join(" ")
|
256
|
+
|
257
|
+
xcpretty_command = ""
|
258
|
+
xcpretty_command = "| xcpretty #{xcpretty_args}" unless raw_buildlog
|
259
|
+
unless raw_buildlog
|
260
|
+
xcpretty_command = "#{xcpretty_command} --utf" if xcpretty_utf
|
261
|
+
end
|
262
|
+
|
263
|
+
pipe_command = "| tee '#{buildlog_path}/xcodebuild.log' #{xcpretty_command}"
|
264
|
+
|
265
|
+
FileUtils.mkdir_p buildlog_path
|
266
|
+
UI.message("For a more detailed xcodebuild log open #{buildlog_path}/xcodebuild.log")
|
267
|
+
|
268
|
+
output_result = ""
|
269
|
+
|
270
|
+
# In some cases the simulator is not booting up in time
|
271
|
+
# One way to solve it is to try to rerun it for one more time
|
272
|
+
begin
|
273
|
+
output_result = Actions.sh "set -o pipefail && xcodebuild #{xcodebuild_args} #{pipe_command}"
|
274
|
+
rescue => ex
|
275
|
+
exit_status = $?.exitstatus
|
276
|
+
|
277
|
+
raise_error = true
|
278
|
+
if exit_status.eql? 65
|
279
|
+
iphone_simulator_time_out_error = /iPhoneSimulator: Timed out waiting/
|
280
|
+
|
281
|
+
if (iphone_simulator_time_out_error =~ ex.message) != nil
|
282
|
+
raise_error = false
|
283
|
+
|
284
|
+
UI.important("First attempt failed with iPhone Simulator error: #{iphone_simulator_time_out_error.source}")
|
285
|
+
UI.important("Retrying once more...")
|
286
|
+
output_result = Actions.sh "set -o pipefail && xcodebuild #{xcodebuild_args} #{pipe_command}"
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
raise ex if raise_error
|
291
|
+
end
|
292
|
+
|
293
|
+
# If raw_buildlog and some reports had to be created, create xcpretty reports from the build log
|
294
|
+
if raw_buildlog && xcpretty_args.include?('--report')
|
295
|
+
output_result = Actions.sh "set -o pipefail && cat '#{buildlog_path}/xcodebuild.log' | xcpretty #{xcpretty_args} > /dev/null"
|
296
|
+
end
|
297
|
+
|
298
|
+
output_result
|
299
|
+
end
|
300
|
+
|
301
|
+
def self.export_options_to_plist(hash)
|
302
|
+
# Extract export options parameters from input options
|
303
|
+
if hash.has_key?(:export_options_plist) && hash[:export_options_plist].is_a?(Hash)
|
304
|
+
export_options = hash[:export_options_plist]
|
305
|
+
|
306
|
+
# Normalize some values
|
307
|
+
export_options[:teamID] = CredentialsManager::AppfileConfig.try_fetch_value(:team_id) if !export_options[:teamID] && CredentialsManager::AppfileConfig.try_fetch_value(:team_id)
|
308
|
+
export_options[:onDemandResourcesAssetPacksBaseURL] = URI.escape(export_options[:onDemandResourcesAssetPacksBaseURL]) if export_options[:onDemandResourcesAssetPacksBaseURL]
|
309
|
+
if export_options[:manifest]
|
310
|
+
export_options[:manifest][:appURL] = URI.encode_www_form_component(export_options[:manifest][:appURL]) if export_options[:manifest][:appURL]
|
311
|
+
export_options[:manifest][:displayImageURL] = URI.encode_www_form_component(export_options[:manifest][:displayImageURL]) if export_options[:manifest][:displayImageURL]
|
312
|
+
export_options[:manifest][:fullSizeImageURL] = URI.encode_www_form_component(export_options[:manifest][:fullSizeImageURL]) if export_options[:manifest][:fullSizeImageURL]
|
313
|
+
export_options[:manifest][:assetPackManifestURL] = URI.encode_www_form_component(export_options[:manifest][:assetPackManifestURL]) if export_options[:manifest][:assetPackManifestURL]
|
314
|
+
end
|
315
|
+
|
316
|
+
# Saves options to plist
|
317
|
+
path = "#{Tempfile.new('exportOptions').path}.plist"
|
318
|
+
File.write(path, export_options.to_plist)
|
319
|
+
hash[:export_options_plist] = path
|
320
|
+
end
|
321
|
+
hash
|
322
|
+
end
|
323
|
+
|
324
|
+
def self.hash_to_args(hash)
|
325
|
+
# Remove nil value params
|
326
|
+
hash = hash.delete_if { |_, v| v.nil? }
|
327
|
+
|
328
|
+
# Maps nice developer param names to CLI arguments
|
329
|
+
hash.map do |k, v|
|
330
|
+
v ||= ""
|
331
|
+
if arg = ARGS_MAP[k]
|
332
|
+
value = (v != true && v.to_s.length > 0 ? "\"#{v}\"" : "")
|
333
|
+
"#{arg} #{value}".strip
|
334
|
+
elsif k == :build_settings
|
335
|
+
v.map do |setting, val|
|
336
|
+
val = clean_build_setting_value(val)
|
337
|
+
"#{setting}=\"#{val}\""
|
338
|
+
end.join(' ')
|
339
|
+
elsif k == :destination
|
340
|
+
[*v].collect { |dst| "-destination \"#{dst}\"" }.join(' ')
|
341
|
+
elsif k == :keychain && v.to_s.length > 0
|
342
|
+
# If keychain is specified, append as OTHER_CODE_SIGN_FLAGS
|
343
|
+
"OTHER_CODE_SIGN_FLAGS=\"--keychain #{v}\""
|
344
|
+
elsif k == :xcargs && v.to_s.length > 0
|
345
|
+
# Add more xcodebuild arguments
|
346
|
+
"#{v}"
|
347
|
+
end
|
348
|
+
end.compact
|
349
|
+
end
|
350
|
+
|
351
|
+
# Cleans values for build settings
|
352
|
+
# Only escaping `$(inherit)` types of values since "sh"
|
353
|
+
# interprets these as sub-commands instead of passing value into xcodebuild
|
354
|
+
def self.clean_build_setting_value(value)
|
355
|
+
value.to_s.gsub('$(', '\\$(')
|
356
|
+
end
|
357
|
+
|
358
|
+
def self.detect_workspace
|
359
|
+
workspace = nil
|
360
|
+
workspaces = Dir.glob("*.xcworkspace")
|
361
|
+
|
362
|
+
if workspaces.length > 1
|
363
|
+
UI.important("Multiple workspaces detected.")
|
364
|
+
end
|
365
|
+
|
366
|
+
unless workspaces.empty?
|
367
|
+
workspace = workspaces.first
|
368
|
+
UI.important("Using workspace \"#{workspace}\"")
|
369
|
+
end
|
370
|
+
|
371
|
+
return workspace
|
372
|
+
end
|
373
|
+
|
374
|
+
def self.description
|
375
|
+
"Use the `xcodebuild` command to build and sign your app"
|
376
|
+
end
|
377
|
+
|
378
|
+
def self.available_options
|
379
|
+
[
|
380
|
+
['archive', 'Set to true to build archive'],
|
381
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
382
|
+
['workspace', 'The workspace to use'],
|
383
|
+
['scheme', 'The scheme to build'],
|
384
|
+
['build_settings', 'Hash of additional build information'],
|
385
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
386
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
387
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
388
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
389
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
390
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
391
|
+
]
|
392
|
+
end
|
393
|
+
|
394
|
+
def self.details
|
395
|
+
"**Note**: `xcodebuild` is a complex command, so it is recommended to use [_gym_](https://docs.fastlane.tools/actions/gym/) for building your ipa file and [_scan_](https://docs.fastlane.tools/actions/scan/) for testing your app instead."
|
396
|
+
end
|
397
|
+
|
398
|
+
def self.author
|
399
|
+
"dtrenz"
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
class XcarchiveAction < Action
|
404
|
+
def self.run(params)
|
405
|
+
params_hash = params || {}
|
406
|
+
params_hash[:archive] = true
|
407
|
+
XcodebuildAction.run(params_hash)
|
408
|
+
end
|
409
|
+
|
410
|
+
def self.description
|
411
|
+
"Archives the project using `xcodebuild`"
|
412
|
+
end
|
413
|
+
|
414
|
+
def self.example_code
|
415
|
+
[
|
416
|
+
'xcarchive'
|
417
|
+
]
|
418
|
+
end
|
419
|
+
|
420
|
+
def self.category
|
421
|
+
:building
|
422
|
+
end
|
423
|
+
|
424
|
+
def self.author
|
425
|
+
"dtrenz"
|
426
|
+
end
|
427
|
+
|
428
|
+
def self.is_supported?(platform)
|
429
|
+
[:ios, :mac].include? platform
|
430
|
+
end
|
431
|
+
|
432
|
+
def self.available_options
|
433
|
+
[
|
434
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
435
|
+
['workspace', 'The workspace to use'],
|
436
|
+
['scheme', 'The scheme to build'],
|
437
|
+
['build_settings', 'Hash of additional build information'],
|
438
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
439
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
440
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
441
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
442
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
443
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
444
|
+
]
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
class XcbuildAction < Action
|
449
|
+
def self.run(params)
|
450
|
+
params_hash = params || {}
|
451
|
+
params_hash[:build] = true
|
452
|
+
XcodebuildAction.run(params_hash)
|
453
|
+
end
|
454
|
+
|
455
|
+
def self.example_code
|
456
|
+
[
|
457
|
+
'xcbuild'
|
458
|
+
]
|
459
|
+
end
|
460
|
+
|
461
|
+
def self.category
|
462
|
+
:building
|
463
|
+
end
|
464
|
+
|
465
|
+
def self.description
|
466
|
+
"Builds the project using `xcodebuild`"
|
467
|
+
end
|
468
|
+
|
469
|
+
def self.author
|
470
|
+
"dtrenz"
|
471
|
+
end
|
472
|
+
|
473
|
+
def self.is_supported?(platform)
|
474
|
+
[:ios, :mac].include? platform
|
475
|
+
end
|
476
|
+
|
477
|
+
def self.available_options
|
478
|
+
[
|
479
|
+
['archive', 'Set to true to build archive'],
|
480
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
481
|
+
['workspace', 'The workspace to use'],
|
482
|
+
['scheme', 'The scheme to build'],
|
483
|
+
['build_settings', 'Hash of additional build information'],
|
484
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
485
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
486
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
487
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
488
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
489
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
490
|
+
]
|
491
|
+
end
|
492
|
+
end
|
493
|
+
|
494
|
+
class XccleanAction < Action
|
495
|
+
def self.run(params)
|
496
|
+
params_hash = params || {}
|
497
|
+
params_hash[:clean] = true
|
498
|
+
XcodebuildAction.run(params_hash)
|
499
|
+
end
|
500
|
+
|
501
|
+
def self.description
|
502
|
+
"Cleans the project using `xcodebuild`"
|
503
|
+
end
|
504
|
+
|
505
|
+
def self.example_code
|
506
|
+
[
|
507
|
+
'xcclean'
|
508
|
+
]
|
509
|
+
end
|
510
|
+
|
511
|
+
def self.category
|
512
|
+
:building
|
513
|
+
end
|
514
|
+
|
515
|
+
def self.author
|
516
|
+
"dtrenz"
|
517
|
+
end
|
518
|
+
|
519
|
+
def self.is_supported?(platform)
|
520
|
+
[:ios, :mac].include? platform
|
521
|
+
end
|
522
|
+
|
523
|
+
def self.available_options
|
524
|
+
[
|
525
|
+
['archive', 'Set to true to build archive'],
|
526
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
527
|
+
['workspace', 'The workspace to use'],
|
528
|
+
['scheme', 'The scheme to build'],
|
529
|
+
['build_settings', 'Hash of additional build information'],
|
530
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
531
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
532
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
533
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
534
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
535
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
536
|
+
]
|
537
|
+
end
|
538
|
+
end
|
539
|
+
|
540
|
+
class XcexportAction < Action
|
541
|
+
def self.run(params)
|
542
|
+
params_hash = params || {}
|
543
|
+
params_hash[:export_archive] = true
|
544
|
+
XcodebuildAction.run(params_hash)
|
545
|
+
end
|
546
|
+
|
547
|
+
def self.description
|
548
|
+
"Exports the project using `xcodebuild`"
|
549
|
+
end
|
550
|
+
|
551
|
+
def self.example_code
|
552
|
+
[
|
553
|
+
'xcexport'
|
554
|
+
]
|
555
|
+
end
|
556
|
+
|
557
|
+
def self.category
|
558
|
+
:building
|
559
|
+
end
|
560
|
+
|
561
|
+
def self.author
|
562
|
+
"dtrenz"
|
563
|
+
end
|
564
|
+
|
565
|
+
def self.available_options
|
566
|
+
[
|
567
|
+
['archive', 'Set to true to build archive'],
|
568
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
569
|
+
['workspace', 'The workspace to use'],
|
570
|
+
['scheme', 'The scheme to build'],
|
571
|
+
['build_settings', 'Hash of additional build information'],
|
572
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
573
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
574
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
575
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
576
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
577
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
578
|
+
]
|
579
|
+
end
|
580
|
+
|
581
|
+
def self.is_supported?(platform)
|
582
|
+
[:ios, :mac].include? platform
|
583
|
+
end
|
584
|
+
end
|
585
|
+
|
586
|
+
class XctestAction < Action
|
587
|
+
def self.run(params)
|
588
|
+
UI.important("Have you seen the new 'scan' tool to run tests? https://docs.fastlane.tools/actions/scan/")
|
589
|
+
params_hash = params || {}
|
590
|
+
params_hash[:build] = true
|
591
|
+
params_hash[:test] = true
|
592
|
+
|
593
|
+
XcodebuildAction.run(params_hash)
|
594
|
+
end
|
595
|
+
|
596
|
+
def self.example_code
|
597
|
+
[
|
598
|
+
'xctest(
|
599
|
+
destination: "name=iPhone 7s,OS=10.0"
|
600
|
+
)'
|
601
|
+
]
|
602
|
+
end
|
603
|
+
|
604
|
+
def self.category
|
605
|
+
:building
|
606
|
+
end
|
607
|
+
|
608
|
+
def self.description
|
609
|
+
"Runs tests on the given simulator"
|
610
|
+
end
|
611
|
+
|
612
|
+
def self.available_options
|
613
|
+
[
|
614
|
+
['archive', 'Set to true to build archive'],
|
615
|
+
['archive_path', 'The path to archive the to. Must contain `.xcarchive`'],
|
616
|
+
['workspace', 'The workspace to use'],
|
617
|
+
['scheme', 'The scheme to build'],
|
618
|
+
['build_settings', 'Hash of additional build information'],
|
619
|
+
['xcargs', 'Pass additional xcodebuild options'],
|
620
|
+
['destination', 'The simulator to use, e.g. "name=iPhone 5s,OS=8.1"'],
|
621
|
+
['destination_timeout', 'The timeout for connecting to the simulator, in seconds'],
|
622
|
+
['enable_code_coverage', 'Turn code coverage on or off when testing. eg. true|false. Requires Xcode 7+'],
|
623
|
+
['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
|
624
|
+
['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
|
625
|
+
['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
|
626
|
+
['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
|
627
|
+
['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
|
628
|
+
]
|
629
|
+
end
|
630
|
+
|
631
|
+
def self.is_supported?(platform)
|
632
|
+
[:ios, :mac].include? platform
|
633
|
+
end
|
634
|
+
|
635
|
+
def self.author
|
636
|
+
"dtrenz"
|
637
|
+
end
|
638
|
+
end
|
639
|
+
end
|
640
|
+
end
|
641
|
+
# rubocop:enable all
|