fastlane 1.111.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +76 -111
- data/bin/bin-proxy +19 -0
- data/cert/README.md +163 -0
- data/cert/lib/cert.rb +18 -0
- data/cert/lib/cert/commands_generator.rb +51 -0
- data/cert/lib/cert/options.rb +67 -0
- data/cert/lib/cert/runner.rb +181 -0
- data/credentials_manager/README.md +62 -0
- data/credentials_manager/lib/credentials_manager.rb +12 -0
- data/credentials_manager/lib/credentials_manager/account_manager.rb +104 -0
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +186 -0
- data/credentials_manager/lib/credentials_manager/cli.rb +65 -0
- data/deliver/README.md +271 -0
- data/deliver/lib/assets/DeliverfileDefault +10 -0
- data/deliver/lib/assets/ScreenshotsHelp +7 -0
- data/deliver/lib/assets/summary.html.erb +210 -0
- data/deliver/lib/deliver.rb +31 -0
- data/deliver/lib/deliver/app_screenshot.rb +226 -0
- data/deliver/lib/deliver/commands_generator.rb +150 -0
- data/deliver/lib/deliver/detect_values.rb +69 -0
- data/deliver/lib/deliver/download_screenshots.rb +46 -0
- data/deliver/lib/deliver/generate_summary.rb +9 -0
- data/deliver/lib/deliver/html_generator.rb +58 -0
- data/deliver/lib/deliver/loader.rb +18 -0
- data/deliver/lib/deliver/options.rb +269 -0
- data/deliver/lib/deliver/runner.rb +99 -0
- data/deliver/lib/deliver/setup.rb +78 -0
- data/deliver/lib/deliver/submit_for_review.rb +87 -0
- data/deliver/lib/deliver/upload_assets.rb +22 -0
- data/deliver/lib/deliver/upload_metadata.rb +191 -0
- data/deliver/lib/deliver/upload_price_tier.rb +21 -0
- data/deliver/lib/deliver/upload_screenshots.rb +110 -0
- data/fastlane/README.md +193 -0
- data/{lib → fastlane/lib}/assets/Actions.md.erb +0 -0
- data/{lib → fastlane/lib}/assets/AppfileTemplate +0 -0
- data/{lib → fastlane/lib}/assets/AppfileTemplateAndroid +0 -0
- data/{lib → fastlane/lib}/assets/AvailablePlugins.md.erb +0 -0
- data/{lib → fastlane/lib}/assets/DefaultFastfileTemplate +2 -2
- data/{lib → fastlane/lib}/assets/FastfileTemplateAndroid +2 -2
- data/{lib → fastlane/lib}/assets/completions/completion.bash +0 -0
- data/{lib → fastlane/lib}/assets/completions/completion.sh +0 -0
- data/{lib → fastlane/lib}/assets/completions/completion.zsh +0 -0
- data/{lib → fastlane/lib}/assets/custom_action_template.rb +0 -0
- data/{lib → fastlane/lib}/assets/mailgun_html_template.erb +0 -0
- data/{lib → fastlane/lib}/assets/report_template.xml.erb +0 -0
- data/{lib → fastlane/lib}/assets/s3_html_template.erb +0 -0
- data/{lib → fastlane/lib}/assets/s3_plist_template.erb +0 -0
- data/{lib → fastlane/lib}/assets/s3_version_template.erb +0 -0
- data/{lib → fastlane/lib}/fastlane.rb +3 -3
- data/{lib → fastlane/lib}/fastlane/action.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/action_collector.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/README.md +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/actions_helper.rb +16 -0
- data/{lib → fastlane/lib}/fastlane/actions/adb.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/adb_devices.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/add_git_tag.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/app_store_build_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/appaloosa.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/appetize.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/appetize_viewing_url_generator.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/appium.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/appledoc.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/appstore.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/apteligent.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/artifactory.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/backup_file.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/backup_xcarchive.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/badge.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/build_and_upload_to_appetize.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/bundle_install.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/carthage.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/actions/cert.rb +0 -4
- data/{lib → fastlane/lib}/fastlane/actions/changelog_from_git_commits.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/chatwork.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/clean_build_artifacts.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/clean_cocoapods_cache.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/clear_derived_data.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/clipboard.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/cloc.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/cocoapods.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/commit_version_bump.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/copy_artifacts.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/crashlytics.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/create_keychain.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/create_pull_request.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/danger.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/debug.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/default_platform.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/delete_keychain.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/deliver.rb +0 -4
- data/{lib → fastlane/lib}/fastlane/actions/deploygate.rb +34 -19
- data/{lib → fastlane/lib}/fastlane/actions/device_grid/README.md +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/dotgpg_environment.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/download.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/download_dsyms.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/dsym_zip.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/ensure_git_branch.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/ensure_git_status_clean.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/ensure_no_debug_code.rb +10 -2
- data/{lib → fastlane/lib}/fastlane/actions/ensure_xcode_version.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/erb.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/fastlane_version.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/flock.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/frameit.rb +6 -10
- data/{lib → fastlane/lib}/fastlane/actions/gcovr.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_build_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_build_number_repository.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_github_release.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_info_plist_value.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_ipa_info_plist_value.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/get_version_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/git_add.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/git_branch.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/git_commit.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/git_pull.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/git_tag_exists.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/gradle.rb +0 -0
- data/fastlane/lib/fastlane/actions/gym.rb +84 -0
- data/{lib → fastlane/lib}/fastlane/actions/hg_add_tag.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/hg_commit_version_bump.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/hg_ensure_clean_status.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/hg_push.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/hipchat.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/hockey.rb +37 -11
- data/{lib → fastlane/lib}/fastlane/actions/ifttt.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/import.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/import_certificate.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/import_from_git.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/increment_build_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/increment_version_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/install_on_device.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/install_xcode_plugin.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/installr.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/ipa.rb +12 -4
- data/{lib → fastlane/lib}/fastlane/actions/is_ci.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/jazzy.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/jira.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/lane_context.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/last_git_commit.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/last_git_tag.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/latest_testflight_build_number.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/lcov.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/mailgun.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/make_changelog_from_jenkins.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/match.rb +3 -9
- data/{lib → fastlane/lib}/fastlane/actions/nexus_upload.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/notification.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/notify.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/number_of_commits.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/oclint.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/onesignal.rb +3 -0
- data/{lib → fastlane/lib}/fastlane/actions/opt_out_usage.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/pem.rb +9 -15
- data/{lib → fastlane/lib}/fastlane/actions/pilot.rb +6 -12
- data/{lib → fastlane/lib}/fastlane/actions/pod_lib_lint.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/pod_push.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/podio_item.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/produce.rb +7 -11
- data/{lib → fastlane/lib}/fastlane/actions/prompt.rb +5 -2
- data/{lib → fastlane/lib}/fastlane/actions/push_git_tags.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/push_to_git_remote.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/puts.rb +8 -0
- data/{lib → fastlane/lib}/fastlane/actions/read_podspec.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/recreate_schemes.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/register_devices.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/reset_git_repo.rb +0 -0
- data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +62 -0
- data/{lib → fastlane/lib}/fastlane/actions/resign.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/restore_file.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/rocket.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/rsync.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/s3.rb +2 -1
- data/{lib → fastlane/lib}/fastlane/actions/say.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/scan.rb +0 -4
- data/{lib → fastlane/lib}/fastlane/actions/scp.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/screengrab.rb +7 -13
- data/{lib → fastlane/lib}/fastlane/actions/set_build_number_repository.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/set_changelog.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/set_github_release.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/set_info_plist_value.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/set_pod_key.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/setup_jenkins.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/sigh.rb +9 -15
- data/{lib → fastlane/lib}/fastlane/actions/skip_docs.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/slack.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/slather.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/snapshot.rb +5 -11
- data/{lib → fastlane/lib}/fastlane/actions/sonar.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/splunkmint.rb +3 -0
- data/{lib → fastlane/lib}/fastlane/actions/ssh.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/supply.rb +9 -13
- data/{lib → fastlane/lib}/fastlane/actions/swiftlint.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/team_id.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/team_name.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/testfairy.rb +28 -9
- data/{lib → fastlane/lib}/fastlane/actions/testflight.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/tryouts.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/twitter.rb +4 -0
- data/{lib → fastlane/lib}/fastlane/actions/typetalk.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/unlock_keychain.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_app_group_identifiers.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_app_identifier.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_fastlane.rb +1 -20
- data/{lib → fastlane/lib}/fastlane/actions/update_icloud_container_identifiers.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_info_plist.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_project_code_signing.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_project_provisioning.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_project_team.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_urban_airship_configuration.rb +4 -0
- data/{lib → fastlane/lib}/fastlane/actions/update_url_schemes.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/upload_symbols_to_sentry.rb +2 -0
- data/{lib → fastlane/lib}/fastlane/actions/verify_build.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/verify_pod_keys.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/verify_xcode.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/version_bump_podspec.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/version_get_podspec.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/xcode_install.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/xcode_select.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/xcode_server_get_assets.rb +1 -0
- data/{lib → fastlane/lib}/fastlane/actions/xcodebuild.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/xcov.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/xctool.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/actions/xcversion.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/actions/zip.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/auto_complete.rb +0 -0
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +125 -0
- data/{lib → fastlane/lib}/fastlane/command_line_handler.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/commands_generator.rb +5 -4
- data/{lib → fastlane/lib}/fastlane/configuration_helper.rb +0 -1
- data/{lib → fastlane/lib}/fastlane/core_ext/bundler_monkey_patch.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/documentation/actions_list.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/documentation/docs_generator.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/documentation/markdown_docs_generator.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/environment_printer.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/erb_template_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/fast_file.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/fastlane_require.rb +27 -3
- data/{lib → fastlane/lib}/fastlane/features.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/README.md +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/adb_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/cocoapod_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/crashlytics_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/gem_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/git_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/gradle_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/podspec_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/sh_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/helper/xcversion_helper.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/junit_generator.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/lane.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/lane_list.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/lane_manager.rb +25 -6
- data/{lib → fastlane/lib}/fastlane/markdown_table_formatter.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/new_action.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/one_off.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/other_action.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_fetcher.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_generator.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_generator_ui.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_info.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_info_collector.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_manager.rb +4 -4
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_search.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugin_update_manager.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/plugins.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/%gem_name%.gemspec.erb +3 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/.gitignore +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/.rspec +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/.rubocop.yml +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/.travis.yml +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/Gemfile +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/LICENSE.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/README.md.erb +2 -2
- data/{lib → fastlane/lib}/fastlane/plugins/template/Rakefile +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/circle.yml +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/fastlane/Fastfile.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/fastlane/Pluginfile.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/actions/%plugin_name%_action.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/helper/%plugin_name%_helper.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/version.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/spec/%plugin_name%_action_spec.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/plugins/template/spec/spec_helper.rb.erb +0 -0
- data/{lib → fastlane/lib}/fastlane/runner.rb +25 -2
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta.rb +1 -1
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta_command_line_handler.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta_info.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta_info_collector.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta_ui.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_beta_user_email_fetcher.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/crashlytics_project_parser.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/setup/setup.rb +2 -2
- data/{lib → fastlane/lib}/fastlane/setup/setup_android.rb +2 -2
- data/{lib → fastlane/lib}/fastlane/setup/setup_ios.rb +3 -3
- data/{lib → fastlane/lib}/fastlane/supported_platforms.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/tools.rb +0 -0
- data/{lib → fastlane/lib}/fastlane/version.rb +2 -2
- data/fastlane_core/README.md +54 -0
- data/fastlane_core/lib/assets/XMLTemplate.xml.erb +12 -0
- data/fastlane_core/lib/fastlane_core.rb +48 -0
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +94 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +98 -0
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +82 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +133 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +266 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +82 -0
- data/fastlane_core/lib/fastlane_core/core_ext/string.rb +17 -0
- data/fastlane_core/lib/fastlane_core/device_manager.rb +231 -0
- data/fastlane_core/lib/fastlane_core/env.rb +9 -0
- data/{lib/fastlane → fastlane_core/lib/fastlane_core}/fastlane_folder.rb +1 -11
- data/fastlane_core/lib/fastlane_core/feature/feature.rb +49 -0
- data/fastlane_core/lib/fastlane_core/features.rb +2 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +240 -0
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +55 -0
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +44 -0
- data/fastlane_core/lib/fastlane_core/itunes_search_api.rb +48 -0
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +409 -0
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +27 -0
- data/fastlane_core/lib/fastlane_core/languages.rb +11 -0
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +42 -0
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +44 -0
- data/fastlane_core/lib/fastlane_core/print_table.rb +63 -0
- data/fastlane_core/lib/fastlane_core/project.rb +450 -0
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +69 -0
- data/fastlane_core/lib/fastlane_core/string_filters.rb +34 -0
- data/fastlane_core/lib/fastlane_core/tool_collector.rb +179 -0
- data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +17 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +190 -0
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +50 -0
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +122 -0
- data/fastlane_core/lib/fastlane_core/ui/interface.rb +159 -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 +198 -0
- data/fastlane_core/lib/fastlane_core/xcodebuild_list_output_parser.rb +28 -0
- data/frameit/README.md +284 -0
- data/frameit/lib/assets/empty.png +0 -0
- data/frameit/lib/frameit.rb +52 -0
- data/frameit/lib/frameit/commands_generator.rb +99 -0
- data/frameit/lib/frameit/config_parser.rb +98 -0
- data/frameit/lib/frameit/dependency_checker.rb +20 -0
- data/frameit/lib/frameit/device_types.rb +13 -0
- data/frameit/lib/frameit/editor.rb +351 -0
- data/frameit/lib/frameit/frame_downloader.rb +71 -0
- data/frameit/lib/frameit/mac_editor.rb +32 -0
- data/frameit/lib/frameit/offsets.rb +19 -0
- data/frameit/lib/frameit/options.rb +46 -0
- data/frameit/lib/frameit/runner.rb +45 -0
- data/frameit/lib/frameit/screenshot.rb +89 -0
- data/frameit/lib/frameit/strings_parser.rb +35 -0
- data/frameit/lib/frameit/template_finder.rb +36 -0
- data/gym/README.md +288 -0
- data/gym/lib/assets/GymfileTemplate +13 -0
- data/gym/lib/assets/package_application_patches/0001_codesign_args_patch.diff +38 -0
- data/gym/lib/assets/package_application_patches/0002_no_strict_parameter_patch.diff +42 -0
- data/gym/lib/assets/package_application_patches/PackageApplication_MD5 +2 -0
- data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +58 -0
- data/gym/lib/gym.rb +49 -0
- data/gym/lib/gym/commands_generator.rb +62 -0
- data/gym/lib/gym/detect_values.rb +105 -0
- data/gym/lib/gym/error_handler.rb +186 -0
- data/gym/lib/gym/generators/README.md +1 -0
- data/gym/lib/gym/generators/build_command_generator.rb +136 -0
- data/gym/lib/gym/generators/package_command_generator.rb +58 -0
- data/gym/lib/gym/generators/package_command_generator_legacy.rb +102 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +191 -0
- data/gym/lib/gym/manager.rb +17 -0
- data/gym/lib/gym/options.rb +254 -0
- data/gym/lib/gym/runner.rb +256 -0
- data/gym/lib/gym/xcode.rb +21 -0
- data/gym/lib/gym/xcodebuild_fixes/README.md +9 -0
- data/gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb +32 -0
- data/gym/lib/gym/xcodebuild_fixes/package_application_fix.rb +53 -0
- data/gym/lib/gym/xcodebuild_fixes/swift_fix.rb +99 -0
- data/gym/lib/gym/xcodebuild_fixes/watchkit2_fix.rb +35 -0
- data/gym/lib/gym/xcodebuild_fixes/watchkit_fix.rb +40 -0
- data/match/README.md +414 -0
- data/match/lib/assets/MatchfileTemplate +9 -0
- data/match/lib/assets/READMETemplate.md +49 -0
- data/match/lib/match.rb +57 -0
- data/match/lib/match/change_password.rb +30 -0
- data/match/lib/match/commands_generator.rb +120 -0
- data/match/lib/match/encrypt.rb +93 -0
- data/match/lib/match/generator.rb +74 -0
- data/match/lib/match/git_helper.rb +139 -0
- data/match/lib/match/nuke.rb +190 -0
- data/match/lib/match/options.rb +124 -0
- data/match/lib/match/runner.rb +172 -0
- data/match/lib/match/setup.rb +20 -0
- data/match/lib/match/spaceship_ensure.rb +78 -0
- data/match/lib/match/table_printer.rb +43 -0
- data/match/lib/match/utils.rb +59 -0
- data/pem/README.md +175 -0
- data/pem/lib/pem.rb +21 -0
- data/pem/lib/pem/commands_generator.rb +41 -0
- data/pem/lib/pem/manager.rb +93 -0
- data/pem/lib/pem/options.rb +79 -0
- data/pilot/README.md +285 -0
- data/pilot/lib/pilot.rb +22 -0
- data/pilot/lib/pilot/build_manager.rb +209 -0
- data/pilot/lib/pilot/commands_generator.rb +136 -0
- data/pilot/lib/pilot/features.rb +0 -0
- data/pilot/lib/pilot/manager.rb +71 -0
- data/pilot/lib/pilot/options.rb +161 -0
- data/pilot/lib/pilot/tester_exporter.rb +37 -0
- data/pilot/lib/pilot/tester_importer.rb +51 -0
- data/pilot/lib/pilot/tester_manager.rb +212 -0
- data/pilot/lib/pilot/tester_util.rb +23 -0
- data/produce/README.md +232 -0
- data/produce/lib/produce.rb +21 -0
- data/produce/lib/produce/available_default_languages.rb +36 -0
- data/produce/lib/produce/commands_generator.rb +134 -0
- data/produce/lib/produce/developer_center.rb +58 -0
- data/produce/lib/produce/group.rb +89 -0
- data/produce/lib/produce/itunes_connect.rb +87 -0
- data/produce/lib/produce/manager.rb +11 -0
- data/produce/lib/produce/options.rb +114 -0
- data/produce/lib/produce/service.rb +227 -0
- data/scan/README.md +219 -0
- data/scan/lib/assets/ScanfileTemplate +13 -0
- data/scan/lib/scan.rb +40 -0
- data/scan/lib/scan/commands_generator.rb +61 -0
- data/scan/lib/scan/detect_values.rb +184 -0
- data/scan/lib/scan/error_handler.rb +43 -0
- data/scan/lib/scan/manager.rb +17 -0
- data/scan/lib/scan/options.rb +189 -0
- data/scan/lib/scan/report_collector.rb +70 -0
- data/scan/lib/scan/runner.rb +103 -0
- data/scan/lib/scan/slack_poster.rb +59 -0
- data/scan/lib/scan/test_command_generator.rb +130 -0
- data/scan/lib/scan/test_result_parser.rb +21 -0
- data/screengrab/README.md +190 -0
- data/screengrab/lib/assets/ScreengrabfileTemplate +15 -0
- data/screengrab/lib/screengrab.rb +32 -0
- data/screengrab/lib/screengrab/android_environment.rb +88 -0
- data/screengrab/lib/screengrab/commands_generator.rb +60 -0
- data/screengrab/lib/screengrab/dependency_checker.rb +56 -0
- data/screengrab/lib/screengrab/detect_values.rb +16 -0
- data/screengrab/lib/screengrab/options.rb +109 -0
- data/screengrab/lib/screengrab/page.html.erb +206 -0
- data/screengrab/lib/screengrab/runner.rb +336 -0
- data/screengrab/lib/screengrab/setup.rb +16 -0
- data/sigh/README.md +256 -0
- data/sigh/lib/assets/resign.sh +774 -0
- data/sigh/lib/sigh.rb +19 -0
- data/sigh/lib/sigh/commands_generator.rb +133 -0
- data/sigh/lib/sigh/download_all.rb +36 -0
- data/sigh/lib/sigh/local_manage.rb +140 -0
- data/sigh/lib/sigh/manager.rb +44 -0
- data/sigh/lib/sigh/options.rb +117 -0
- data/sigh/lib/sigh/repair.rb +30 -0
- data/sigh/lib/sigh/resign.rb +201 -0
- data/sigh/lib/sigh/runner.rb +235 -0
- data/snapshot/README.md +400 -0
- data/snapshot/lib/assets/SnapfileTemplate +36 -0
- data/snapshot/lib/assets/SnapshotHelper.swift +138 -0
- data/snapshot/lib/assets/SnapshotHelper2-3.swift +140 -0
- data/snapshot/lib/snapshot.rb +59 -0
- data/snapshot/lib/snapshot/collector.rb +92 -0
- data/snapshot/lib/snapshot/commands_generator.rb +108 -0
- data/snapshot/lib/snapshot/dependency_checker.rb +50 -0
- data/snapshot/lib/snapshot/detect_values.rb +53 -0
- data/snapshot/lib/snapshot/error_handler.rb +22 -0
- data/snapshot/lib/snapshot/fixes/README.md +5 -0
- data/snapshot/lib/snapshot/fixes/hardware_keyboard_fix.rb +14 -0
- data/snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb +25 -0
- data/snapshot/lib/snapshot/latest_os_version.rb +31 -0
- data/snapshot/lib/snapshot/options.rb +161 -0
- data/snapshot/lib/snapshot/page.html.erb +206 -0
- data/snapshot/lib/snapshot/reports_generator.rb +64 -0
- data/snapshot/lib/snapshot/reset_simulators.rb +88 -0
- data/snapshot/lib/snapshot/runner.rb +294 -0
- data/snapshot/lib/snapshot/screenshot_flatten.rb +18 -0
- data/snapshot/lib/snapshot/screenshot_rotate.rb +38 -0
- data/snapshot/lib/snapshot/setup.rb +35 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +118 -0
- data/snapshot/lib/snapshot/update.rb +29 -0
- data/spaceship/README.md +191 -0
- data/spaceship/lib/assets/languageMapping.json +240 -0
- data/spaceship/lib/assets/languageMappingReadable.json +30 -0
- data/spaceship/lib/spaceship.rb +31 -0
- data/spaceship/lib/spaceship/babosa_fix.rb +30 -0
- data/spaceship/lib/spaceship/base.rb +236 -0
- data/spaceship/lib/spaceship/client.rb +487 -0
- data/spaceship/lib/spaceship/commands_generator.rb +48 -0
- data/spaceship/lib/spaceship/du/du_client.rb +122 -0
- data/spaceship/lib/spaceship/du/upload_file.rb +56 -0
- data/spaceship/lib/spaceship/du/utilities.rb +81 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +14 -0
- data/spaceship/lib/spaceship/helper/plist_middleware.rb +15 -0
- data/spaceship/lib/spaceship/launcher.rb +94 -0
- data/spaceship/lib/spaceship/playground.rb +72 -0
- data/spaceship/lib/spaceship/portal/app.rb +148 -0
- data/spaceship/lib/spaceship/portal/app_group.rb +77 -0
- data/spaceship/lib/spaceship/portal/app_service.rb +278 -0
- data/spaceship/lib/spaceship/portal/certificate.rb +333 -0
- data/spaceship/lib/spaceship/portal/device.rb +192 -0
- data/spaceship/lib/spaceship/portal/portal.rb +8 -0
- data/spaceship/lib/spaceship/portal/portal_base.rb +13 -0
- data/spaceship/lib/spaceship/portal/portal_client.rb +491 -0
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +467 -0
- data/spaceship/lib/spaceship/portal/spaceship.rb +112 -0
- data/spaceship/lib/spaceship/portal/ui/select_team.rb +83 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +50 -0
- data/spaceship/lib/spaceship/tunes/app_details.rb +139 -0
- data/spaceship/lib/spaceship/tunes/app_image.rb +55 -0
- data/spaceship/lib/spaceship/tunes/app_ratings.rb +107 -0
- data/spaceship/lib/spaceship/tunes/app_screenshot.rb +17 -0
- data/spaceship/lib/spaceship/tunes/app_status.rb +60 -0
- data/spaceship/lib/spaceship/tunes/app_submission.rb +136 -0
- data/spaceship/lib/spaceship/tunes/app_trailer.rb +68 -0
- data/spaceship/lib/spaceship/tunes/app_version.rb +766 -0
- data/spaceship/lib/spaceship/tunes/app_version_common.rb +33 -0
- data/spaceship/lib/spaceship/tunes/app_version_generated_promocodes.rb +35 -0
- data/spaceship/lib/spaceship/tunes/app_version_history.rb +59 -0
- data/spaceship/lib/spaceship/tunes/app_version_promocodes.rb +34 -0
- data/spaceship/lib/spaceship/tunes/app_version_ref.rb +19 -0
- data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +34 -0
- data/spaceship/lib/spaceship/tunes/application.rb +437 -0
- data/spaceship/lib/spaceship/tunes/build.rb +269 -0
- data/spaceship/lib/spaceship/tunes/build_details.rb +48 -0
- data/spaceship/lib/spaceship/tunes/build_train.rb +182 -0
- data/spaceship/lib/spaceship/tunes/device_type.rb +14 -0
- data/spaceship/lib/spaceship/tunes/language_converter.rb +63 -0
- data/spaceship/lib/spaceship/tunes/language_item.rb +56 -0
- data/spaceship/lib/spaceship/tunes/pricing_tier.rb +81 -0
- data/spaceship/lib/spaceship/tunes/recovery_device.rb +69 -0
- data/spaceship/lib/spaceship/tunes/spaceship.rb +34 -0
- data/spaceship/lib/spaceship/tunes/tester.rb +283 -0
- data/spaceship/lib/spaceship/tunes/transit_app_file.rb +27 -0
- data/spaceship/lib/spaceship/tunes/tunes.rb +35 -0
- data/spaceship/lib/spaceship/tunes/tunes_base.rb +15 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +1068 -0
- data/spaceship/lib/spaceship/tunes/user_detail.rb +19 -0
- data/spaceship/lib/spaceship/tunes/version_set.rb +35 -0
- data/spaceship/lib/spaceship/two_step_client.rb +195 -0
- data/spaceship/lib/spaceship/ui.rb +27 -0
- data/supply/README.md +214 -0
- data/supply/lib/supply.rb +29 -0
- data/supply/lib/supply/apk_listing.rb +14 -0
- data/supply/lib/supply/client.rb +345 -0
- data/supply/lib/supply/commands_generator.rb +62 -0
- data/supply/lib/supply/listing.rb +32 -0
- data/supply/lib/supply/options.rb +135 -0
- data/supply/lib/supply/setup.rb +102 -0
- data/supply/lib/supply/uploader.rb +221 -0
- metadata +699 -428
- data/bin//360/237/232/200 +0 -5
- data/lib/.DS_Store +0 -0
- data/lib/assets/.DS_Store +0 -0
- data/lib/assets/completions/.DS_Store +0 -0
- data/lib/fastlane/.DS_Store +0 -0
- data/lib/fastlane/actions/gym.rb +0 -90
- data/lib/fastlane/actions/reset_simulators.rb +0 -44
- data/lib/fastlane/cli_tools_distributor.rb +0 -100
- data/lib/fastlane/setup/.DS_Store +0 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
module Frameit
|
2
|
+
class FrameDownloader
|
3
|
+
FRAME_PATH = '.frameit/devices_frames_2'
|
4
|
+
HOST_URL = "https://fastlane.github.io/frameit-frames"
|
5
|
+
|
6
|
+
def download_frames
|
7
|
+
print_disclaimer
|
8
|
+
|
9
|
+
require 'json'
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
UI.message("Downloading device frames...")
|
13
|
+
FileUtils.mkdir_p(templates_path)
|
14
|
+
|
15
|
+
frames_version = download_file("version.txt")
|
16
|
+
File.write(File.join(templates_path, "version.txt"), frames_version)
|
17
|
+
UI.important("Using frame version '#{frames_version}', you can optionally lock that version in your Framefile.json using `device_frame_version`")
|
18
|
+
|
19
|
+
files = JSON.parse(download_file("files.json"))
|
20
|
+
files.each_with_index do |current, index|
|
21
|
+
content = download_file(current, txt: "#{index + 1} of #{files.count} files")
|
22
|
+
File.write(File.join(templates_path, current), content)
|
23
|
+
end
|
24
|
+
File.write(File.join(templates_path, "offsets.json"), download_file("offsets.json"))
|
25
|
+
|
26
|
+
UI.success("Successfully downloaded all required image assets")
|
27
|
+
end
|
28
|
+
|
29
|
+
def frames_exist?(version: "latest")
|
30
|
+
Dir["#{templates_path}/*.png"].count > 0 && File.read(File.join(templates_path, "version.txt")).to_i > 0
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.templates_path
|
34
|
+
File.join(ENV['HOME'], FRAME_PATH, Frameit.frames_version)
|
35
|
+
end
|
36
|
+
|
37
|
+
def templates_path
|
38
|
+
self.class.templates_path
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_disclaimer
|
42
|
+
UI.header "Device frames disclaimer"
|
43
|
+
UI.important "All used device frames are available via Facebook Design: http://facebook.design/devices"
|
44
|
+
UI.message "----------------------------------------"
|
45
|
+
UI.message "While Facebook has redrawn and shares these assets for the benefit"
|
46
|
+
UI.message "of the design community, Facebook does not own any of the underlying"
|
47
|
+
UI.message "product or user interface designs."
|
48
|
+
UI.message "By accessing these assets, you agree to obtain all necessary permissions"
|
49
|
+
UI.message "from the underlying rights holders and/or adhere to any applicable brand"
|
50
|
+
UI.message "use guidelines before using them."
|
51
|
+
UI.message "Facebook disclaims all express or implied warranties with respect to these assets, including"
|
52
|
+
UI.message "non-infringement of intellectual property rights."
|
53
|
+
UI.message "----------------------------------------"
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def download_file(path, txt: "file")
|
59
|
+
require 'uri'
|
60
|
+
|
61
|
+
url = File.join(HOST_URL, Frameit.frames_version, URI.escape(path))
|
62
|
+
UI.message("Downloading #{txt} from '#{url}' ...")
|
63
|
+
body = Excon.get(url).body
|
64
|
+
raise body if body.include?("<Error>")
|
65
|
+
return body
|
66
|
+
rescue => ex
|
67
|
+
UI.error(ex)
|
68
|
+
UI.user_error!("Error accessing URL '#{url}'")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Frameit
|
2
|
+
# Responsible for framing Mac Screenshots
|
3
|
+
class MacEditor < Editor
|
4
|
+
def prepare_image
|
5
|
+
image = super
|
6
|
+
image.resize("#{offset['width']}x") if offset['width']
|
7
|
+
end
|
8
|
+
|
9
|
+
def put_device_into_background(background)
|
10
|
+
self.top_space_above_device = offset['titleHeight'] # needed for centering the title
|
11
|
+
|
12
|
+
@image = background.composite(image, "png") do |c|
|
13
|
+
c.compose "Over"
|
14
|
+
c.geometry offset['offset']
|
15
|
+
end
|
16
|
+
|
17
|
+
return image
|
18
|
+
end
|
19
|
+
|
20
|
+
def load_frame
|
21
|
+
nil # Macs don't need frames - backgrounds only
|
22
|
+
end
|
23
|
+
|
24
|
+
def should_add_title?
|
25
|
+
true # Mac screenshots always need a background
|
26
|
+
end
|
27
|
+
|
28
|
+
def generate_background
|
29
|
+
MiniMagick::Image.open(fetch_config['background']) # no resizing on the Mac
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Frameit
|
2
|
+
class Offsets
|
3
|
+
# Returns the image offset needed for a certain device type for a given orientation
|
4
|
+
# uses deliver to detect the screen size
|
5
|
+
def self.image_offset(screenshot)
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
unless @offsets
|
9
|
+
offsets_json_path = File.join(FrameDownloader.new.templates_path, "offsets.json")
|
10
|
+
UI.user_error!("Could not find offsets.json file at path '#{offsets_json_path}'") unless File.exist?(offsets_json_path)
|
11
|
+
@offsets = JSON.parse(File.read(offsets_json_path))
|
12
|
+
end
|
13
|
+
|
14
|
+
offset_value = @offsets["portrait"][screenshot.device_name]
|
15
|
+
UI.error("Tried looking for offset information for 'portrait', #{screenshot.device_name}") unless offset_value
|
16
|
+
return offset_value
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Frameit
|
2
|
+
class Options
|
3
|
+
def self.available_options
|
4
|
+
@options ||= [
|
5
|
+
|
6
|
+
FastlaneCore::ConfigItem.new(key: :white,
|
7
|
+
env_name: "FRAMEIT_WHITE_FRAME",
|
8
|
+
description: "Use white device frames",
|
9
|
+
optional: true,
|
10
|
+
is_string: false),
|
11
|
+
FastlaneCore::ConfigItem.new(key: :silver,
|
12
|
+
description: "Use white device frames. Alias for :white",
|
13
|
+
optional: true,
|
14
|
+
is_string: false),
|
15
|
+
FastlaneCore::ConfigItem.new(key: :rose_gold,
|
16
|
+
description: "Use rose gold device frames. Alias for :rose_gold",
|
17
|
+
optional: true,
|
18
|
+
is_string: false),
|
19
|
+
FastlaneCore::ConfigItem.new(key: :gold,
|
20
|
+
description: "Use gold device frames. Alias for :gold",
|
21
|
+
optional: true,
|
22
|
+
is_string: false),
|
23
|
+
FastlaneCore::ConfigItem.new(key: :force_device_type,
|
24
|
+
env_name: "FRAMEIT_FORCE_DEVICE_TYPE",
|
25
|
+
description: "Forces a given device type, useful for Mac screenshots, as their sizes vary",
|
26
|
+
optional: true,
|
27
|
+
verify_block: proc do |value|
|
28
|
+
available = ['iPhone_6_Plus', 'iPhone_5s', 'iPhone_4', 'iPad_mini', 'Mac']
|
29
|
+
unless available.include? value
|
30
|
+
UI.user_error!("Invalid device type '#{value}'. Available values: #{available}")
|
31
|
+
end
|
32
|
+
end),
|
33
|
+
FastlaneCore::ConfigItem.new(key: :use_legacy_iphone5s,
|
34
|
+
env_name: "FRAMEIT_USE_LEGACY_IPHONE_5_S",
|
35
|
+
is_string: false,
|
36
|
+
description: "use iPhone 5s instead of iPhone SE frames",
|
37
|
+
default_value: false),
|
38
|
+
FastlaneCore::ConfigItem.new(key: :use_legacy_iphone6s,
|
39
|
+
env_name: "FRAMEIT_USE_LEGACY_IPHONE_6_S",
|
40
|
+
is_string: false,
|
41
|
+
description: "Use iPhone 6s frames instead of iPhone 7 frames",
|
42
|
+
default_value: false)
|
43
|
+
]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'deliver'
|
2
|
+
require 'fastimage'
|
3
|
+
|
4
|
+
module Frameit
|
5
|
+
class Runner
|
6
|
+
def initialize
|
7
|
+
downloader = FrameDownloader.new
|
8
|
+
unless downloader.frames_exist?
|
9
|
+
downloader.download_frames
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def run(path, color = nil)
|
14
|
+
unless color
|
15
|
+
color = Frameit::Color::BLACK
|
16
|
+
color = Frameit::Color::SILVER if Frameit.config[:white] || Frameit.config[:silver]
|
17
|
+
color = Frameit::Color::GOLD if Frameit.config[:gold]
|
18
|
+
color = Frameit::Color::ROSE_GOLD if Frameit.config[:rose_gold]
|
19
|
+
end
|
20
|
+
|
21
|
+
screenshots = Dir.glob("#{path}/**/*.{png,PNG}").uniq # uniq because thanks to {png,PNG} there are duplicates
|
22
|
+
|
23
|
+
if screenshots.count > 0
|
24
|
+
screenshots.each do |full_path|
|
25
|
+
next if full_path.include? "_framed.png"
|
26
|
+
next if full_path.include? ".itmsp/" # a package file, we don't want to modify that
|
27
|
+
next if full_path.include? "device_frames/" # these are the device frames the user is using
|
28
|
+
next if full_path.downcase.include? "watch" # we don't care about watches right now
|
29
|
+
|
30
|
+
UI.message("Framing screenshot '#{full_path}'")
|
31
|
+
|
32
|
+
begin
|
33
|
+
screenshot = Screenshot.new(full_path, color)
|
34
|
+
screenshot.frame!
|
35
|
+
rescue => ex
|
36
|
+
UI.error ex.to_s
|
37
|
+
UI.error "Backtrace:\n\t#{ex.backtrace.join("\n\t")}" if $verbose
|
38
|
+
end
|
39
|
+
end
|
40
|
+
else
|
41
|
+
UI.error "Could not find screenshots in current directory: '#{File.expand_path(path)}'"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Frameit
|
2
|
+
# Represents one screenshot
|
3
|
+
class Screenshot
|
4
|
+
attr_accessor :path # path to the screenshot
|
5
|
+
attr_accessor :size # size in px array of 2 elements: height and width
|
6
|
+
attr_accessor :screen_size # deliver screen size type, is unique per device type, used in device_name
|
7
|
+
attr_accessor :color # the color to use for the frame (from Frameit::Color)
|
8
|
+
|
9
|
+
# path: Path to screenshot
|
10
|
+
# color: Color to use for the frame
|
11
|
+
def initialize(path, color)
|
12
|
+
UI.user_error "Couldn't find file at path '#{path}'" unless File.exist? path
|
13
|
+
@color = color
|
14
|
+
@path = path
|
15
|
+
@size = FastImage.size(path)
|
16
|
+
|
17
|
+
@screen_size = ENV["FRAMEIT_FORCE_DEVICE_TYPE"] || Deliver::AppScreenshot.calculate_screen_size(path)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Device name for a given screen size. Used to use the correct template
|
21
|
+
def device_name
|
22
|
+
sizes = Deliver::AppScreenshot::ScreenSize
|
23
|
+
case @screen_size
|
24
|
+
when sizes::IOS_55
|
25
|
+
return Frameit.config[:use_legacy_iphone6s] ? 'iPhone 6s Plus' : 'iPhone 7 Plus'
|
26
|
+
when sizes::IOS_47
|
27
|
+
return Frameit.config[:use_legacy_iphone6s] ? 'iPhone 6s' : 'iPhone 7'
|
28
|
+
when sizes::IOS_40
|
29
|
+
return Frameit.config[:use_legacy_iphone5s] ? 'iPhone 5s' : 'iPhone SE'
|
30
|
+
when sizes::IOS_35
|
31
|
+
return 'iPhone 4'
|
32
|
+
when sizes::IOS_IPAD
|
33
|
+
return 'iPad Air 2'
|
34
|
+
when sizes::IOS_IPAD_PRO
|
35
|
+
return 'iPad Pro'
|
36
|
+
when sizes::MAC
|
37
|
+
return 'MacBook'
|
38
|
+
else
|
39
|
+
UI.error "Unknown device type for size #{@screen_size} for path '#{path}'"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def color
|
44
|
+
if !Frameit.config[:use_legacy_iphone6s] && @color == Frameit::Color::BLACK
|
45
|
+
if @screen_size == Deliver::AppScreenshot::ScreenSize::IOS_55 || @screen_size == Deliver::AppScreenshot::ScreenSize::IOS_47
|
46
|
+
return "Matte Black" # RIP space gray
|
47
|
+
end
|
48
|
+
end
|
49
|
+
return @color
|
50
|
+
end
|
51
|
+
|
52
|
+
# Is the device a 3x device? (e.g. 6 Plus)
|
53
|
+
def triple_density?
|
54
|
+
(screen_size == Deliver::AppScreenshot::ScreenSize::IOS_55)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Super old devices (iPhone 4)
|
58
|
+
def mini?
|
59
|
+
(screen_size == Deliver::AppScreenshot::ScreenSize::IOS_35)
|
60
|
+
end
|
61
|
+
|
62
|
+
def mac?
|
63
|
+
return device_name == 'Mac'
|
64
|
+
end
|
65
|
+
|
66
|
+
# The name of the orientation of a screenshot. Used to find the correct template
|
67
|
+
def orientation_name
|
68
|
+
return Orientation::PORTRAIT if size[0] < size[1]
|
69
|
+
return Orientation::LANDSCAPE
|
70
|
+
end
|
71
|
+
|
72
|
+
def portrait?
|
73
|
+
return (orientation_name == Orientation::PORTRAIT)
|
74
|
+
end
|
75
|
+
|
76
|
+
def to_s
|
77
|
+
self.path
|
78
|
+
end
|
79
|
+
|
80
|
+
# Add the device frame, this will also call the method that adds the background + title
|
81
|
+
def frame!
|
82
|
+
if self.mac?
|
83
|
+
MacEditor.new.frame!(self)
|
84
|
+
else
|
85
|
+
Editor.new.frame!(self)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Frameit
|
2
|
+
# This class will parse the .string files
|
3
|
+
class StringsParser
|
4
|
+
def self.parse(path)
|
5
|
+
UI.user_error! "Couldn't find strings file at path '#{path}'" unless File.exist? path
|
6
|
+
UI.user_error! "Must be .strings file, only got '#{path}'" unless path.end_with? ".strings"
|
7
|
+
|
8
|
+
result = {}
|
9
|
+
|
10
|
+
# A .strings file is UTF-16 encoded. We only want to deal with UTF-8
|
11
|
+
content = `iconv -f UTF-16 -t UTF-8 '#{path}'`
|
12
|
+
|
13
|
+
content.split("\n").each_with_index do |line, index|
|
14
|
+
begin
|
15
|
+
# We don't care about comments and empty lines
|
16
|
+
if line.start_with? '"'
|
17
|
+
key = line.match(/"(.*)" \= /)[1]
|
18
|
+
value = line.match(/ \= "(.*)"/)[1]
|
19
|
+
|
20
|
+
result[key] = value
|
21
|
+
end
|
22
|
+
rescue => ex
|
23
|
+
UI.error "Error parsing #{path} line #{index + 1}: '#{line}'"
|
24
|
+
UI.verbose "#{ex.message}\n#{ex.backtrace.join('\n')}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if result.empty?
|
29
|
+
UI.error "Empty parsing result for #{path}. Please make sure the file is valid and UTF16 Big-endian encoded"
|
30
|
+
end
|
31
|
+
|
32
|
+
result
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Frameit
|
2
|
+
# Responsible for finding the correct device
|
3
|
+
class TemplateFinder
|
4
|
+
# This will detect the screen size and choose the correct template
|
5
|
+
def self.get_template(screenshot)
|
6
|
+
return nil if screenshot.mac?
|
7
|
+
|
8
|
+
filename = "Apple #{screenshot.device_name} #{screenshot.color}"
|
9
|
+
|
10
|
+
templates = Dir["#{FrameDownloader.templates_path}/#{filename}.{png,jpg}"] # ~/.frameit folder
|
11
|
+
|
12
|
+
UI.verbose "Looking for #{filename} and found #{templates.count} template(s)"
|
13
|
+
|
14
|
+
if templates.count == 0
|
15
|
+
if screenshot.screen_size == Deliver::AppScreenshot::ScreenSize::IOS_35
|
16
|
+
UI.important "Unfortunately 3.5\" device frames were discontinued. Skipping screen '#{screenshot.path}'"
|
17
|
+
UI.error "Looked for: '#{filename}.png'"
|
18
|
+
elsif screenshot.color == Frameit::Color::ROSE_GOLD || screenshot.color == Frameit::Color::GOLD
|
19
|
+
# Unfortunately not every device type is available in rose gold or gold
|
20
|
+
# This is why we can't have nice things #yatusabes
|
21
|
+
# fallback to a white iPhone, which looks similar
|
22
|
+
UI.important("Unfortunatey device type '#{screenshot.device_name}' is not available in #{screenshot.color}, falling back to silver...")
|
23
|
+
screenshot.color = Frameit::Color::SILVER
|
24
|
+
return self.get_template(screenshot)
|
25
|
+
else
|
26
|
+
UI.error("Couldn't find template for screenshot type '#{filename}'")
|
27
|
+
UI.error("Please run `frameit download_frames` to download the latest frames")
|
28
|
+
end
|
29
|
+
return filename if Helper.test?
|
30
|
+
return nil
|
31
|
+
else
|
32
|
+
return templates.first.tr(" ", "\ ")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/gym/README.md
ADDED
@@ -0,0 +1,288 @@
|
|
1
|
+
<h3 align="center">
|
2
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
|
3
|
+
<img src="../fastlane/assets/fastlane.png" width="150" />
|
4
|
+
<br />
|
5
|
+
fastlane
|
6
|
+
</a>
|
7
|
+
</h3>
|
8
|
+
<p align="center">
|
9
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/deliver">deliver</a> •
|
10
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/snapshot">snapshot</a> •
|
11
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/frameit">frameit</a> •
|
12
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pem">pem</a> •
|
13
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/sigh">sigh</a> •
|
14
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/produce">produce</a> •
|
15
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/cert">cert</a> •
|
16
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/spaceship">spaceship</a> •
|
17
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pilot">pilot</a> •
|
18
|
+
<a href="https://github.com/fastlane/boarding">boarding</a> •
|
19
|
+
<b>gym</b> •
|
20
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/scan">scan</a> •
|
21
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/match">match</a>
|
22
|
+
</p>
|
23
|
+
-------
|
24
|
+
|
25
|
+
<p align="center">
|
26
|
+
<img src="assets/gym.png" height="110">
|
27
|
+
</p>
|
28
|
+
|
29
|
+
gym
|
30
|
+
============
|
31
|
+
|
32
|
+
[![Twitter: @KauseFx](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
|
33
|
+
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/gym/LICENSE)
|
34
|
+
[![Gem](https://img.shields.io/gem/v/gym.svg?style=flat)](http://rubygems.org/gems/gym)
|
35
|
+
|
36
|
+
###### Building your app has never been easier
|
37
|
+
|
38
|
+
Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.com/FastlaneTools)
|
39
|
+
|
40
|
+
-------
|
41
|
+
<p align="center">
|
42
|
+
<a href="#whats-gym">Features</a> •
|
43
|
+
<a href="#installation">Installation</a> •
|
44
|
+
<a href="#usage">Usage</a> •
|
45
|
+
<a href="#tips">Tips</a> •
|
46
|
+
<a href="#need-help">Need help?</a>
|
47
|
+
</p>
|
48
|
+
|
49
|
+
-------
|
50
|
+
|
51
|
+
<h5 align="center"><code>gym</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
52
|
+
|
53
|
+
# What's gym?
|
54
|
+
|
55
|
+
`gym` builds and packages iOS and macOS apps for you. It takes care of all the heavy lifting and makes it super easy to generate a signed `ipa` or `app` file :muscle:
|
56
|
+
|
57
|
+
`gym` is a replacement for [shenzhen](https://github.com/nomad/shenzhen).
|
58
|
+
|
59
|
+
### Before `gym`
|
60
|
+
|
61
|
+
```
|
62
|
+
xcodebuild clean archive -archivePath build/MyApp \
|
63
|
+
-scheme MyApp
|
64
|
+
xcodebuild -exportArchive \
|
65
|
+
-exportFormat ipa \
|
66
|
+
-archivePath "build/MyApp.xcarchive" \
|
67
|
+
-exportPath "build/MyApp.ipa" \
|
68
|
+
-exportProvisioningProfile "ProvisioningProfileName"
|
69
|
+
```
|
70
|
+
|
71
|
+
### With `gym`
|
72
|
+
|
73
|
+
```
|
74
|
+
fastlane gym
|
75
|
+
```
|
76
|
+
|
77
|
+
### Why `gym`?
|
78
|
+
|
79
|
+
`gym` uses the latest APIs to build and sign your application which results in much faster build times.
|
80
|
+
|
81
|
+
| Gym Features
|
82
|
+
--------------------------|------------------------------------------------------------
|
83
|
+
:rocket: | `gym` builds 30% faster than other build tools like [shenzhen](https://github.com/nomad/shenzhen)
|
84
|
+
:checkered_flag: | Beautiful inline build output
|
85
|
+
:book: | Helps you resolve common build errors like code signing issues
|
86
|
+
:mountain_cableway: | Sensible defaults: Automatically detect the project, its schemes and more
|
87
|
+
:link: | Works perfectly with [fastlane](https://fastlane.tools) and other tools
|
88
|
+
:package: | Automatically generates an `ipa` and a compressed `dSYM` file
|
89
|
+
:bullettrain_side: | Don't remember any complicated build commands, just `gym`
|
90
|
+
:wrench: | Easy and dynamic configuration using parameters and environment variables
|
91
|
+
:floppy_disk: | Store common build settings in a `Gymfile`
|
92
|
+
:outbox_tray: | All archives are stored and accessible in the Xcode Organizer
|
93
|
+
:computer: | Supports both iOS and Mac applications
|
94
|
+
|
95
|
+
![assets/gymScreenshot.png](assets/gymScreenshot.png)
|
96
|
+
|
97
|
+
-----
|
98
|
+
|
99
|
+
![assets/gym.gif](assets/gym.gif)
|
100
|
+
|
101
|
+
# Installation
|
102
|
+
|
103
|
+
sudo gem install fastlane
|
104
|
+
|
105
|
+
Make sure, you have the latest version of the Xcode command line tools installed:
|
106
|
+
|
107
|
+
xcode-select --install
|
108
|
+
|
109
|
+
# Usage
|
110
|
+
|
111
|
+
fastlane gym
|
112
|
+
|
113
|
+
That's all you need to build your application. If you want more control, here are some available parameters:
|
114
|
+
|
115
|
+
fastlane gym --workspace "Example.xcworkspace" --scheme "AppName" --clean
|
116
|
+
|
117
|
+
If you need to use a different xcode install, use xcode-select or define DEVELOPER_DIR:
|
118
|
+
|
119
|
+
DEVELOPER_DIR="/Applications/Xcode6.2.app" gym
|
120
|
+
|
121
|
+
For a list of all available parameters use
|
122
|
+
|
123
|
+
fastlane gym --help
|
124
|
+
|
125
|
+
If you run into any issues, use the `verbose` mode to get more information
|
126
|
+
|
127
|
+
fastlane gym --verbose
|
128
|
+
|
129
|
+
In general, if you run into issues while exporting the archive, try using:
|
130
|
+
|
131
|
+
fastlane gym --use_legacy_build_api
|
132
|
+
|
133
|
+
Set the right export method if you're not uploading to App Store or TestFlight:
|
134
|
+
|
135
|
+
fastlane gym --export_method ad-hoc
|
136
|
+
|
137
|
+
To pass boolean parameters make sure to use `gym` like this:
|
138
|
+
|
139
|
+
fastlane gym --include_bitcode true --include_symbols false
|
140
|
+
|
141
|
+
To access the raw `xcodebuild` output open `~/Library/Logs/gym`
|
142
|
+
|
143
|
+
# Gymfile
|
144
|
+
|
145
|
+
Since you might want to manually trigger a new build but don't want to specify all the parameters every time, you can store your defaults in a so called `Gymfile`.
|
146
|
+
|
147
|
+
Run `fastlane gym init` to create a new configuration file. Example:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
scheme "Example"
|
151
|
+
|
152
|
+
sdk "iphoneos9.0"
|
153
|
+
|
154
|
+
clean true
|
155
|
+
|
156
|
+
output_directory "./build" # store the ipa in this folder
|
157
|
+
output_name "MyApp" # the name of the ipa file
|
158
|
+
```
|
159
|
+
|
160
|
+
## Export options
|
161
|
+
|
162
|
+
Since Xcode 7, `gym` is using new Xcode API which allows us to specify export options using `plist` file. By default `gym` creates this file for you and you are able to modify some parameters by using `export_method`, `export_team_id`, `include_symbols` or `include_bitcode`. If you want to have more options, like creating manifest file or app thinning, you can provide your own `plist` file:
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
export_options "./ExportOptions.plist"
|
166
|
+
```
|
167
|
+
|
168
|
+
or you can provide hash of values directly in the `Gymfile`:
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
export_options(
|
172
|
+
method: "ad-hoc",
|
173
|
+
manifest: {
|
174
|
+
appURL: "https://example.com/My App.ipa",
|
175
|
+
},
|
176
|
+
thinning: "<thin-for-all-variants>"
|
177
|
+
)
|
178
|
+
```
|
179
|
+
|
180
|
+
For the list of available options run `xcodebuild -help`.
|
181
|
+
|
182
|
+
## Setup code signing
|
183
|
+
|
184
|
+
- [More information on how to get started with codesigning](https://docs.fastlane.tools/codesigning/getting-started/)
|
185
|
+
- [Docs on how to set up your Xcode project](https://docs.fastlane.tools/codesigning/xcode-project/)
|
186
|
+
|
187
|
+
## Automating the whole process
|
188
|
+
|
189
|
+
`gym` works great together with [fastlane](https://fastlane.tools), which connects all deployment tools into one streamlined workflow.
|
190
|
+
|
191
|
+
Using `fastlane` you can define a configuration like
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
lane :beta do
|
195
|
+
scan
|
196
|
+
gym(scheme: "MyApp")
|
197
|
+
crashlytics
|
198
|
+
end
|
199
|
+
```
|
200
|
+
|
201
|
+
You can then easily switch between the beta provider (e.g. `testflight`, `hockey`, `s3` and more).
|
202
|
+
|
203
|
+
For more information visit the [fastlane GitHub page](https://github.com/fastlane/fastlane/tree/master/fastlane).
|
204
|
+
|
205
|
+
# How does it work?
|
206
|
+
|
207
|
+
`gym` uses the latest APIs to build and sign your application. The 2 main components are
|
208
|
+
|
209
|
+
- `xcodebuild`
|
210
|
+
- [xcpretty](https://github.com/supermarin/xcpretty)
|
211
|
+
|
212
|
+
When you run `gym` without the `--silent` mode it will print out every command it executes.
|
213
|
+
|
214
|
+
To build the archive `gym` uses the following command:
|
215
|
+
|
216
|
+
```
|
217
|
+
set -o pipefail && \
|
218
|
+
xcodebuild -scheme 'Example' \
|
219
|
+
-project './Example.xcodeproj' \
|
220
|
+
-configuration 'Release' \
|
221
|
+
-destination 'generic/platform=iOS' \
|
222
|
+
-archivePath '/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive' \
|
223
|
+
archive | xcpretty
|
224
|
+
```
|
225
|
+
|
226
|
+
After building the archive it is being checked by `gym`. If it's valid, it gets packaged up and signed into an `ipa` file.
|
227
|
+
|
228
|
+
`gym` automatically chooses a different packaging method depending on the version of Xcode you're using.
|
229
|
+
|
230
|
+
### Xcode 7 and above
|
231
|
+
|
232
|
+
```
|
233
|
+
/usr/bin/xcrun path/to/xcbuild-safe.sh -exportArchive \
|
234
|
+
-exportOptionsPlist '/tmp/gym_config_1442852529.plist' \
|
235
|
+
-archivePath '/Users/fkrause/Library/Developer/Xcode/Archives/2015-09-21/App 2015-09-21 09.21.56.xcarchive' \
|
236
|
+
-exportPath '/tmp/1442852529'
|
237
|
+
```
|
238
|
+
|
239
|
+
`gym` makes use of the new Xcode 7 API which allows us to specify the export options using a `plist` file. You can find more information about the available options by running `xcodebuild --help`.
|
240
|
+
|
241
|
+
Using this method there are no workarounds for WatchKit or Swift required, as it uses the same technique Xcode uses when exporting your binary.
|
242
|
+
|
243
|
+
Note: the [xcbuild-safe.sh script](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh) wraps around xcodebuild to workaround some incompatibilities.
|
244
|
+
|
245
|
+
### Xcode 6 and below
|
246
|
+
|
247
|
+
```
|
248
|
+
/usr/bin/xcrun /path/to/PackageApplication4Gym -v \
|
249
|
+
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive/Products/Applications/name.app' -o \
|
250
|
+
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName.ipa' \
|
251
|
+
--sign "identity" --embed "provProfile"
|
252
|
+
```
|
253
|
+
|
254
|
+
Note: the official PackageApplication script is replaced by a custom PackageApplication4Gym script. This script is obtained by applying a [set of patches](https://github.com/fastlane/fastlane/tree/master/gym/lib/assets/package_application_patches) on the fly to fix some known issues in the official Xcode PackageApplication script.
|
255
|
+
|
256
|
+
Afterwards the `ipa` file is moved to the output folder. The `dSYM` file is compressed and moved to the output folder as well.
|
257
|
+
|
258
|
+
# Tips
|
259
|
+
## [`fastlane`](https://fastlane.tools) Toolchain
|
260
|
+
|
261
|
+
- [`fastlane`](https://fastlane.tools): The easiest way to automate beta deployments and releases for your iOS and Android apps
|
262
|
+
- [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
|
263
|
+
- [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
|
264
|
+
- [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
|
265
|
+
- [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
|
266
|
+
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
267
|
+
- [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
|
268
|
+
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
269
|
+
- [`pilot`](https://github.com/fastlane/fastlane/tree/master/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
270
|
+
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
271
|
+
- [`scan`](https://github.com/fastlane/fastlane/tree/master/scan): The easiest way to run tests of your iOS and Mac app
|
272
|
+
- [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
|
273
|
+
|
274
|
+
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
275
|
+
|
276
|
+
## Use the 'Provisioning Quicklook plugin'
|
277
|
+
Download and install the [Provisioning Plugin](https://github.com/chockenberry/Provisioning).
|
278
|
+
|
279
|
+
# Need help?
|
280
|
+
Please submit an issue on GitHub and provide information about your setup
|
281
|
+
|
282
|
+
# Code of Conduct
|
283
|
+
Help us keep `gym` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
284
|
+
|
285
|
+
# License
|
286
|
+
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
287
|
+
|
288
|
+
> This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
|