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,38 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
module Snapshot
|
4
|
+
# This class takes care of rotating images
|
5
|
+
class ScreenshotRotate
|
6
|
+
# @param (String) The path in which the screenshots are located in
|
7
|
+
def run(path)
|
8
|
+
UI.verbose "Rotating the screenshots (if necessary)"
|
9
|
+
rotate(path)
|
10
|
+
end
|
11
|
+
|
12
|
+
def rotate(path)
|
13
|
+
Dir.glob([path, '/**/*.png'].join('/')).each do |file|
|
14
|
+
UI.verbose "Rotating '#{file}'"
|
15
|
+
|
16
|
+
command = nil
|
17
|
+
if file.end_with? "landscapeleft.png"
|
18
|
+
command = "sips -r -90 '#{file}'"
|
19
|
+
elsif file.end_with? "landscaperight.png"
|
20
|
+
command = "sips -r 90 '#{file}'"
|
21
|
+
elsif file.end_with? "portrait_upsidedown.png"
|
22
|
+
command = "sips -r 180 '#{file}'"
|
23
|
+
end
|
24
|
+
|
25
|
+
next unless command
|
26
|
+
|
27
|
+
# Only rotate if we need to
|
28
|
+
PTY.spawn(command) do |r, w, pid|
|
29
|
+
r.sync
|
30
|
+
r.each do |line|
|
31
|
+
# We need to read this otherwise things hang
|
32
|
+
end
|
33
|
+
::Process.wait pid
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Snapshot
|
2
|
+
class Setup
|
3
|
+
# This method will take care of creating a Snapfile and other necessary files
|
4
|
+
def self.create(path)
|
5
|
+
snapfile_path = File.join(path, 'Snapfile')
|
6
|
+
|
7
|
+
if File.exist?(snapfile_path)
|
8
|
+
UI.user_error!("Snapfile already exists at path '#{snapfile_path}'. Run 'snapshot' to use snapshot.")
|
9
|
+
end
|
10
|
+
|
11
|
+
File.write(snapfile_path, File.read("#{Snapshot::ROOT}/lib/assets/SnapfileTemplate"))
|
12
|
+
File.write(File.join(path, 'SnapshotHelper.swift'), File.read("#{Snapshot::ROOT}/lib/assets/SnapshotHelper.swift"))
|
13
|
+
File.write(File.join(path, 'SnapshotHelper2-3.swift'), File.read("#{Snapshot::ROOT}/lib/assets/SnapshotHelper2-3.swift"))
|
14
|
+
|
15
|
+
puts "✅ Successfully created SnapshotHelper.swift '#{File.join(path, 'SnapshotHelper.swift')}'".green
|
16
|
+
puts "✅ Successfully created SnapshotHelper2-3.swift '#{File.join(path, 'SnapshotHelper2-3.swift')} (if your UI tests are written in Swift 2.3)'".green
|
17
|
+
puts "✅ Successfully created new Snapfile at '#{snapfile_path}'".green
|
18
|
+
|
19
|
+
puts "-------------------------------------------------------".yellow
|
20
|
+
puts "Open your Xcode project and make sure to do the following:".yellow
|
21
|
+
puts "1) Add a new UI Test target to your project".yellow
|
22
|
+
puts "2) Add the ./fastlane/SnapshotHelper.swift to your UI Test target".yellow
|
23
|
+
puts " You can move the file anywhere you want".yellow
|
24
|
+
puts "3) Call `setupSnapshot(app)` when launching your app".yellow
|
25
|
+
puts ""
|
26
|
+
puts " let app = XCUIApplication()"
|
27
|
+
puts " setupSnapshot(app)"
|
28
|
+
puts " app.launch()"
|
29
|
+
puts ""
|
30
|
+
puts "4) Add `snapshot(\"0Launch\")` to wherever you want to create the screenshots".yellow
|
31
|
+
puts ""
|
32
|
+
puts "More information on GitHub: https://github.com/fastlane/fastlane/tree/master/snapshot".green
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module Snapshot
|
2
|
+
# Responsible for building the fully working xcodebuild command
|
3
|
+
class TestCommandGenerator
|
4
|
+
class << self
|
5
|
+
def generate(device_type: nil)
|
6
|
+
parts = prefix
|
7
|
+
parts << "xcodebuild"
|
8
|
+
parts += options
|
9
|
+
parts += destination(device_type)
|
10
|
+
parts += build_settings
|
11
|
+
parts += actions
|
12
|
+
parts += suffix
|
13
|
+
parts += pipe
|
14
|
+
|
15
|
+
parts
|
16
|
+
end
|
17
|
+
|
18
|
+
def prefix
|
19
|
+
["set -o pipefail &&"]
|
20
|
+
end
|
21
|
+
|
22
|
+
# Path to the project or workspace as parameter
|
23
|
+
# This will also include the scheme (if given)
|
24
|
+
# @return [Array] The array with all the components to join
|
25
|
+
def project_path_array
|
26
|
+
proj = Snapshot.project.xcodebuild_parameters
|
27
|
+
return proj if proj.count > 0
|
28
|
+
UI.user_error!("No project/workspace found")
|
29
|
+
end
|
30
|
+
|
31
|
+
def options
|
32
|
+
config = Snapshot.config
|
33
|
+
|
34
|
+
options = []
|
35
|
+
options += project_path_array
|
36
|
+
options << "-sdk '#{config[:sdk]}'" if config[:sdk]
|
37
|
+
options << "-derivedDataPath '#{derived_data_path}'"
|
38
|
+
|
39
|
+
options
|
40
|
+
end
|
41
|
+
|
42
|
+
def build_settings
|
43
|
+
build_settings = []
|
44
|
+
build_settings << "FASTLANE_SNAPSHOT=YES"
|
45
|
+
|
46
|
+
build_settings
|
47
|
+
end
|
48
|
+
|
49
|
+
def actions
|
50
|
+
actions = []
|
51
|
+
actions << :clean if Snapshot.config[:clean]
|
52
|
+
actions << :build # https://github.com/fastlane/snapshot/issues/246
|
53
|
+
actions << :test
|
54
|
+
|
55
|
+
actions
|
56
|
+
end
|
57
|
+
|
58
|
+
def suffix
|
59
|
+
[]
|
60
|
+
end
|
61
|
+
|
62
|
+
def pipe
|
63
|
+
["| tee #{xcodebuild_log_path.shellescape} | xcpretty #{Snapshot.config[:xcpretty_args]}"]
|
64
|
+
end
|
65
|
+
|
66
|
+
def find_device(device_name, os_version = Snapshot.config[:ios_version])
|
67
|
+
# We might get this error message
|
68
|
+
# > The requested device could not be found because multiple devices matched the request.
|
69
|
+
#
|
70
|
+
# This happens when you have multiple simulators for a given device type / iOS combination
|
71
|
+
# { platform:iOS Simulator, id:1685B071-AFB2-4DC1-BE29-8370BA4A6EBD, OS:9.0, name:iPhone 5 }
|
72
|
+
# { platform:iOS Simulator, id:A141F23B-96B3-491A-8949-813B376C28A7, OS:9.0, name:iPhone 5 }
|
73
|
+
#
|
74
|
+
simulators = FastlaneCore::DeviceManager.simulators
|
75
|
+
# Sort devices with matching names by OS version, largest first, so that we can
|
76
|
+
# pick the device with the newest OS in case an exact OS match is not available
|
77
|
+
name_matches = simulators.find_all { |sim| sim.name.strip == device_name.strip }
|
78
|
+
.sort_by { |sim| Gem::Version.new(sim.os_version) }
|
79
|
+
.reverse
|
80
|
+
name_matches.find { |sim| sim.os_version == os_version } || name_matches.first
|
81
|
+
end
|
82
|
+
|
83
|
+
def device_udid(device_name, os_version = Snapshot.config[:ios_version])
|
84
|
+
device = find_device(device_name, os_version)
|
85
|
+
|
86
|
+
device ? device.udid : nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def destination(device_name)
|
90
|
+
os = device_name =~ /^Apple TV/ ? "tvOS" : "iOS"
|
91
|
+
os_version = Snapshot.config[:ios_version] || Snapshot::LatestOsVersion.version(os)
|
92
|
+
|
93
|
+
device = find_device(device_name, os_version)
|
94
|
+
if device.nil?
|
95
|
+
UI.user_error!("No device found named '#{device_name}' for version '#{os_version}'")
|
96
|
+
return
|
97
|
+
elsif device.os_version != os_version
|
98
|
+
UI.important("Using device named '#{device_name}' with version '#{device.os_version}' because no match was found for version '#{os_version}'")
|
99
|
+
end
|
100
|
+
value = "platform=#{os} Simulator,id=#{device.udid},OS=#{os_version}"
|
101
|
+
|
102
|
+
return ["-destination '#{value}'"]
|
103
|
+
end
|
104
|
+
|
105
|
+
def xcodebuild_log_path
|
106
|
+
file_name = "#{Snapshot.project.app_name}-#{Snapshot.config[:scheme]}.log"
|
107
|
+
containing = File.expand_path(Snapshot.config[:buildlog_path])
|
108
|
+
FileUtils.mkdir_p(containing)
|
109
|
+
|
110
|
+
return File.join(containing, file_name)
|
111
|
+
end
|
112
|
+
|
113
|
+
def derived_data_path
|
114
|
+
Snapshot.cache[:derived_data_path] ||= (Snapshot.config[:derived_data_path] || Dir.mktmpdir("snapshot_derived"))
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Snapshot
|
2
|
+
# Migrate helper files
|
3
|
+
class Update
|
4
|
+
# @return [Array] A list of helper files (usually just one)
|
5
|
+
def self.find_helper
|
6
|
+
Dir["./**/SnapshotHelper.swift"]
|
7
|
+
end
|
8
|
+
|
9
|
+
def update
|
10
|
+
paths = self.class.find_helper
|
11
|
+
|
12
|
+
UI.message "Found the following SnapshotHelper:"
|
13
|
+
paths.each { |p| UI.message "\t#{p}" }
|
14
|
+
UI.important "Are you sure you want to automatically update the helpers listed above?"
|
15
|
+
UI.message "This will overwrite all its content with the latest code."
|
16
|
+
UI.message "The underlying API will not change. You can always migrate manually by looking at"
|
17
|
+
UI.message "https://github.com/fastlane/fastlane/blob/master/snapshot/lib/assets/SnapshotHelper.swift"
|
18
|
+
|
19
|
+
return 1 unless UI.confirm("Overwrite configuration files?")
|
20
|
+
|
21
|
+
paths.each do |path|
|
22
|
+
UI.message "Updating '#{path}'..."
|
23
|
+
File.write(path, File.read("#{Snapshot::ROOT}/lib/assets/SnapshotHelper.swift"))
|
24
|
+
end
|
25
|
+
|
26
|
+
UI.success "Successfully updated helper files"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spaceship/README.md
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
<h3 align="center">
|
2
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
|
3
|
+
<img src="../fastlane/assets/fastlane.png" width="100" />
|
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
|
+
<b>spaceship</b> •
|
17
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pilot">pilot</a> •
|
18
|
+
<a href="https://github.com/fastlane/boarding">boarding</a> •
|
19
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/gym">gym</a> •
|
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/spaceship.png" width="470">
|
27
|
+
</p>
|
28
|
+
-------
|
29
|
+
|
30
|
+
[![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
|
31
|
+
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/spaceship/LICENSE)
|
32
|
+
[![Gem](https://img.shields.io/gem/v/spaceship.svg?style=flat)](http://rubygems.org/gems/spaceship)
|
33
|
+
|
34
|
+
`spaceship` exposes both the Apple Developer Center and the iTunes Connect API. This fast and powerful API powers parts of fastlane, and can be leveraged for more advanced fastlane features. Scripting your Developer Center workflow has never been easier!
|
35
|
+
|
36
|
+
Get in contact with the creators on Twitter: [@FastlaneTools](https://twitter.com/fastlanetools)
|
37
|
+
|
38
|
+
-------
|
39
|
+
<p align="center">
|
40
|
+
<a href="#whats-spaceship">Why?</a> •
|
41
|
+
<a href="#usage">Usage</a> •
|
42
|
+
<a href="#installation">Installation</a> •
|
43
|
+
<a href="#technical-details">Technical Details</a> •
|
44
|
+
<a href="#need-help">Need help?</a>
|
45
|
+
</p>
|
46
|
+
|
47
|
+
-------
|
48
|
+
|
49
|
+
<h5 align="center"><code>spaceship</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>
|
50
|
+
|
51
|
+
# What's spaceship?
|
52
|
+
|
53
|
+
Up until now, the [fastlane tools](https://fastlane.tools) used web scraping to interact with Apple's web services. With spaceship it is possible to directly access the underlying APIs using a simple HTTP client only.
|
54
|
+
|
55
|
+
Using spaceship, the execution time of [sigh](https://github.com/fastlane/fastlane/tree/master/sigh) was reduced from over 1 minute to less than 5 seconds.
|
56
|
+
|
57
|
+
spaceship uses a combination of 3 different API endpoints, used by the Apple Developer Portal and Xcode. As no API offers everything we need, spaceship combines all APIs for you. [More details about the APIs](#technical-details).
|
58
|
+
|
59
|
+
More details about why spaceship is useful on [spaceship.airforce](https://spaceship.airforce).
|
60
|
+
|
61
|
+
> No matter how many apps or certificates you have, spaceship **can** handle your scale.
|
62
|
+
|
63
|
+
Enough words, here is some code:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
Spaceship.login
|
67
|
+
|
68
|
+
# Create a new app
|
69
|
+
app = Spaceship.app.create!(bundle_id: "com.krausefx.app", name: "Spaceship App")
|
70
|
+
|
71
|
+
# Use an existing certificate
|
72
|
+
cert = Spaceship.certificate.production.all.first
|
73
|
+
|
74
|
+
# Create a new provisioning profile
|
75
|
+
profile = Spaceship.provisioning_profile.app_store.create!(bundle_id: app.bundle_id,
|
76
|
+
certificate: cert)
|
77
|
+
|
78
|
+
# Print the name and download the new profile
|
79
|
+
puts "Created Profile " + profile.name
|
80
|
+
profile.download
|
81
|
+
```
|
82
|
+
|
83
|
+
## Speed
|
84
|
+
|
85
|
+
How fast are tools using `spaceship` compared to web scraping?
|
86
|
+
|
87
|
+
![assets/SpaceshipRecording.gif](assets/SpaceshipRecording.gif)
|
88
|
+
|
89
|
+
# Installation
|
90
|
+
|
91
|
+
sudo gem install fastlane
|
92
|
+
|
93
|
+
# Usage
|
94
|
+
|
95
|
+
## Playground
|
96
|
+
|
97
|
+
To try `spaceship`, just run `fastlane spaceship`. It will automatically start the `spaceship playground`. It makes it super easy to try `spaceship` :rocket:
|
98
|
+
|
99
|
+
![assets/docs/Playground.png](assets/docs/Playground.png)
|
100
|
+
|
101
|
+
This requires you to install `pry` using `sudo gem install pry`. `pry` is not installed by default, as most [fastlane](https://fastlane.tools) users won't need the `spaceship playground`. You can add the `pry` dependency to your `Gemfile`.
|
102
|
+
|
103
|
+
## Apple Developer Portal API
|
104
|
+
|
105
|
+
##### Open [DeveloperPortal.md](docs/DeveloperPortal.md) for code samples
|
106
|
+
|
107
|
+
## iTunes Connect API
|
108
|
+
|
109
|
+
##### Open [iTunesConnect.md](docs/iTunesConnect.md) for code samples
|
110
|
+
|
111
|
+
## 2 Step Verification
|
112
|
+
|
113
|
+
When your Apple account has 2 factor verification enabled, you'll automatically be asked to verify your identity using your phone. The resulting session will be stored in `~/.spaceship/[email]/cookie`. The session should be valid for about one month, however there is no way to test this without actually waiting for over a month.
|
114
|
+
|
115
|
+
Since your CI system probably doesn't allow you to input values (like the verification code), you can use `spaceauth`:
|
116
|
+
|
117
|
+
```sh
|
118
|
+
spaceauth -u apple@krausefx.com
|
119
|
+
```
|
120
|
+
|
121
|
+
This will authenticate you and provide a string that can be transferred to your CI system:
|
122
|
+
|
123
|
+
```
|
124
|
+
export FASTLANE_SESSION='---\n- !ruby/object:HTTP::Cookie\n name: DES5c148586dfd451e55afbaaa5f62418f91\n value: HSARMTKNSRVTWFla1+yO4gVPowH17VaaaxPFnUdMUegQZxqy1Ie1c2v6bM1vSOzIbuOmrl/FNenlScsd/NbF7/Lw4cpnL15jsyg0TOJwP32tC/NguPiyOaaaU+jrj4tf4uKdIywVaaaFSRVT\n domain: idmsa.apple.com\n for_domain: true\n path: "/"\n secure: true\n httponly: true\n expires: 2016-04-27 23:55:56.000000000 Z\n max_age: \n created_at: 2016-03-28 16:55:57.032086000 -07:00\n accessed_at: 2016-03-28 19:11:17.828141000 -07:00\n'
|
125
|
+
```
|
126
|
+
|
127
|
+
Copy everything from `---\n` to your CI server and provide it as environment variable named `FASTLANE_SESSION`.
|
128
|
+
|
129
|
+
### _spaceship_ in use
|
130
|
+
|
131
|
+
All [fastlane tools](https://fastlane.tools) that communicate with Apple's web services in some way, use _spaceship_ to do so.
|
132
|
+
|
133
|
+
# Technical Details
|
134
|
+
|
135
|
+
## HTTP Client
|
136
|
+
|
137
|
+
Up until now all [fastlane tools](https://fastlane.tools) used web scraping to interact with Apple's web services. `spaceship` uses a simple HTTP client only, resulting in much less overhead and extremely improved speed.
|
138
|
+
|
139
|
+
Advantages of `spaceship` (HTTP client) over web scraping:
|
140
|
+
|
141
|
+
- Blazing fast :rocket: 90% faster than previous methods
|
142
|
+
- No more overhead by loading images, HTML, JS and CSS files on each page load
|
143
|
+
- Great test coverage by stubbing server responses
|
144
|
+
- Resistant against design changes of the Apple Developer Portal
|
145
|
+
- Automatic re-trying of requests in case a timeout occurs
|
146
|
+
|
147
|
+
## API Endpoints
|
148
|
+
|
149
|
+
Overview of the used API endpoints
|
150
|
+
|
151
|
+
- `https://idmsa.apple.com`: Used to authenticate to get a valid session
|
152
|
+
- `https://developerservices2.apple.com`:
|
153
|
+
- Get a list of all available provisioning profiles
|
154
|
+
- Register new devices
|
155
|
+
- `https://developer.apple.com`:
|
156
|
+
- List all devices, certificates, apps and app groups
|
157
|
+
- Create new certificates, provisioning profiles and apps
|
158
|
+
- Disable/enable services on apps and assign them to app groups
|
159
|
+
- Delete certificates and apps
|
160
|
+
- Repair provisioning profiles
|
161
|
+
- Download provisioning profiles
|
162
|
+
- Team selection
|
163
|
+
- `https://itunesconnect.apple.com`:
|
164
|
+
- Managing apps
|
165
|
+
- Managing beta testers
|
166
|
+
- Submitting updates to review
|
167
|
+
- Managing app metadata
|
168
|
+
- `https://du-itc.itunesconnect.apple.com`:
|
169
|
+
- Upload icons, screenshots, trailers ...
|
170
|
+
|
171
|
+
`spaceship` uses all those API points to offer this seamless experience.
|
172
|
+
|
173
|
+
## Magic involved
|
174
|
+
|
175
|
+
`spaceship` does a lot of magic to get everything working so neatly:
|
176
|
+
|
177
|
+
- **Sensible Defaults**: You only have to provide the mandatory information (e.g. new provisioning profiles contain all devices by default)
|
178
|
+
- **Local Validation**: When pushing changes back to the Apple Dev Portal `spaceship` will make sure only valid data is sent to Apple (e.g. automatic repairing of provisioning profiles)
|
179
|
+
- **Various request/response types**: When working with the different API endpoints, `spaceship` has to deal with `JSON`, `XML`, `txt`, `plist` and sometimes even `HTML` responses and requests.
|
180
|
+
- **Automatic Pagination**: Even if you have thousands of apps, profiles or certificates, `spaceship` **can** handle your scale. It was heavily tested by first using `spaceship` to create hundreds of profiles and then accessing them using `spaceship`.
|
181
|
+
- **Session, Cookie and CSRF token**: All the security aspects are handled by `spaceship`.
|
182
|
+
- **Profile Magic**: Create and upload code signing requests, all managed by `spaceship`
|
183
|
+
- **Multiple Spaceship**: You can launch multiple `spaceships` with different Apple accounts to do things like syncing the registered devices.
|
184
|
+
|
185
|
+
# Code of Conduct
|
186
|
+
Help us keep `fastlane` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
187
|
+
|
188
|
+
# License
|
189
|
+
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
190
|
+
|
191
|
+
> This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
|
@@ -0,0 +1,240 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"locale": "cmn-Hans",
|
4
|
+
"name": "Simplified Chinese",
|
5
|
+
"game-center": true,
|
6
|
+
"itc_locale": "zh-Hans"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"locale": "cmn-Hant",
|
10
|
+
"name": "Traditional Chinese",
|
11
|
+
"game-center": true,
|
12
|
+
"itc_locale": "zh-Hant"
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"locale": "da-DK",
|
16
|
+
"name": "Danish",
|
17
|
+
"game-center": true,
|
18
|
+
"alternatives": [
|
19
|
+
"da"
|
20
|
+
],
|
21
|
+
"itc_locale": "da"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"locale": "nl-NL",
|
25
|
+
"name": "Dutch",
|
26
|
+
"game-center": true,
|
27
|
+
"alternatives": [
|
28
|
+
"nl"
|
29
|
+
]
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"locale": "en-AU",
|
33
|
+
"name": "Australian English",
|
34
|
+
"game-center": false
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"locale": "en-AU",
|
38
|
+
"name": "English_Australian",
|
39
|
+
"game-center": false
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"locale": "en-CA",
|
43
|
+
"name": "Canadian English",
|
44
|
+
"game-center": false
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"locale": "en-CA",
|
48
|
+
"name": "English_CA",
|
49
|
+
"game-center": false
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"locale": "en-GB",
|
53
|
+
"name": "UK English",
|
54
|
+
"game-center": true
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"locale": "en-GB",
|
58
|
+
"name": "English_UK",
|
59
|
+
"game-center": true
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"locale": "en-US",
|
63
|
+
"name": "English",
|
64
|
+
"game-center": true
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"locale": "fi-FI",
|
68
|
+
"name": "Finnish",
|
69
|
+
"game-center": true,
|
70
|
+
"alternatives": [
|
71
|
+
"fi"
|
72
|
+
],
|
73
|
+
"itc_locale": "fin"
|
74
|
+
},
|
75
|
+
{
|
76
|
+
"locale": "fr-CA",
|
77
|
+
"name": "Canadian French",
|
78
|
+
"game-center": false
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"locale": "fr-CA",
|
82
|
+
"name": "French_CA",
|
83
|
+
"game-center": false
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"locale": "fr-FR",
|
87
|
+
"name": "French",
|
88
|
+
"game-center": true,
|
89
|
+
"alternatives": [
|
90
|
+
"fr"
|
91
|
+
]
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"locale": "de-DE",
|
95
|
+
"name": "German",
|
96
|
+
"game-center": true,
|
97
|
+
"alternatives": [
|
98
|
+
"de"
|
99
|
+
]
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"locale": "el-GR",
|
103
|
+
"name": "Greek",
|
104
|
+
"game-center": true,
|
105
|
+
"alternatives": [
|
106
|
+
"el"
|
107
|
+
],
|
108
|
+
"itc_locale": "el"
|
109
|
+
},
|
110
|
+
{
|
111
|
+
"locale": "id-ID",
|
112
|
+
"name": "Indonesian",
|
113
|
+
"game-center": true,
|
114
|
+
"alternatives": [
|
115
|
+
"id"
|
116
|
+
],
|
117
|
+
"itc_locale": "id"
|
118
|
+
},
|
119
|
+
{
|
120
|
+
"locale": "it-IT",
|
121
|
+
"name": "Italian",
|
122
|
+
"game-center": true,
|
123
|
+
"alternatives": [
|
124
|
+
"it"
|
125
|
+
],
|
126
|
+
"itc_locale": "it"
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"locale": "ja-JP",
|
130
|
+
"name": "Japanese",
|
131
|
+
"game-center": true,
|
132
|
+
"alternatives": [
|
133
|
+
"ja"
|
134
|
+
],
|
135
|
+
"itc_locale": "ja"
|
136
|
+
},
|
137
|
+
{
|
138
|
+
"locale": "ko-KR",
|
139
|
+
"name": "Korean",
|
140
|
+
"game-center": true,
|
141
|
+
"alternatives": [
|
142
|
+
"ko"
|
143
|
+
],
|
144
|
+
"itc_locale": "ko"
|
145
|
+
},
|
146
|
+
{
|
147
|
+
"locale": "ms-MY",
|
148
|
+
"name": "Malay",
|
149
|
+
"game-center": true,
|
150
|
+
"alternatives": [
|
151
|
+
"ms"
|
152
|
+
],
|
153
|
+
"itc_locale": "ms"
|
154
|
+
},
|
155
|
+
{
|
156
|
+
"locale": "no-NO",
|
157
|
+
"name": "Norwegian",
|
158
|
+
"game-center": true,
|
159
|
+
"alternatives": [
|
160
|
+
"no"
|
161
|
+
],
|
162
|
+
"itc_locale": "no"
|
163
|
+
},
|
164
|
+
{
|
165
|
+
"locale": "pt-BR",
|
166
|
+
"name": "Brazilian Portuguese",
|
167
|
+
"game-center": true
|
168
|
+
},
|
169
|
+
{
|
170
|
+
"locale": "pt-PT",
|
171
|
+
"name": "Portuguese",
|
172
|
+
"game-center": true,
|
173
|
+
"alternatives": [
|
174
|
+
"pt"
|
175
|
+
]
|
176
|
+
},
|
177
|
+
{
|
178
|
+
"locale": "ru-RU",
|
179
|
+
"name": "Russian",
|
180
|
+
"game-center": true,
|
181
|
+
"alternatives": [
|
182
|
+
"ru"
|
183
|
+
],
|
184
|
+
"itc_locale": "ru"
|
185
|
+
},
|
186
|
+
{
|
187
|
+
"locale": "es-MX",
|
188
|
+
"name": "Mexican Spanish",
|
189
|
+
"game-center": false
|
190
|
+
},
|
191
|
+
{
|
192
|
+
"locale": "es-MX",
|
193
|
+
"name": "Spanish_MX",
|
194
|
+
"game-center": false
|
195
|
+
},
|
196
|
+
{
|
197
|
+
"locale": "es-ES",
|
198
|
+
"name": "Spanish",
|
199
|
+
"game-center": true,
|
200
|
+
"alternatives": [
|
201
|
+
"es"
|
202
|
+
]
|
203
|
+
},
|
204
|
+
{
|
205
|
+
"locale": "sv-SE",
|
206
|
+
"name": "Swedish",
|
207
|
+
"game-center": true,
|
208
|
+
"alternatives": [
|
209
|
+
"sv"
|
210
|
+
],
|
211
|
+
"itc_locale": "sv"
|
212
|
+
},
|
213
|
+
{
|
214
|
+
"locale": "th-TH",
|
215
|
+
"name": "Thai",
|
216
|
+
"game-center": true,
|
217
|
+
"alternatives": [
|
218
|
+
"th"
|
219
|
+
],
|
220
|
+
"itc_locale": "th"
|
221
|
+
},
|
222
|
+
{
|
223
|
+
"locale": "tr-TR",
|
224
|
+
"name": "Turkish",
|
225
|
+
"game-center": true,
|
226
|
+
"alternatives": [
|
227
|
+
"tr"
|
228
|
+
],
|
229
|
+
"itc_locale": "tr"
|
230
|
+
},
|
231
|
+
{
|
232
|
+
"locale": "vi-VI",
|
233
|
+
"name": "Vietnamese",
|
234
|
+
"game-center": true,
|
235
|
+
"alternatives": [
|
236
|
+
"vi"
|
237
|
+
],
|
238
|
+
"itc_locale": "vi"
|
239
|
+
}
|
240
|
+
]
|