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
data/cert/lib/cert.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'cert/runner'
|
2
|
+
require 'cert/options'
|
3
|
+
|
4
|
+
require 'fastlane_core'
|
5
|
+
require 'spaceship'
|
6
|
+
|
7
|
+
module Cert
|
8
|
+
# Use this to just setup the configuration attribute and set it later somewhere else
|
9
|
+
class << self
|
10
|
+
attr_accessor :config
|
11
|
+
end
|
12
|
+
|
13
|
+
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
14
|
+
UI = FastlaneCore::UI
|
15
|
+
ROOT = Pathname.new(File.expand_path('../..', __FILE__))
|
16
|
+
|
17
|
+
ENV['FASTLANE_TEAM_ID'] ||= ENV["CERT_TEAM_ID"]
|
18
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'commander'
|
2
|
+
|
3
|
+
HighLine.track_eof = false
|
4
|
+
|
5
|
+
module Cert
|
6
|
+
class CommandsGenerator
|
7
|
+
include Commander::Methods
|
8
|
+
|
9
|
+
def self.start
|
10
|
+
self.new.run
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
program :name, 'cert'
|
15
|
+
program :version, Fastlane::VERSION
|
16
|
+
program :description, 'CLI for \'cert\' - Create new iOS code signing certificates'
|
17
|
+
program :help, 'Author', 'Felix Krause <cert@krausefx.com>'
|
18
|
+
program :help, 'Website', 'https://fastlane.tools'
|
19
|
+
program :help, 'GitHub', 'https://github.com/fastlane/cert'
|
20
|
+
program :help_formatter, :compact
|
21
|
+
|
22
|
+
global_option('--verbose') { $verbose = true }
|
23
|
+
|
24
|
+
FastlaneCore::CommanderGenerator.new.generate(Cert::Options.available_options)
|
25
|
+
|
26
|
+
command :create do |c|
|
27
|
+
c.syntax = 'cert create'
|
28
|
+
c.description = 'Create new iOS code signing certificates'
|
29
|
+
|
30
|
+
c.action do |args, options|
|
31
|
+
Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, options.__hash__)
|
32
|
+
Cert::Runner.new.launch
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
command :revoke_expired do |c|
|
37
|
+
c.syntax = 'cert revoke_expired'
|
38
|
+
c.description = 'Revoke expired iOS code signing certificates'
|
39
|
+
|
40
|
+
c.action do |args, options|
|
41
|
+
Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, options.__hash__)
|
42
|
+
Cert::Runner.new.revoke_expired_certs!
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
default_command :create
|
47
|
+
|
48
|
+
run!
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'fastlane_core'
|
2
|
+
require 'credentials_manager'
|
3
|
+
|
4
|
+
module Cert
|
5
|
+
class Options
|
6
|
+
def self.available_options
|
7
|
+
user = CredentialsManager::AppfileConfig.try_fetch_value(:apple_dev_portal_id)
|
8
|
+
user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
|
9
|
+
|
10
|
+
[
|
11
|
+
FastlaneCore::ConfigItem.new(key: :development,
|
12
|
+
env_name: "CERT_DEVELOPMENT",
|
13
|
+
description: "Create a development certificate instead of a distribution one",
|
14
|
+
is_string: false,
|
15
|
+
default_value: false),
|
16
|
+
FastlaneCore::ConfigItem.new(key: :force,
|
17
|
+
env_name: "CERT_FORCE",
|
18
|
+
description: "Create a certificate even if an existing certificate exists",
|
19
|
+
is_string: false,
|
20
|
+
default_value: false),
|
21
|
+
FastlaneCore::ConfigItem.new(key: :username,
|
22
|
+
short_option: "-u",
|
23
|
+
env_name: "CERT_USERNAME",
|
24
|
+
description: "Your Apple ID Username",
|
25
|
+
default_value: user),
|
26
|
+
FastlaneCore::ConfigItem.new(key: :team_id,
|
27
|
+
short_option: "-b",
|
28
|
+
env_name: "CERT_TEAM_ID",
|
29
|
+
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
|
30
|
+
description: "The ID of your Developer Portal team if you're in multiple teams",
|
31
|
+
optional: true,
|
32
|
+
verify_block: proc do |value|
|
33
|
+
ENV["FASTLANE_TEAM_ID"] = value.to_s
|
34
|
+
end),
|
35
|
+
FastlaneCore::ConfigItem.new(key: :team_name,
|
36
|
+
short_option: "-l",
|
37
|
+
env_name: "CERT_TEAM_NAME",
|
38
|
+
description: "The name of your Developer Portal team if you're in multiple teams",
|
39
|
+
optional: true,
|
40
|
+
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_name),
|
41
|
+
verify_block: proc do |value|
|
42
|
+
ENV["FASTLANE_TEAM_NAME"] = value.to_s
|
43
|
+
end),
|
44
|
+
FastlaneCore::ConfigItem.new(key: :output_path,
|
45
|
+
short_option: "-o",
|
46
|
+
env_name: "CERT_OUTPUT_PATH",
|
47
|
+
description: "The path to a directory in which all certificates and private keys should be stored",
|
48
|
+
default_value: "."),
|
49
|
+
FastlaneCore::ConfigItem.new(key: :keychain_path,
|
50
|
+
short_option: "-k",
|
51
|
+
env_name: "CERT_KEYCHAIN_PATH",
|
52
|
+
description: "Path to a custom keychain",
|
53
|
+
default_value: Dir["#{Dir.home}/Library/Keychains/login.keychain", "#{Dir.home}/Library/Keychains/login.keychain-db"].last,
|
54
|
+
verify_block: proc do |value|
|
55
|
+
value = File.expand_path(value)
|
56
|
+
UI.user_error!("Keychain not found at path '#{value}'") unless File.exist?(value)
|
57
|
+
end),
|
58
|
+
FastlaneCore::ConfigItem.new(key: :keychain_password,
|
59
|
+
short_option: "-p",
|
60
|
+
env_name: "CERT_KEYCHAIN_PASSWORD",
|
61
|
+
sensitive: true,
|
62
|
+
description: "This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password",
|
63
|
+
optional: true)
|
64
|
+
]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Cert
|
4
|
+
class Runner
|
5
|
+
def launch
|
6
|
+
run
|
7
|
+
|
8
|
+
installed = FastlaneCore::CertChecker.installed?(ENV["CER_FILE_PATH"])
|
9
|
+
UI.message "Verifying the certificate is properly installed locally..."
|
10
|
+
UI.user_error!("Could not find the newly generated certificate installed", show_github_issues: true) unless installed
|
11
|
+
UI.success "Successfully installed certificate #{ENV['CER_CERTIFICATE_ID']}"
|
12
|
+
return ENV["CER_FILE_PATH"]
|
13
|
+
end
|
14
|
+
|
15
|
+
def login
|
16
|
+
UI.message "Starting login with user '#{Cert.config[:username]}'"
|
17
|
+
Spaceship.login(Cert.config[:username], nil)
|
18
|
+
Spaceship.select_team
|
19
|
+
UI.message "Successfully logged in"
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
FileUtils.mkdir_p(Cert.config[:output_path])
|
24
|
+
|
25
|
+
FastlaneCore::PrintTable.print_values(config: Cert.config, hide_keys: [:output_path], title: "Summary for cert #{Fastlane::VERSION}")
|
26
|
+
|
27
|
+
login
|
28
|
+
|
29
|
+
should_create = Cert.config[:force]
|
30
|
+
unless should_create
|
31
|
+
cert_path = find_existing_cert
|
32
|
+
should_create = cert_path.nil?
|
33
|
+
end
|
34
|
+
|
35
|
+
return unless should_create
|
36
|
+
|
37
|
+
if create_certificate # no certificate here, creating a new one
|
38
|
+
return # success
|
39
|
+
else
|
40
|
+
UI.user_error!("Something went wrong when trying to create a new certificate...")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Command method for the :revoke_expired sub-command
|
45
|
+
def revoke_expired_certs!
|
46
|
+
FastlaneCore::PrintTable.print_values(config: Cert.config, hide_keys: [:output_path], title: "Summary for cert #{Fastlane::VERSION}")
|
47
|
+
|
48
|
+
login
|
49
|
+
|
50
|
+
to_revoke = expired_certs
|
51
|
+
|
52
|
+
if to_revoke.empty?
|
53
|
+
UI.success "No expired certificates were found to revoke! 👍"
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
revoke_count = 0
|
58
|
+
|
59
|
+
to_revoke.each do |certificate|
|
60
|
+
begin
|
61
|
+
UI.message "#{certificate.id} #{certificate.name} has expired, revoking..."
|
62
|
+
certificate.revoke!
|
63
|
+
revoke_count += 1
|
64
|
+
rescue => e
|
65
|
+
UI.error "An error occurred while revoking #{certificate.id} #{certificate.name}"
|
66
|
+
UI.error "#{e.message}\n#{e.backtrace.join("\n")}" if $verbose
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
UI.success "#{revoke_count} expired certificate#{'s' if revoke_count != 1} #{revoke_count == 1 ? 'has' : 'have'} been revoked! 👍"
|
71
|
+
end
|
72
|
+
|
73
|
+
def expired_certs
|
74
|
+
certificates.select do |certificate|
|
75
|
+
certificate.expires < Time.now.utc
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def find_existing_cert
|
80
|
+
certificates.each do |certificate|
|
81
|
+
unless certificate.can_download
|
82
|
+
next
|
83
|
+
end
|
84
|
+
|
85
|
+
path = store_certificate(certificate)
|
86
|
+
private_key_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.p12"))
|
87
|
+
|
88
|
+
if FastlaneCore::CertChecker.installed?(path)
|
89
|
+
# This certificate is installed on the local machine
|
90
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
91
|
+
ENV["CER_FILE_PATH"] = path
|
92
|
+
|
93
|
+
UI.success "Found the certificate #{certificate.id} (#{certificate.name}) which is installed on the local machine. Using this one."
|
94
|
+
|
95
|
+
return path
|
96
|
+
elsif File.exist?(private_key_path)
|
97
|
+
keychain = File.expand_path(Cert.config[:keychain_path])
|
98
|
+
password = Cert.config[:keychain_password]
|
99
|
+
FastlaneCore::KeychainImporter.import_file(private_key_path, keychain, keychain_password: password)
|
100
|
+
FastlaneCore::KeychainImporter.import_file(path, keychain, keychain_password: password)
|
101
|
+
|
102
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
103
|
+
ENV["CER_FILE_PATH"] = path
|
104
|
+
|
105
|
+
UI.success "Found the cached certificate #{certificate.id} (#{certificate.name}). Using this one."
|
106
|
+
|
107
|
+
return path
|
108
|
+
else
|
109
|
+
UI.error "Certificate #{certificate.id} (#{certificate.name}) can't be found on your local computer"
|
110
|
+
end
|
111
|
+
|
112
|
+
File.delete(path) # as apparantly this certificate is pretty useless without a private key
|
113
|
+
end
|
114
|
+
|
115
|
+
UI.important "Couldn't find an existing certificate... creating a new one"
|
116
|
+
return nil
|
117
|
+
end
|
118
|
+
|
119
|
+
# All certificates of this type
|
120
|
+
def certificates
|
121
|
+
certificate_type.all
|
122
|
+
end
|
123
|
+
|
124
|
+
# The kind of certificate we're interested in
|
125
|
+
def certificate_type
|
126
|
+
cert_type = Spaceship.certificate.production
|
127
|
+
cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
|
128
|
+
cert_type = Spaceship.certificate.development if Cert.config[:development]
|
129
|
+
|
130
|
+
cert_type
|
131
|
+
end
|
132
|
+
|
133
|
+
def create_certificate
|
134
|
+
# Create a new certificate signing request
|
135
|
+
csr, pkey = Spaceship.certificate.create_certificate_signing_request
|
136
|
+
|
137
|
+
# Use the signing request to create a new distribution certificate
|
138
|
+
begin
|
139
|
+
certificate = certificate_type.create!(csr: csr)
|
140
|
+
rescue => ex
|
141
|
+
if ex.to_s.include?("You already have a current")
|
142
|
+
type_name = (Cert.config[:development] ? "Development" : "Distribution")
|
143
|
+
UI.user_error!("Could not create another #{type_name} certificate, reached the maximum number of available #{type_name} certificates.", show_github_issues: true)
|
144
|
+
end
|
145
|
+
|
146
|
+
raise ex
|
147
|
+
end
|
148
|
+
|
149
|
+
# Store all that onto the filesystem
|
150
|
+
|
151
|
+
request_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.certSigningRequest"))
|
152
|
+
File.write(request_path, csr.to_pem)
|
153
|
+
|
154
|
+
private_key_path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.p12"))
|
155
|
+
File.write(private_key_path, pkey)
|
156
|
+
|
157
|
+
cert_path = store_certificate(certificate)
|
158
|
+
|
159
|
+
# Import all the things into the Keychain
|
160
|
+
keychain = File.expand_path(Cert.config[:keychain_path])
|
161
|
+
password = Cert.config[:keychain_password]
|
162
|
+
FastlaneCore::KeychainImporter.import_file(private_key_path, keychain, keychain_password: password)
|
163
|
+
FastlaneCore::KeychainImporter.import_file(cert_path, keychain, keychain_password: password)
|
164
|
+
|
165
|
+
# Environment variables for the fastlane action
|
166
|
+
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
167
|
+
ENV["CER_FILE_PATH"] = cert_path
|
168
|
+
|
169
|
+
UI.success "Successfully generated #{certificate.id} which was imported to the local machine."
|
170
|
+
|
171
|
+
return cert_path
|
172
|
+
end
|
173
|
+
|
174
|
+
def store_certificate(certificate)
|
175
|
+
path = File.expand_path(File.join(Cert.config[:output_path], "#{certificate.id}.cer"))
|
176
|
+
raw_data = certificate.download_raw
|
177
|
+
File.write(path, raw_data)
|
178
|
+
return path
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
CredentialsManager
|
2
|
+
===================
|
3
|
+
|
4
|
+
`CredentialsManager` is used by most components in the [fastlane.tools](https://fastlane.tools) toolchain.
|
5
|
+
|
6
|
+
All code related to your username and password can be found here: [account_manager.rb](https://github.com/fastlane/fastlane/blob/master/credentials_manager/lib/credentials_manager/account_manager.rb)
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
Along with the [Ruby libraries](https://github.com/fastlane/fastlane/tree/master/credentials_manager#implementing-a-custom-solution) you can use the command line interface to add credentials to the keychain.
|
10
|
+
|
11
|
+
**Adding Credentials**
|
12
|
+
```
|
13
|
+
fastlane-credentials add --username felix@krausefx.com
|
14
|
+
Password: *********
|
15
|
+
Credential felix@krausefx.com:********* added to keychain.
|
16
|
+
```
|
17
|
+
|
18
|
+
**Removing Credentials**
|
19
|
+
```
|
20
|
+
fastlane-credentials remove --username felix@krausefx.com
|
21
|
+
password has been deleted.
|
22
|
+
```
|
23
|
+
|
24
|
+
## Storing in the keychain
|
25
|
+
|
26
|
+
By default, your Apple credentials are stored in the macOS Keychain.
|
27
|
+
|
28
|
+
Your password is only stored locally on your computer.
|
29
|
+
|
30
|
+
## Change Password
|
31
|
+
|
32
|
+
You can easily delete the stored password by opening the "Keychain Access" app, switching to *All Items*, and searching for "*deliver*". Select the item you want to change and delete it. Next time running one of the tools, you'll be asked for the new password.
|
33
|
+
|
34
|
+
## Using environment variables
|
35
|
+
|
36
|
+
```
|
37
|
+
FASTLANE_USER
|
38
|
+
FASTLANE_PASSWORD
|
39
|
+
```
|
40
|
+
|
41
|
+
If you don't want to have your password stored in the Keychain use `FASTLANE_DONT_STORE_PASSWORD`.
|
42
|
+
|
43
|
+
## Implementing a custom solution
|
44
|
+
|
45
|
+
All ```fastlane``` tools are Ruby-based, and you can take a look at the source code to easily implement your own authentication solution.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
require 'credentials_manager'
|
49
|
+
|
50
|
+
data = CredentialsManager::AccountManager.new(user: user, password: password)
|
51
|
+
puts data.user
|
52
|
+
puts data.password
|
53
|
+
```
|
54
|
+
|
55
|
+
# Code of Conduct
|
56
|
+
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).
|
57
|
+
|
58
|
+
# License
|
59
|
+
|
60
|
+
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
61
|
+
|
62
|
+
> 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,12 @@
|
|
1
|
+
require 'credentials_manager/account_manager'
|
2
|
+
require 'credentials_manager/cli'
|
3
|
+
require 'credentials_manager/appfile_config'
|
4
|
+
|
5
|
+
# Third Party code
|
6
|
+
require 'colored'
|
7
|
+
require 'security'
|
8
|
+
require 'highline/import' # to hide the entered password
|
9
|
+
|
10
|
+
module CredentialsManager
|
11
|
+
ROOT = Pathname.new(File.expand_path('../..', __FILE__))
|
12
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'security'
|
2
|
+
require 'highline/import' # to hide the entered password
|
3
|
+
|
4
|
+
module CredentialsManager
|
5
|
+
class AccountManager
|
6
|
+
# @param prefix [String] Very optional, is used for the
|
7
|
+
# iTunes Transporter which uses application specofic passwords
|
8
|
+
def initialize(user: nil, password: nil, prefix: nil)
|
9
|
+
@prefix = prefix || "deliver"
|
10
|
+
|
11
|
+
@user = user
|
12
|
+
@password = password
|
13
|
+
end
|
14
|
+
|
15
|
+
def user
|
16
|
+
@user ||= ENV["FASTLANE_USER"]
|
17
|
+
@user ||= ENV["DELIVER_USER"]
|
18
|
+
@user ||= AppfileConfig.try_fetch_value(:apple_id)
|
19
|
+
ask_for_login if @user.to_s.length == 0
|
20
|
+
return @user
|
21
|
+
end
|
22
|
+
|
23
|
+
def fetch_password_from_env
|
24
|
+
ENV["FASTLANE_PASSWORD"] || ENV["DELIVER_PASSWORD"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def password(ask_if_missing: true)
|
28
|
+
@password ||= fetch_password_from_env
|
29
|
+
unless @password
|
30
|
+
item = Security::InternetPassword.find(server: server_name)
|
31
|
+
@password ||= item.password if item
|
32
|
+
end
|
33
|
+
ask_for_login while ask_if_missing && @password.to_s.length == 0
|
34
|
+
return @password
|
35
|
+
end
|
36
|
+
|
37
|
+
# Call this method to ask the user to re-enter the credentials
|
38
|
+
# @param force: if false the user is asked before it gets deleted
|
39
|
+
# @return: Did the user decide to remove the old entry and enter a new password?
|
40
|
+
def invalid_credentials(force: false)
|
41
|
+
puts "The login credentials for '#{user}' seem to be wrong".red
|
42
|
+
|
43
|
+
if fetch_password_from_env
|
44
|
+
puts "The password was taken from the environment variable"
|
45
|
+
puts "Please make sure it is correct"
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
|
49
|
+
if force || agree("Do you want to re-enter your password? (y/n)", true)
|
50
|
+
puts "Removing Keychain entry for user '#{user}'...".yellow
|
51
|
+
remove_from_keychain
|
52
|
+
ask_for_login
|
53
|
+
return true
|
54
|
+
end
|
55
|
+
false
|
56
|
+
end
|
57
|
+
|
58
|
+
def add_to_keychain
|
59
|
+
Security::InternetPassword.add(server_name, user, password)
|
60
|
+
end
|
61
|
+
|
62
|
+
def remove_from_keychain
|
63
|
+
Security::InternetPassword.delete(server: server_name)
|
64
|
+
@password = nil
|
65
|
+
end
|
66
|
+
|
67
|
+
def server_name
|
68
|
+
"#{@prefix}.#{user}"
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def ask_for_login
|
74
|
+
puts "-------------------------------------------------------------------------------------".green
|
75
|
+
puts "The login information you enter will be stored in your Mac OS Keychain".green
|
76
|
+
puts "You can also pass the password using the `FASTLANE_PASSWORD` environment variable".green
|
77
|
+
puts "More information about it on GitHub: https://github.com/fastlane/fastlane/tree/master/credentials_manager".green
|
78
|
+
puts "-------------------------------------------------------------------------------------".green
|
79
|
+
|
80
|
+
if @user.to_s.length == 0
|
81
|
+
raise "Missing username, and running in non-interactive shell" if $stdout.isatty == false
|
82
|
+
@user = ask("Username: ") while @user.to_s.length == 0
|
83
|
+
# we return here, as only the username was asked for now, we'll get called for the pw again anyway
|
84
|
+
return
|
85
|
+
end
|
86
|
+
|
87
|
+
while @password.to_s.length == 0
|
88
|
+
raise "Missing password for user #{@user}, and running in non-interactive shell" if $stdout.isatty == false
|
89
|
+
@password = ask("Password (for #{@user}): ") { |q| q.echo = "*" }
|
90
|
+
end
|
91
|
+
|
92
|
+
return true if ENV["FASTLANE_DONT_STORE_PASSWORD"]
|
93
|
+
return true if (/darwin/ =~ RUBY_PLATFORM).nil? # mac?, since we don't have access to the helper here
|
94
|
+
|
95
|
+
# Now we store this information in the keychain
|
96
|
+
if add_to_keychain
|
97
|
+
return true
|
98
|
+
else
|
99
|
+
puts "Could not store password in keychain".red
|
100
|
+
return false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|