fastlane 2.30.0.beta.20170511010018 → 2.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/deliver/lib/deliver/upload_metadata.rb +1 -1
- data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +41 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +1 -2
- data/fastlane/lib/fastlane/environment_printer.rb +11 -13
- data/fastlane/lib/fastlane/runner.rb +3 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core.rb +3 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +27 -6
- data/fastlane_core/lib/fastlane_core/crash_reporter/backtrace_sanitizer.rb +42 -0
- data/fastlane_core/lib/fastlane_core/crash_reporter/crash_report_generator.rb +50 -0
- data/fastlane_core/lib/fastlane_core/crash_reporter/crash_reporter.rb +82 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +7 -0
- data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +5 -1
- data/match/lib/match/encrypt.rb +3 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +8 -1
- metadata +21 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b24de7dca69e16aea8b48239f2eb105cf61d42e4
|
4
|
+
data.tar.gz: abee9d945caa12cec5f5b84736e196db6ed6270e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 108860da51b20af99859e93b50f377797d6991f2fbd18b91c07f56c70905c6c4429b02a84e510f96c146a72f8289f4ea198f06fe26cf58d261a4c055c8362234
|
7
|
+
data.tar.gz: b7c2b1d67ed298ca2424eadede430719972b3a6e86a03365b4619cbfd5980afe937f6a1c90bd6e00c8cccf757086a794704cb3800359cf53713fae8272742a29
|
data/README.md
CHANGED
@@ -154,6 +154,12 @@ We have recently changed the destination service to which these metrics are repo
|
|
154
154
|
|
155
155
|
You can easily opt-out of metrics collection by adding `opt_out_usage` at the top of your `Fastfile` or by setting the environment variable `FASTLANE_OPT_OUT_USAGE`. Participating helps us provide the best possible support for _fastlane_, so we hope you'll consider it a plus! :heavy_plus_sign:
|
156
156
|
|
157
|
+
## Crash Reporting
|
158
|
+
|
159
|
+
In order to continuously improve stability, _fastlane_ will record crash reports with sanitized stacktraces. Sanitization removes personal information from the stacktrace and error message (including home directories, _fastlane_ path, gem paths, environment variables, and parameters).
|
160
|
+
|
161
|
+
You can easily opt-out of crash reporting by adding `opt_out_crash_reporting` at the top of your `Fastfile` or by setting the environment variable `FASTLANE_OPT_OUT_CRASH_REPORTING`. Just like metrics mentioned above, participating helps us provide the best possible support for _fastlane_, so we hope you'll consider it a plus! :heavy_plus_sign:
|
162
|
+
|
157
163
|
## Need Help?
|
158
164
|
|
159
165
|
Please [submit an issue](https://github.com/fastlane/fastlane/issues) on GitHub and provide information about your setup.
|
@@ -250,7 +250,7 @@ module Deliver
|
|
250
250
|
UI.user_error!("`trade_representative_contact_information` must be a hash", show_github_issues: true) unless info.kind_of?(Hash)
|
251
251
|
|
252
252
|
TRADE_REPRESENTATIVE_CONTACT_INFORMATION_VALUES.each do |key, option_name|
|
253
|
-
v.send("#{key}=", info[option_name].chomp) if info[option_name]
|
253
|
+
v.send("#{key}=", info[option_name].to_s.chomp) if info[option_name]
|
254
254
|
end
|
255
255
|
end
|
256
256
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class OptOutCrashReportingAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
ENV['FASTLANE_OPT_OUT_CRASH_REPORTING'] = "YES"
|
6
|
+
UI.message("Disabled crash reporting")
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.description
|
10
|
+
"This will prevent reports from being uploaded when _fastlane_ crashes"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.details
|
14
|
+
[
|
15
|
+
"By default, fastlane will send a report when it crashes",
|
16
|
+
"The stacktrace is sanitized so no personal information is sent.",
|
17
|
+
"Learn more at https://github.com/fastlane/fastlane#crash-reporting",
|
18
|
+
"Add `opt_out_crash_reporting` at the top of your Fastfile to disable crash reporting"
|
19
|
+
].join(' ')
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.authors
|
23
|
+
['mpirri', 'ohayon']
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.is_supported?(platform)
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.example_code
|
31
|
+
[
|
32
|
+
'opt_out_crash_reporting # add this to the top of your Fastfile'
|
33
|
+
]
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.category
|
37
|
+
:misc
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -57,8 +57,7 @@ module Fastlane
|
|
57
57
|
update_needed.each do |tool_info|
|
58
58
|
tool = tool_info[0]
|
59
59
|
local_version = Gem::Version.new(highest_versions[tool].version)
|
60
|
-
|
61
|
-
latest_version = FastlaneCore::UpdateChecker.fetch_latest(update_url)
|
60
|
+
latest_version = FastlaneCore::UpdateChecker.fetch_latest(tool)
|
62
61
|
UI.message("Updating #{tool} from #{local_version} to #{latest_version} ... 🚀")
|
63
62
|
|
64
63
|
# Approximate_recommendation will create a string like "~> 0.10" from a version 0.10.0, e.g. one that is valid for versions >= 0.10 and <1.0
|
@@ -62,17 +62,16 @@ module Fastlane
|
|
62
62
|
table << "|--------|---------|\n"
|
63
63
|
plugin_manager.available_plugins.each do |plugin|
|
64
64
|
begin
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
installed_version = Fastlane::ActionCollector.determine_version(plugin)
|
66
|
+
latest_version = FastlaneCore::UpdateChecker.fetch_latest(plugin)
|
67
|
+
if Gem::Version.new(installed_version) == Gem::Version.new(latest_version)
|
68
|
+
update_status = "✅ Up-To-Date"
|
69
|
+
else
|
70
|
+
update_status = "🚫 Update available"
|
71
|
+
end
|
72
|
+
rescue
|
73
|
+
update_status = "💥 Check failed"
|
72
74
|
end
|
73
|
-
rescue
|
74
|
-
update_status = "💥 Check failed"
|
75
|
-
end
|
76
75
|
table << "| #{plugin} | #{installed_version} | #{update_status} |\n"
|
77
76
|
end
|
78
77
|
|
@@ -107,9 +106,8 @@ module Fastlane
|
|
107
106
|
|
108
107
|
next unless fastlane_tools.include?(current_gem.name.to_sym)
|
109
108
|
begin
|
110
|
-
|
111
|
-
|
112
|
-
if Gem::Version.new(current_gem.version) == Gem::Version.new(latest_version)
|
109
|
+
latest_version = FastlaneCore::UpdateChecker.fetch_latest(current_gem.name)
|
110
|
+
if Gem::Version.new(current_gem.version) >= Gem::Version.new(latest_version)
|
113
111
|
update_status = "✅ Up-To-Date"
|
114
112
|
else
|
115
113
|
update_status = "🚫 Update available"
|
@@ -253,6 +253,7 @@ module Fastlane
|
|
253
253
|
end
|
254
254
|
end
|
255
255
|
rescue FastlaneCore::Interface::FastlaneError => e # user_error!
|
256
|
+
FastlaneCore::CrashReporter.report_crash(type: :user_error, exception: e, action: method_sym)
|
256
257
|
collector.did_raise_error(method_sym)
|
257
258
|
raise e
|
258
259
|
rescue FastlaneCore::Interface::FastlaneTestFailure => e # test_failure!
|
@@ -260,6 +261,8 @@ module Fastlane
|
|
260
261
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
261
262
|
# high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else
|
262
263
|
# Catches all exceptions, since some plugins might use system exits to get out
|
264
|
+
type = e.kind_of?(FastlaneCore::Interface::FastlaneCrash) ? :crash : :exception
|
265
|
+
FastlaneCore::CrashReporter.report_crash(type: type, exception: e, action: method_sym)
|
263
266
|
collector.did_crash(method_sym)
|
264
267
|
raise e
|
265
268
|
end
|
@@ -31,6 +31,9 @@ require 'fastlane_core/fastlane_folder'
|
|
31
31
|
require 'fastlane_core/keychain_importer'
|
32
32
|
require 'fastlane_core/swag'
|
33
33
|
require 'fastlane_core/build_watcher'
|
34
|
+
require 'fastlane_core/crash_reporter/crash_reporter'
|
35
|
+
require 'fastlane_core/crash_reporter/crash_report_generator'
|
36
|
+
require 'fastlane_core/crash_reporter/backtrace_sanitizer'
|
34
37
|
|
35
38
|
# Third Party code
|
36
39
|
require 'colored'
|
@@ -4,10 +4,14 @@ module FastlaneCore
|
|
4
4
|
# A reference to the actual configuration
|
5
5
|
attr_accessor :config
|
6
6
|
|
7
|
+
# Path to the config file represented by the current object
|
8
|
+
attr_accessor :configfile_path
|
9
|
+
|
7
10
|
# @param config [FastlaneCore::Configuration] is stored to save the resulting values
|
8
11
|
# @param path [String] The path to the configuration file to use
|
9
12
|
def initialize(config, path, block_for_missing)
|
10
13
|
self.config = config
|
14
|
+
self.configfile_path = path
|
11
15
|
|
12
16
|
@block_for_missing = block_for_missing
|
13
17
|
content = File.read(path)
|
@@ -25,20 +29,20 @@ module FastlaneCore
|
|
25
29
|
eval(content) # this is okay in this case
|
26
30
|
# rubocop:enable Security/Eval
|
27
31
|
|
28
|
-
print_resulting_config_values
|
32
|
+
print_resulting_config_values # only on success
|
29
33
|
rescue SyntaxError => ex
|
30
34
|
line = ex.to_s.match(/\(eval\):(\d+)/)[1]
|
31
35
|
UI.user_error!("Syntax error in your configuration file '#{path}' on line #{line}: #{ex}")
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
35
|
-
def print_resulting_config_values
|
39
|
+
def print_resulting_config_values
|
36
40
|
require 'terminal-table'
|
37
|
-
UI.success("Successfully loaded '#{File.expand_path(
|
41
|
+
UI.success("Successfully loaded '#{File.expand_path(self.configfile_path)}' 📄")
|
38
42
|
|
39
43
|
# Show message when self.modified_values is empty
|
40
44
|
if self.modified_values.empty?
|
41
|
-
UI.important("No values defined in '#{
|
45
|
+
UI.important("No values defined in '#{self.configfile_path}'")
|
42
46
|
return
|
43
47
|
end
|
44
48
|
|
@@ -48,7 +52,7 @@ module FastlaneCore
|
|
48
52
|
|
49
53
|
puts ""
|
50
54
|
puts Terminal::Table.new(rows: FastlaneCore::PrintTable.transform_output(rows),
|
51
|
-
title: "Detected Values from '#{
|
55
|
+
title: "Detected Values from '#{self.configfile_path}'")
|
52
56
|
puts ""
|
53
57
|
end
|
54
58
|
|
@@ -66,7 +70,24 @@ module FastlaneCore
|
|
66
70
|
value = arguments.first
|
67
71
|
value = yield if value.nil? && block_given?
|
68
72
|
|
69
|
-
|
73
|
+
if value.nil?
|
74
|
+
unless block_given?
|
75
|
+
# The config file has something like this:
|
76
|
+
#
|
77
|
+
# clean
|
78
|
+
#
|
79
|
+
# without specifying a value for the method call
|
80
|
+
# or a block. This is most likely a user error
|
81
|
+
# So we tell the user that they can provide a value
|
82
|
+
warning = ["In the config file '#{self.configfile_path}'"]
|
83
|
+
warning << "you have the line #{method_sym}, but didn't provide"
|
84
|
+
warning << "any value. Make sure to append a value rght after the"
|
85
|
+
warning << "option name. Make sure to check the docs for more information"
|
86
|
+
UI.important(warning.join(" "))
|
87
|
+
end
|
88
|
+
return
|
89
|
+
end
|
90
|
+
|
70
91
|
self.modified_values[method_sym] = value
|
71
92
|
|
72
93
|
# to support frozen strings (e.g. ENV variables) too
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
class BacktraceSanitizer
|
3
|
+
class << self
|
4
|
+
def sanitize(type: :unknown, backtrace: nil)
|
5
|
+
if type == :user_error || type == :crash
|
6
|
+
# If the crash is from `UI` we only want to include the stack trace
|
7
|
+
# up to the point where the crash was initiated.
|
8
|
+
# The two stack frames we are dropping are `method_missing` and
|
9
|
+
# the call to `crash!` or `user_error!`.
|
10
|
+
stack = backtrace.drop(2)
|
11
|
+
else
|
12
|
+
stack = backtrace
|
13
|
+
end
|
14
|
+
|
15
|
+
stack = remove_fastlane_gem_path(backtrace: stack)
|
16
|
+
stack = remove_gem_home_path(backtrace: stack)
|
17
|
+
remove_home_dir_mentions(backtrace: stack)
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove_fastlane_gem_path(backtrace: nil)
|
21
|
+
fastlane_path = Gem.loaded_specs['fastlane'].full_gem_path
|
22
|
+
return backtrace unless fastlane_path
|
23
|
+
backtrace.map do |frame|
|
24
|
+
frame.gsub(fastlane_path, '[fastlane_path]')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def remove_gem_home_path(backtrace: nil)
|
29
|
+
return backtrace unless Gem.dir
|
30
|
+
backtrace.map do |frame|
|
31
|
+
frame.gsub(Gem.dir, '[gem_home]')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def remove_home_dir_mentions(backtrace: nil)
|
36
|
+
backtrace.map do |frame|
|
37
|
+
frame.gsub(Dir.home, '~')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
class CrashReportGenerator
|
3
|
+
class << self
|
4
|
+
def types
|
5
|
+
{
|
6
|
+
user_error: '[USER_ERROR]',
|
7
|
+
crash: '[FASTLANE_CRASH]',
|
8
|
+
exception: '[EXCEPTION]',
|
9
|
+
connection_failure: '[CONNECTION_FAILURE]',
|
10
|
+
system: '[SYSTEM_ERROR]',
|
11
|
+
option_parser: '[OPTION_PARSER]',
|
12
|
+
invalid_command: '[INVALID_COMMAND]',
|
13
|
+
unknown: '[UNKNOWN]'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate(type: :unknown, exception: nil, action: nil)
|
18
|
+
message = crash_report_message(type: type, exception: exception)
|
19
|
+
crash_report_payload(message: message, action: action)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def crash_report_message(type: :unknown, exception: nil)
|
25
|
+
return if exception.nil?
|
26
|
+
backtrace = FastlaneCore::BacktraceSanitizer.sanitize(type: type, backtrace: exception.backtrace).join("\n")
|
27
|
+
message = types[type]
|
28
|
+
if type == :user_error
|
29
|
+
message += ': '
|
30
|
+
else
|
31
|
+
message += ": #{exception.message}"
|
32
|
+
end
|
33
|
+
message = message[0..100]
|
34
|
+
message += "\n" unless type == :user_error
|
35
|
+
message + backtrace
|
36
|
+
end
|
37
|
+
|
38
|
+
def crash_report_payload(message: '', action: nil)
|
39
|
+
{
|
40
|
+
'eventTime' => Time.now.utc.to_datetime.rfc3339,
|
41
|
+
'serviceContext' => {
|
42
|
+
'service' => action || 'fastlane',
|
43
|
+
'version' => Fastlane::VERSION
|
44
|
+
},
|
45
|
+
'message' => message
|
46
|
+
}.to_json
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module FastlaneCore
|
5
|
+
class CrashReporter
|
6
|
+
class << self
|
7
|
+
@did_report_crash = false
|
8
|
+
|
9
|
+
@explitly_enabled_for_testing = false
|
10
|
+
|
11
|
+
def crash_report_path
|
12
|
+
File.join(FastlaneCore.fastlane_user_dir, 'latest_crash.json')
|
13
|
+
end
|
14
|
+
|
15
|
+
def enabled?
|
16
|
+
!FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_CRASH_REPORTING")
|
17
|
+
end
|
18
|
+
|
19
|
+
def report_crash(type: :unknown, exception: nil, action: nil)
|
20
|
+
return unless enabled?
|
21
|
+
return if @did_report_crash
|
22
|
+
|
23
|
+
# Do not run the crash reporter while tests are happening (it might try to send
|
24
|
+
# a crash report), unless we have explictly turned on the crash reporter because
|
25
|
+
# we want to test it
|
26
|
+
return if Helper.test? && !@explitly_enabled_for_testing
|
27
|
+
|
28
|
+
payload = CrashReportGenerator.generate(type: type, exception: exception, action: action)
|
29
|
+
send_report(payload: payload)
|
30
|
+
save_file(payload: payload)
|
31
|
+
show_message unless did_show_message?
|
32
|
+
@did_report_crash = true
|
33
|
+
end
|
34
|
+
|
35
|
+
def reset_crash_reporter_for_testing
|
36
|
+
@did_report_crash = false
|
37
|
+
end
|
38
|
+
|
39
|
+
def enable_for_testing
|
40
|
+
@explitly_enabled_for_testing = true
|
41
|
+
end
|
42
|
+
|
43
|
+
def disable_for_testing
|
44
|
+
@explitly_enabled_for_testing = false
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def show_message
|
50
|
+
UI.message("Sending crash report...")
|
51
|
+
UI.message("The stacktrace is sanitized so no personal information is sent.")
|
52
|
+
UI.message("To see what we are sending, look here: #{crash_report_path}")
|
53
|
+
UI.message("Learn more at https://github.com/fastlane/fastlane#crash-reporting")
|
54
|
+
UI.message("You can disable crash reporting by adding `opt_out_crash_reporting` at the top of your Fastfile")
|
55
|
+
end
|
56
|
+
|
57
|
+
def did_show_message?
|
58
|
+
file_name = ".did_show_opt_out_crash_info"
|
59
|
+
|
60
|
+
path = File.join(FastlaneCore.fastlane_user_dir, file_name)
|
61
|
+
did_show = File.exist?(path)
|
62
|
+
|
63
|
+
return did_show if did_show
|
64
|
+
|
65
|
+
File.write(path, '1')
|
66
|
+
false
|
67
|
+
end
|
68
|
+
|
69
|
+
def save_file(payload: "{}")
|
70
|
+
File.write(crash_report_path, payload)
|
71
|
+
end
|
72
|
+
|
73
|
+
def send_report(payload: "{}")
|
74
|
+
connection = Faraday.new(url: "https://clouderrorreporting.googleapis.com/v1beta1/projects/fastlane-166414/events:report?key=AIzaSyAMACPfuI-wi4grJWEZjcPvhfV2Rhmddwo")
|
75
|
+
connection.post do |request|
|
76
|
+
request.headers['Content-Type'] = 'application/json'
|
77
|
+
request.body = payload
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -48,6 +48,7 @@ module Commander
|
|
48
48
|
if FastlaneCore::Helper.test?
|
49
49
|
raise e
|
50
50
|
else
|
51
|
+
FastlaneCore::CrashReporter.report_crash(type: :invalid_command, exception: e, action: @program[:name])
|
51
52
|
abort "#{e}. Use --help for more information"
|
52
53
|
end
|
53
54
|
rescue Interrupt => e
|
@@ -66,11 +67,13 @@ module Commander
|
|
66
67
|
if FastlaneCore::Helper.test?
|
67
68
|
raise e
|
68
69
|
else
|
70
|
+
FastlaneCore::CrashReporter.report_crash(type: :option_parser, exception: e, action: @program[:name])
|
69
71
|
abort e.to_s
|
70
72
|
end
|
71
73
|
rescue FastlaneCore::Interface::FastlaneError => e # user_error!
|
72
74
|
collector.did_raise_error(@program[:name])
|
73
75
|
show_github_issues(e.message) if e.show_github_issues
|
76
|
+
FastlaneCore::CrashReporter.report_crash(type: :user_error, exception: e, action: @program[:name])
|
74
77
|
display_user_error!(e, e.message)
|
75
78
|
rescue Errno::ENOENT => e
|
76
79
|
# We're also printing the new-lines, as otherwise the message is not very visible in-between the error and the stacktrace
|
@@ -78,6 +81,7 @@ module Commander
|
|
78
81
|
FastlaneCore::UI.important("Error accessing file, this might be due to fastlane's directory handling")
|
79
82
|
FastlaneCore::UI.important("Check out https://docs.fastlane.tools/advanced/#directory-behavior for more details")
|
80
83
|
puts ""
|
84
|
+
FastlaneCore::CrashReporter.report_crash(type: :system, exception: e, action: @program[:name])
|
81
85
|
raise e
|
82
86
|
rescue FastlaneCore::Interface::FastlaneTestFailure => e # test_failure!
|
83
87
|
display_user_error!(e, e.to_s)
|
@@ -87,9 +91,12 @@ module Commander
|
|
87
91
|
if e.message.include? 'Connection reset by peer - SSL_connect'
|
88
92
|
handle_tls_error!(e)
|
89
93
|
else
|
94
|
+
FastlaneCore::CrashReporter.report_crash(type: :connection_failure, exception: e, action: @program[:name])
|
90
95
|
handle_unknown_error!(e)
|
91
96
|
end
|
92
97
|
rescue => e # high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else
|
98
|
+
type = e.kind_of?(FastlaneCore::Interface::FastlaneCrash) ? :crash : :exception
|
99
|
+
FastlaneCore::CrashReporter.report_crash(type: type, exception: e, action: @program[:name])
|
93
100
|
collector.did_crash(@program[:name])
|
94
101
|
handle_unknown_error!(e)
|
95
102
|
ensure
|
@@ -112,7 +112,11 @@ module FastlaneCore
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def self.fetch_latest(gem_name)
|
115
|
-
JSON.parse(Excon.get(
|
115
|
+
JSON.parse(Excon.get(generate_fetch_url(gem_name)).body)["version"]
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.generate_fetch_url(gem_name)
|
119
|
+
"https://rubygems.org/api/v1/gems/#{gem_name}.json"
|
116
120
|
end
|
117
121
|
|
118
122
|
# (optional) Returns the app identifier for the current tool
|
data/match/lib/match/encrypt.rb
CHANGED
@@ -16,7 +16,9 @@ module Match
|
|
16
16
|
|
17
17
|
unless password
|
18
18
|
if !UI.interactive?
|
19
|
-
UI.error "
|
19
|
+
UI.error "Neither the MATCH_PASSWORD environment variable nor the local keychain contained a password."
|
20
|
+
UI.error "Bailing out instead of asking for a password, since this is non-interactive mode."
|
21
|
+
UI.user_error!("Try setting the MATCH_PASSWORD environment variable, or temporarily enable interactive mode to store a password.")
|
20
22
|
else
|
21
23
|
UI.important "Enter the passphrase that should be used to encrypt/decrypt your certificates"
|
22
24
|
UI.important "This passphrase is specific per repository and will be stored in your local keychain"
|
@@ -6,6 +6,13 @@
|
|
6
6
|
// Copyright © 2015 Felix Krause. All rights reserved.
|
7
7
|
//
|
8
8
|
|
9
|
+
// -----------------------------------------------------
|
10
|
+
// IMPORTANT: When modifying this file, make sure to
|
11
|
+
// increment the version number at the very
|
12
|
+
// bottom of the file to notify users about
|
13
|
+
// the new SnapshotHelper.swift
|
14
|
+
// -----------------------------------------------------
|
15
|
+
|
9
16
|
import Foundation
|
10
17
|
import XCTest
|
11
18
|
|
@@ -163,4 +170,4 @@ extension XCUIElement {
|
|
163
170
|
|
164
171
|
// Please don't remove the lines below
|
165
172
|
// They are used to detect outdated configuration files
|
166
|
-
// SnapshotHelperVersion [1.
|
173
|
+
// SnapshotHelperVersion [1.4]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.30.0
|
4
|
+
version: 2.30.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -922,6 +922,7 @@ files:
|
|
922
922
|
- fastlane/lib/fastlane/actions/number_of_commits.rb
|
923
923
|
- fastlane/lib/fastlane/actions/oclint.rb
|
924
924
|
- fastlane/lib/fastlane/actions/onesignal.rb
|
925
|
+
- fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb
|
925
926
|
- fastlane/lib/fastlane/actions/opt_out_usage.rb
|
926
927
|
- fastlane/lib/fastlane/actions/pem.rb
|
927
928
|
- fastlane/lib/fastlane/actions/pilot.rb
|
@@ -1082,6 +1083,9 @@ files:
|
|
1082
1083
|
- fastlane_core/lib/fastlane_core/configuration/configuration.rb
|
1083
1084
|
- fastlane_core/lib/fastlane_core/configuration/configuration_file.rb
|
1084
1085
|
- fastlane_core/lib/fastlane_core/core_ext/string.rb
|
1086
|
+
- fastlane_core/lib/fastlane_core/crash_reporter/backtrace_sanitizer.rb
|
1087
|
+
- fastlane_core/lib/fastlane_core/crash_reporter/crash_report_generator.rb
|
1088
|
+
- fastlane_core/lib/fastlane_core/crash_reporter/crash_reporter.rb
|
1085
1089
|
- fastlane_core/lib/fastlane_core/device_manager.rb
|
1086
1090
|
- fastlane_core/lib/fastlane_core/env.rb
|
1087
1091
|
- fastlane_core/lib/fastlane_core/fastlane_folder.rb
|
@@ -1357,23 +1361,23 @@ metadata:
|
|
1357
1361
|
post_install_message:
|
1358
1362
|
rdoc_options: []
|
1359
1363
|
require_paths:
|
1360
|
-
- pem/lib
|
1361
|
-
- produce/lib
|
1362
|
-
- gym/lib
|
1363
|
-
- snapshot/lib
|
1364
|
-
- sigh/lib
|
1365
|
-
- pilot/lib
|
1366
|
-
- supply/lib
|
1367
1364
|
- cert/lib
|
1365
|
+
- credentials_manager/lib
|
1368
1366
|
- deliver/lib
|
1369
|
-
- match/lib
|
1370
|
-
- fastlane_core/lib
|
1371
|
-
- spaceship/lib
|
1372
1367
|
- fastlane/lib
|
1368
|
+
- fastlane_core/lib
|
1373
1369
|
- frameit/lib
|
1374
|
-
-
|
1375
|
-
-
|
1370
|
+
- gym/lib
|
1371
|
+
- match/lib
|
1372
|
+
- pem/lib
|
1373
|
+
- pilot/lib
|
1374
|
+
- produce/lib
|
1376
1375
|
- scan/lib
|
1376
|
+
- screengrab/lib
|
1377
|
+
- sigh/lib
|
1378
|
+
- snapshot/lib
|
1379
|
+
- spaceship/lib
|
1380
|
+
- supply/lib
|
1377
1381
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1378
1382
|
requirements:
|
1379
1383
|
- - ">="
|
@@ -1381,14 +1385,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1381
1385
|
version: 2.0.0
|
1382
1386
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1383
1387
|
requirements:
|
1384
|
-
- - "
|
1388
|
+
- - ">="
|
1385
1389
|
- !ruby/object:Gem::Version
|
1386
|
-
version:
|
1390
|
+
version: '0'
|
1387
1391
|
requirements: []
|
1388
1392
|
rubyforge_project:
|
1389
|
-
rubygems_version: 2.
|
1393
|
+
rubygems_version: 2.5.2
|
1390
1394
|
signing_key:
|
1391
1395
|
specification_version: 4
|
1392
1396
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
1393
1397
|
Android apps
|
1394
1398
|
test_files: []
|
1399
|
+
has_rdoc:
|