fastlane 2.14.2 → 2.15.0.beta.20170213032052
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/cert/lib/cert/commands_generator.rb +1 -1
- data/cert/lib/cert/runner.rb +1 -1
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/deliver/commands_generator.rb +1 -1
- data/deliver/lib/deliver/runner.rb +2 -2
- data/deliver/lib/deliver/setup.rb +4 -2
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/add_extra_platforms.rb +45 -0
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +13 -7
- data/fastlane/lib/fastlane/actions/crashlytics.rb +2 -2
- data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +13 -1
- data/fastlane/lib/fastlane/actions/git_tag_exists.rb +1 -1
- data/fastlane/lib/fastlane/actions/hockey.rb +117 -14
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +4 -0
- data/fastlane/lib/fastlane/commands_generator.rb +12 -12
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
- data/fastlane/lib/fastlane/environment_printer.rb +2 -2
- data/fastlane/lib/fastlane/fastlane_require.rb +1 -1
- data/fastlane/lib/fastlane/helper/git_helper.rb +22 -15
- data/fastlane/lib/fastlane/lane_manager.rb +2 -2
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +2 -2
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +5 -5
- data/fastlane/lib/fastlane/runner.rb +12 -9
- data/fastlane/lib/fastlane/setup/crashlytics_beta_ui.rb +1 -4
- data/fastlane/lib/fastlane/supported_platforms.rb +17 -7
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +3 -3
- data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +7 -3
- data/fastlane_core/lib/fastlane_core/device_manager.rb +43 -16
- data/fastlane_core/lib/fastlane_core/globals.rb +27 -0
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -4
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +4 -4
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +22 -14
- data/fastlane_core/lib/fastlane_core/ui/interface.rb +5 -4
- data/frameit/README.md +4 -1
- data/frameit/lib/frameit/commands_generator.rb +1 -1
- data/frameit/lib/frameit/editor.rb +60 -13
- data/frameit/lib/frameit/runner.rb +1 -1
- data/gym/README.md +14 -0
- data/gym/lib/gym/commands_generator.rb +1 -1
- data/gym/lib/gym/error_handler.rb +2 -2
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +1 -1
- data/gym/lib/gym/runner.rb +3 -3
- data/gym/lib/gym/xcodebuild_fixes/package_application_fix.rb +2 -2
- data/gym/lib/gym/xcodebuild_fixes/swift_fix.rb +1 -1
- data/match/lib/match/commands_generator.rb +1 -1
- data/match/lib/match/encrypt.rb +3 -3
- data/match/lib/match/git_helper.rb +8 -8
- data/match/lib/match/options.rb +1 -1
- data/match/lib/match/utils.rb +3 -3
- data/pem/lib/pem/commands_generator.rb +1 -1
- data/pilot/lib/pilot/commands_generator.rb +1 -1
- data/produce/README.md +1 -1
- data/produce/lib/produce/commands_generator.rb +2 -2
- data/scan/lib/scan/commands_generator.rb +1 -1
- data/scan/lib/scan/options.rb +6 -0
- data/scan/lib/scan/runner.rb +2 -2
- data/scan/lib/scan/test_command_generator.rb +1 -0
- data/screengrab/lib/screengrab/commands_generator.rb +1 -1
- data/sigh/lib/sigh/commands_generator.rb +3 -3
- data/sigh/lib/sigh/local_manage.rb +1 -1
- data/sigh/lib/sigh/resign.rb +1 -1
- data/sigh/lib/sigh/runner.rb +8 -3
- data/snapshot/README.md +3 -3
- data/snapshot/lib/snapshot/collector.rb +1 -1
- data/snapshot/lib/snapshot/commands_generator.rb +1 -1
- data/snapshot/lib/snapshot/fixes/hardware_keyboard_fix.rb +1 -1
- data/snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb +1 -1
- data/snapshot/lib/snapshot/reset_simulators.rb +2 -2
- data/snapshot/lib/snapshot/runner.rb +3 -3
- data/spaceship/lib/spaceship.rb +2 -0
- data/spaceship/lib/spaceship/base.rb +18 -0
- data/spaceship/lib/spaceship/client.rb +8 -5
- data/spaceship/lib/spaceship/globals.rb +12 -0
- data/spaceship/lib/spaceship/portal/app.rb +0 -6
- data/spaceship/lib/spaceship/portal/app_group.rb +0 -6
- data/spaceship/lib/spaceship/portal/device.rb +0 -6
- data/spaceship/lib/spaceship/portal/person.rb +0 -6
- data/spaceship/lib/spaceship/portal/portal.rb +1 -0
- data/spaceship/lib/spaceship/portal/portal_client.rb +37 -0
- data/spaceship/lib/spaceship/portal/spaceship.rb +9 -0
- data/spaceship/lib/spaceship/portal/website_push.rb +90 -0
- data/spaceship/lib/spaceship/tunes/app_image.rb +0 -6
- data/spaceship/lib/spaceship/tunes/app_ratings.rb +0 -9
- data/spaceship/lib/spaceship/tunes/app_screenshot.rb +0 -7
- data/spaceship/lib/spaceship/tunes/app_trailer.rb +0 -6
- data/spaceship/lib/spaceship/tunes/app_version.rb +1 -0
- data/spaceship/lib/spaceship/tunes/app_version_generated_promocodes.rb +0 -9
- data/spaceship/lib/spaceship/tunes/app_version_history.rb +0 -9
- data/spaceship/lib/spaceship/tunes/app_version_promocodes.rb +0 -9
- data/spaceship/lib/spaceship/tunes/app_version_ref.rb +0 -6
- data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +0 -9
- data/spaceship/lib/spaceship/tunes/application.rb +0 -6
- data/spaceship/lib/spaceship/tunes/build.rb +0 -8
- data/spaceship/lib/spaceship/tunes/build_details.rb +0 -8
- data/spaceship/lib/spaceship/tunes/build_train.rb +0 -6
- data/spaceship/lib/spaceship/tunes/member.rb +0 -6
- data/spaceship/lib/spaceship/tunes/pricing_tier.rb +0 -9
- data/spaceship/lib/spaceship/tunes/recovery_device.rb +0 -6
- data/spaceship/lib/spaceship/tunes/territory.rb +0 -7
- data/spaceship/lib/spaceship/tunes/tester.rb +0 -6
- data/spaceship/lib/spaceship/tunes/transit_app_file.rb +0 -6
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -6
- data/spaceship/lib/spaceship/tunes/version_set.rb +0 -11
- data/spaceship/lib/spaceship/two_step_client.rb +2 -2
- data/supply/lib/supply/commands_generator.rb +1 -1
- metadata +34 -17
@@ -46,7 +46,7 @@ module Fastlane
|
|
46
46
|
UI.success('Successfully sent Slack notification')
|
47
47
|
else
|
48
48
|
UI.verbose(result)
|
49
|
-
UI.user_error!("Error pushing Slack message, maybe the integration has no permission to post on this channel? Try removing the channel parameter in your Fastfile
|
49
|
+
UI.user_error!("Error pushing Slack message, maybe the integration has no permission to post on this channel? Try removing the channel parameter in your Fastfile, this is usually caused by a mispelled or changed group/channel name or an expired SLACK_URL")
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -10,20 +10,20 @@ module Fastlane
|
|
10
10
|
def self.start
|
11
11
|
# since at this point we haven't yet loaded commander
|
12
12
|
# however we do want to log verbose information in the PluginManager
|
13
|
-
FastlaneCore::
|
14
|
-
|
15
|
-
|
13
|
+
FastlaneCore::Globals.verbose = true if ARGV.include?("--verbose")
|
14
|
+
FastlaneCore::Globals.capture_output = true if ARGV.include?("--capture_output")
|
16
15
|
if ARGV.include?("--capture_output")
|
17
|
-
|
18
|
-
|
16
|
+
FastlaneCore::Globals.verbose = true
|
17
|
+
FastlaneCore::Globals.capture_output = true
|
19
18
|
end
|
19
|
+
FastlaneCore::Swag.show_loader
|
20
20
|
|
21
21
|
# has to be checked here - in case we wan't to troubleshoot plugin related issues
|
22
22
|
if ARGV.include?("--troubleshoot")
|
23
23
|
self.confirm_troubleshoot
|
24
24
|
end
|
25
25
|
|
26
|
-
if
|
26
|
+
if FastlaneCore::Globals.capture_output?
|
27
27
|
# Trace mode is enabled
|
28
28
|
# redirect STDOUT and STDERR
|
29
29
|
out_channel = StringIO.new
|
@@ -34,7 +34,7 @@ module Fastlane
|
|
34
34
|
Fastlane.load_actions
|
35
35
|
FastlaneCore::Swag.stop_loader
|
36
36
|
# do not use "include" as it may be some where in the commandline where "env" is required, therefore explicit index->0
|
37
|
-
unless ARGV[0] == "env" || CLIToolsDistributor.running_version_command?
|
37
|
+
unless ARGV[0] == "env" || CLIToolsDistributor.running_version_command? || CLIToolsDistributor.running_help_command?
|
38
38
|
# *after* loading the plugins
|
39
39
|
Fastlane.plugin_manager.load_plugins
|
40
40
|
Fastlane::PluginUpdateManager.start_looking_for_updates
|
@@ -43,8 +43,8 @@ module Fastlane
|
|
43
43
|
ensure
|
44
44
|
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
45
45
|
Fastlane::PluginUpdateManager.show_update_status
|
46
|
-
if
|
47
|
-
|
46
|
+
if FastlaneCore::Globals.capture_output?
|
47
|
+
FastlaneCore::Globals.captured_output = Helper.strip_ansi_colors($stdout.string)
|
48
48
|
$stdout = STDOUT
|
49
49
|
$stderr = STDERR
|
50
50
|
|
@@ -86,10 +86,10 @@ module Fastlane
|
|
86
86
|
program :help, 'GitHub', 'https://github.com/fastlane/fastlane'
|
87
87
|
program :help_formatter, :compact
|
88
88
|
|
89
|
-
global_option('--verbose') {
|
89
|
+
global_option('--verbose') { FastlaneCore::Globals.verbose = true }
|
90
90
|
global_option('--capture_output', 'Captures the output of the current run, and generates a markdown issue template') do
|
91
|
-
|
92
|
-
|
91
|
+
FastlaneCore::Globals.capture_output = true
|
92
|
+
FastlaneCore::Globals.verbose = true
|
93
93
|
end
|
94
94
|
global_option('--troubleshoot', 'Enables extended verbose mode. Use with caution, as this even includes ALL sensitive data. Cannot be used on CI.')
|
95
95
|
|
@@ -64,7 +64,7 @@ module Fastlane
|
|
64
64
|
output << ""
|
65
65
|
|
66
66
|
File.write(output_path, output.join("\n"))
|
67
|
-
UI.success "Successfully generated documentation at path '#{File.expand_path(output_path)}'" if
|
67
|
+
UI.success "Successfully generated documentation at path '#{File.expand_path(output_path)}'" if FastlaneCore::Globals.verbose?
|
68
68
|
end
|
69
69
|
|
70
70
|
#####################################################
|
@@ -34,10 +34,10 @@ module Fastlane
|
|
34
34
|
env_tail = "</details>"
|
35
35
|
final_output = ""
|
36
36
|
|
37
|
-
if
|
37
|
+
if FastlaneCore::Globals.captured_output?
|
38
38
|
final_output << "### Captured Output\n\n"
|
39
39
|
final_output << "Command Used: `#{ARGV.join(' ')}`\n"
|
40
|
-
final_output << "<details><summary>Output/Log</summary>\n\n```\n\n#{
|
40
|
+
final_output << "<details><summary>Output/Log</summary>\n\n```\n\n#{FastlaneCore::Globals.captured_output}\n\n```\n\n</details>\n\n"
|
41
41
|
end
|
42
42
|
|
43
43
|
final_output << env_header + env_output + env_tail
|
@@ -6,7 +6,7 @@ module Fastlane
|
|
6
6
|
|
7
7
|
# check if it's installed
|
8
8
|
if gem_installed?(gem_name)
|
9
|
-
UI.success("gem '#{gem_name}' is already installed") if
|
9
|
+
UI.success("gem '#{gem_name}' is already installed") if FastlaneCore::Globals.verbose?
|
10
10
|
require gem_require_name if require_gem
|
11
11
|
return true
|
12
12
|
end
|
@@ -2,20 +2,24 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
GIT_MERGE_COMMIT_FILTERING_OPTIONS = [:include_merges, :exclude_merges, :only_include_merges].freeze
|
4
4
|
|
5
|
-
def self.git_log_between(pretty_format, from, to, merge_commit_filtering)
|
6
|
-
command = 'git log'
|
7
|
-
command << "
|
5
|
+
def self.git_log_between(pretty_format, from, to, merge_commit_filtering, date_format = nil)
|
6
|
+
command = ['git log']
|
7
|
+
command << "--pretty=\"#{pretty_format}\""
|
8
|
+
command << "--date=\"#{date_format}\"" if date_format
|
9
|
+
command << "#{from.shellescape}...#{to.shellescape}"
|
8
10
|
command << git_log_merge_commit_filtering_option(merge_commit_filtering)
|
9
|
-
Actions.sh(command, log: false).chomp
|
11
|
+
Actions.sh(command.compact.join(' '), log: false).chomp
|
10
12
|
rescue
|
11
13
|
nil
|
12
14
|
end
|
13
15
|
|
14
|
-
def self.git_log_last_commits(pretty_format, commit_count, merge_commit_filtering)
|
15
|
-
command = 'git log'
|
16
|
-
command << "
|
16
|
+
def self.git_log_last_commits(pretty_format, commit_count, merge_commit_filtering, date_format = nil)
|
17
|
+
command = ['git log']
|
18
|
+
command << "--pretty=\"#{pretty_format}\""
|
19
|
+
command << "--date=\"#{date_format}\"" if date_format
|
20
|
+
command << "-n #{commit_count}"
|
17
21
|
command << git_log_merge_commit_filtering_option(merge_commit_filtering)
|
18
|
-
Actions.sh(command, log: false).chomp
|
22
|
+
Actions.sh(command.compact.join(' '), log: false).chomp
|
19
23
|
rescue
|
20
24
|
nil
|
21
25
|
end
|
@@ -26,7 +30,7 @@ module Fastlane
|
|
26
30
|
command = ['git describe']
|
27
31
|
command << '--tags' if match_lightweight
|
28
32
|
command << "`git rev-list --tags#{tag_pattern_param} --max-count=1`"
|
29
|
-
Actions.sh(command.join(' '), log: false).chomp
|
33
|
+
Actions.sh(command.compact.join(' '), log: false).chomp
|
30
34
|
rescue
|
31
35
|
nil
|
32
36
|
end
|
@@ -44,8 +48,11 @@ module Fastlane
|
|
44
48
|
|
45
49
|
# Gets the last git commit information formatted into a String by the provided
|
46
50
|
# pretty format String. See the git-log documentation for valid format placeholders
|
47
|
-
def self.last_git_commit_formatted_with(pretty_format)
|
48
|
-
|
51
|
+
def self.last_git_commit_formatted_with(pretty_format, date_format = nil)
|
52
|
+
command = ['git log -1']
|
53
|
+
command << "--pretty=\"#{pretty_format}\""
|
54
|
+
command << "--date=\"#{date_format}\"" if date_format
|
55
|
+
Actions.sh(command.compact.join(' '), log: false).chomp
|
49
56
|
rescue
|
50
57
|
nil
|
51
58
|
end
|
@@ -93,11 +100,11 @@ module Fastlane
|
|
93
100
|
def self.git_log_merge_commit_filtering_option(merge_commit_filtering)
|
94
101
|
case merge_commit_filtering
|
95
102
|
when :exclude_merges
|
96
|
-
"
|
103
|
+
"--no-merges"
|
97
104
|
when :only_include_merges
|
98
|
-
"
|
99
|
-
|
100
|
-
|
105
|
+
"--merges"
|
106
|
+
when :include_merges
|
107
|
+
nil
|
101
108
|
end
|
102
109
|
end
|
103
110
|
end
|
@@ -211,13 +211,13 @@ module Fastlane
|
|
211
211
|
def self.print_lane_context
|
212
212
|
return if Actions.lane_context.empty?
|
213
213
|
|
214
|
-
if
|
214
|
+
if FastlaneCore::Globals.verbose?
|
215
215
|
UI.important 'Lane Context:'.yellow
|
216
216
|
UI.message Actions.lane_context
|
217
217
|
return
|
218
218
|
end
|
219
219
|
|
220
|
-
# Print a nice table unless in
|
220
|
+
# Print a nice table unless in FastlaneCore::Globals.verbose? mode
|
221
221
|
rows = Actions.lane_context.collect do |key, content|
|
222
222
|
[key, content.to_s]
|
223
223
|
end
|
@@ -95,7 +95,7 @@ module Fastlane
|
|
95
95
|
#
|
96
96
|
|
97
97
|
def detect_author
|
98
|
-
git_name = Helper.backticks('git config --get user.name', print:
|
98
|
+
git_name = Helper.backticks('git config --get user.name', print: FastlaneCore::Globals.verbose?).strip
|
99
99
|
return git_name.empty? ? nil : git_name
|
100
100
|
end
|
101
101
|
|
@@ -121,7 +121,7 @@ module Fastlane
|
|
121
121
|
#
|
122
122
|
|
123
123
|
def detect_email
|
124
|
-
git_email = Helper.backticks('git config --get user.email', print:
|
124
|
+
git_email = Helper.backticks('git config --get user.email', print: FastlaneCore::Globals.verbose?).strip
|
125
125
|
return git_email.empty? ? nil : git_email
|
126
126
|
end
|
127
127
|
|
@@ -169,9 +169,9 @@ module Fastlane
|
|
169
169
|
ensure_plugins_attached!
|
170
170
|
with_clean_bundler_env do
|
171
171
|
cmd = "bundle install"
|
172
|
-
cmd << " --quiet" unless
|
172
|
+
cmd << " --quiet" unless FastlaneCore::Globals.verbose?
|
173
173
|
cmd << " && echo 'Successfully installed plugins'"
|
174
|
-
UI.command(cmd) if
|
174
|
+
UI.command(cmd) if FastlaneCore::Globals.verbose?
|
175
175
|
exec(cmd)
|
176
176
|
end
|
177
177
|
end
|
@@ -183,9 +183,9 @@ module Fastlane
|
|
183
183
|
ensure_plugins_attached!
|
184
184
|
with_clean_bundler_env do
|
185
185
|
cmd = "bundle update"
|
186
|
-
cmd << " --quiet" unless
|
186
|
+
cmd << " --quiet" unless FastlaneCore::Globals.verbose?
|
187
187
|
cmd << " && echo 'Successfully updated plugins'"
|
188
|
-
UI.command(cmd) if
|
188
|
+
UI.command(cmd) if FastlaneCore::Globals.verbose?
|
189
189
|
exec(cmd)
|
190
190
|
end
|
191
191
|
end
|
@@ -279,7 +279,7 @@ module Fastlane
|
|
279
279
|
|
280
280
|
store_plugin_reference(gem_name)
|
281
281
|
loaded_plugins = true
|
282
|
-
rescue => ex
|
282
|
+
rescue StandardError, ScriptError => ex # some errors, like ScriptError are not caught unless explicitly
|
283
283
|
UI.error("Error loading plugin '#{gem_name}': #{ex}")
|
284
284
|
|
285
285
|
# We'll still add it to the table, to make the error
|
@@ -58,10 +58,14 @@ module Fastlane
|
|
58
58
|
rescue => ex
|
59
59
|
Dir.chdir(path_to_use) do
|
60
60
|
# Provide error block exception without colour code
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
61
|
+
begin
|
62
|
+
error_blocks[current_platform].call(current_lane, ex, parameters) if current_platform && error_blocks[current_platform]
|
63
|
+
error_blocks[nil].call(current_lane, ex, parameters) if error_blocks[nil]
|
64
|
+
rescue => error_block_exception
|
65
|
+
UI.error("An error occured while executing the `error` block:")
|
66
|
+
UI.error(error_block_exception.to_s)
|
67
|
+
raise ex # raise the original error message
|
68
|
+
end
|
65
69
|
end
|
66
70
|
|
67
71
|
raise ex
|
@@ -258,12 +262,11 @@ module Fastlane
|
|
258
262
|
|
259
263
|
def verify_supported_os(name, class_ref)
|
260
264
|
if class_ref.respond_to?(:is_supported?)
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
+
# This value is filled in based on the executed platform block. Might be nil when lane is in root of Fastfile
|
266
|
+
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
|
267
|
+
if platform
|
265
268
|
unless class_ref.is_supported?(platform)
|
266
|
-
UI.
|
269
|
+
UI.important("Action '#{name}' isn't known to support operating system '#{platform}'.")
|
267
270
|
end
|
268
271
|
end
|
269
272
|
end
|
@@ -1,17 +1,27 @@
|
|
1
1
|
module Fastlane
|
2
2
|
class SupportedPlatforms
|
3
|
+
class << self
|
4
|
+
attr_accessor :extra
|
5
|
+
attr_reader :default
|
6
|
+
|
7
|
+
def extra=(value)
|
8
|
+
value ||= []
|
9
|
+
UI.important("Setting '#{value}' as extra SupportedPlatforms")
|
10
|
+
@extra = value
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
@default = [:ios, :mac, :android]
|
15
|
+
@extra = []
|
16
|
+
|
3
17
|
def self.all
|
4
|
-
|
5
|
-
:ios,
|
6
|
-
:mac,
|
7
|
-
:android
|
8
|
-
]
|
18
|
+
(@default + @extra).flatten
|
9
19
|
end
|
10
20
|
|
11
|
-
# this will
|
21
|
+
# this will log a warning if the passed platform is not supported
|
12
22
|
def self.verify!(platform)
|
13
23
|
unless all.include? platform.to_s.to_sym
|
14
|
-
UI.
|
24
|
+
UI.important("Platform '#{platform}' is not officially supported. Currently supported plaforms are #{self.all}.")
|
15
25
|
end
|
16
26
|
end
|
17
27
|
end
|
@@ -49,7 +49,7 @@ module FastlaneCore
|
|
49
49
|
def self.wwdr_certificate_installed?
|
50
50
|
certificate_name = "Apple Worldwide Developer Relations Certification Authority"
|
51
51
|
keychain = wwdr_keychain
|
52
|
-
response = Helper.backticks("security find-certificate -c '#{certificate_name}' #{keychain.shellescape}", print:
|
52
|
+
response = Helper.backticks("security find-certificate -c '#{certificate_name}' #{keychain.shellescape}", print: FastlaneCore::Globals.verbose?)
|
53
53
|
return response.include?("attributes:")
|
54
54
|
end
|
55
55
|
|
@@ -59,7 +59,7 @@ module FastlaneCore
|
|
59
59
|
filename = File.basename(url)
|
60
60
|
keychain = wwdr_keychain
|
61
61
|
keychain = "-k #{keychain.shellescape}" unless keychain.empty?
|
62
|
-
Helper.backticks("curl -O #{url} && security import #{filename} #{keychain}", print:
|
62
|
+
Helper.backticks("curl -O #{url} && security import #{filename} #{keychain}", print: FastlaneCore::Globals.verbose?)
|
63
63
|
UI.user_error!("Could not install WWDR certificate") unless $?.success?
|
64
64
|
end
|
65
65
|
end
|
@@ -70,7 +70,7 @@ module FastlaneCore
|
|
70
70
|
"security default-keychain -d user"
|
71
71
|
]
|
72
72
|
priority.each do |command|
|
73
|
-
keychains = Helper.backticks(command, print:
|
73
|
+
keychains = Helper.backticks(command, print: FastlaneCore::Globals.verbose?).split("\n")
|
74
74
|
unless keychains.empty?
|
75
75
|
# Select first keychain name from returned keychains list
|
76
76
|
return keychains[0].strip.tr('"', '')
|
@@ -31,7 +31,7 @@ module FastlaneCore
|
|
31
31
|
# @param loading [String] A loading string that is shown before the first output
|
32
32
|
# @return [String] All the output as string
|
33
33
|
def execute(command: nil, print_all: false, print_command: true, error: nil, prefix: nil, loading: nil)
|
34
|
-
print_all = true if
|
34
|
+
print_all = true if FastlaneCore::Globals.verbose?
|
35
35
|
prefix ||= {}
|
36
36
|
|
37
37
|
output = []
|
@@ -6,7 +6,7 @@ module FastlaneCore
|
|
6
6
|
include Commander::Methods
|
7
7
|
|
8
8
|
# Calls the appropriate methods for commander to show the available parameters
|
9
|
-
def generate(options)
|
9
|
+
def generate(options, command: nil)
|
10
10
|
# First, enable `always_trace`, to show the stack trace
|
11
11
|
always_trace!
|
12
12
|
|
@@ -64,8 +64,12 @@ module FastlaneCore
|
|
64
64
|
# automatically coerced or otherwise handled by the ConfigItem for others.
|
65
65
|
args = [short_switch, long_switch, (type || String), description].compact
|
66
66
|
|
67
|
-
|
68
|
-
|
67
|
+
if command
|
68
|
+
command.option(*args)
|
69
|
+
else
|
70
|
+
# This is the call to Commander to set up the option we've been building.
|
71
|
+
global_option(*args)
|
72
|
+
end
|
69
73
|
end
|
70
74
|
end
|
71
75
|
|
@@ -194,21 +194,6 @@ module FastlaneCore
|
|
194
194
|
all.each(&:reset)
|
195
195
|
end
|
196
196
|
|
197
|
-
def copy_logarchive(device, dest)
|
198
|
-
sim_resource_dir = FastlaneCore::CommandExecutor.execute(command: "xcrun simctl getenv #{device.udid} SIMULATOR_SHARED_RESOURCES_DIRECTORY 2>/dev/null", print_all: false, print_command: true)
|
199
|
-
logarchive_src = File.join(sim_resource_dir, "system_logs.logarchive")
|
200
|
-
|
201
|
-
# if logarchive already exists it fails as the .logarchive is a directory, so delete it. to be sure its gone
|
202
|
-
FileUtils.rm_rf(logarchive_src)
|
203
|
-
FileUtils.rm_rf(dest)
|
204
|
-
|
205
|
-
command = "xcrun simctl spawn #{device.udid} log collect 2>/dev/null"
|
206
|
-
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: true)
|
207
|
-
|
208
|
-
FileUtils.cp_r(logarchive_src, dest)
|
209
|
-
UI.success "Copying file '#{logarchive_src}' to '#{dest}'..."
|
210
|
-
end
|
211
|
-
|
212
197
|
def reset_all_by_version(os_version: nil)
|
213
198
|
return false unless os_version
|
214
199
|
all.select { |device| device.os_version == os_version }.each(&:reset)
|
@@ -232,7 +217,49 @@ module FastlaneCore
|
|
232
217
|
|
233
218
|
UI.verbose "Launching #{simulator_path} for device: #{device.name} (#{device.udid})"
|
234
219
|
|
235
|
-
Helper.backticks("open -a #{simulator_path} --args -CurrentDeviceUDID #{device.udid}", print:
|
220
|
+
Helper.backticks("open -a #{simulator_path} --args -CurrentDeviceUDID #{device.udid}", print: FastlaneCore::Globals.verbose?)
|
221
|
+
end
|
222
|
+
|
223
|
+
def copy_logs(device, log_identity, logs_destination_dir)
|
224
|
+
logs_destination_dir = File.expand_path(logs_destination_dir)
|
225
|
+
os_version = FastlaneCore::CommandExecutor.execute(command: 'sw_vers -productVersion', print_all: false, print_command: false)
|
226
|
+
|
227
|
+
if Gem::Version.new(os_version) >= Gem::Version.new('10.12.0')
|
228
|
+
copy_logarchive(device, log_identity, logs_destination_dir)
|
229
|
+
else
|
230
|
+
copy_logfile(device, log_identity, logs_destination_dir)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
private
|
235
|
+
|
236
|
+
def copy_logfile(device, log_identity, logs_destination_dir)
|
237
|
+
logfile_src = File.expand_path("~/Library/Logs/CoreSimulator/#{device.udid}/system.log")
|
238
|
+
return unless File.exist?(logfile_src)
|
239
|
+
|
240
|
+
FileUtils.mkdir_p(logs_destination_dir)
|
241
|
+
logfile_dst = File.join(logs_destination_dir, "system-#{log_identity}.log")
|
242
|
+
|
243
|
+
FileUtils.rm_f(logfile_dst)
|
244
|
+
FileUtils.cp(logfile_src, logfile_dst)
|
245
|
+
UI.success "Copying file '#{logfile_src}' to '#{logfile_dst}'..."
|
246
|
+
end
|
247
|
+
|
248
|
+
def copy_logarchive(device, log_identity, logs_destination_dir)
|
249
|
+
sim_resource_dir = FastlaneCore::CommandExecutor.execute(command: "xcrun simctl getenv #{device.udid} SIMULATOR_SHARED_RESOURCES_DIRECTORY 2>/dev/null", print_all: false, print_command: true)
|
250
|
+
logarchive_src = File.join(sim_resource_dir, "system_logs.logarchive")
|
251
|
+
logarchive_dst = File.join(logs_destination_dir, "system_logs-#{log_identity}.logarchive")
|
252
|
+
|
253
|
+
# if logarchive already exists it fails as the .logarchive is a directory, so delete it. to be sure its gone
|
254
|
+
FileUtils.rm_rf(logarchive_src)
|
255
|
+
FileUtils.rm_rf(logarchive_dst)
|
256
|
+
|
257
|
+
command = "xcrun simctl spawn #{device.udid} log collect 2>/dev/null"
|
258
|
+
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: true)
|
259
|
+
|
260
|
+
FileUtils.mkdir_p(logarchive_dst)
|
261
|
+
FileUtils.cp_r("#{logarchive_src}/.", logarchive_dst)
|
262
|
+
UI.success "Copying file '#{logarchive_src}' to '#{logarchive_dst}'..."
|
236
263
|
end
|
237
264
|
end
|
238
265
|
end
|