fastlane_core 0.43.2 → 0.43.3
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/lib/fastlane_core.rb +4 -0
- data/lib/fastlane_core/core_ext/string.rb +17 -0
- data/lib/fastlane_core/tool_collector.rb +89 -4
- data/lib/fastlane_core/ui/fastlane_runner.rb +3 -2
- data/lib/fastlane_core/update_checker/changelog.rb +4 -1
- data/lib/fastlane_core/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dec70f9af0189cb95d059bf6235e5fdb06bdd566
|
4
|
+
data.tar.gz: 42c1c4810eec48f3485a90d68297f8904d7788b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d15cbd14e8e175e139caa99dcc27b2ce1513bf2fd3f479f6c994c8df6fee287a6b944c82d20d1e57ce5f8b183cf6b3d05f8d73af783073189bd649afea255e45
|
7
|
+
data.tar.gz: eff76516a1a921b4edbdeb7ea5f9ab0ec4508f10dd555957b79a8ce48bdd401590f5f72bd23f178c5d3a3deb0104026228065049a1aa754255c920259e988ca7
|
data/lib/fastlane_core.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
class String
|
2
|
+
def fastlane_class
|
3
|
+
split('_').collect!(&:capitalize).join
|
4
|
+
end
|
5
|
+
|
6
|
+
def fastlane_module
|
7
|
+
self == "pem" ? 'PEM' : self.fastlane_class
|
8
|
+
end
|
9
|
+
|
10
|
+
def fastlane_underscore
|
11
|
+
self.gsub(/::/, '/').
|
12
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
13
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
14
|
+
tr("-", "_").
|
15
|
+
downcase
|
16
|
+
end
|
17
|
+
end
|
@@ -1,17 +1,58 @@
|
|
1
1
|
module FastlaneCore
|
2
2
|
class ToolCollector
|
3
|
-
HOST_URL = "https://fastlane-enhancer.herokuapp.com"
|
3
|
+
HOST_URL = ENV['FASTLANE_ENHANCER_URL'] || "https://fastlane-enhancer.herokuapp.com"
|
4
4
|
|
5
|
+
# This is the original error reporting mechanism, which has always represented
|
6
|
+
# either controlled (UI.user_error!), or uncontrolled (UI.crash!, anything else)
|
7
|
+
# exceptions.
|
8
|
+
#
|
9
|
+
# Thus, if you call `did_crash`, it will record the failure both here, and in the
|
10
|
+
# newer, more specific `crash` field.
|
11
|
+
#
|
12
|
+
# This value is a String, which is the name of the tool that caused the error
|
5
13
|
attr_reader :error
|
6
14
|
|
15
|
+
# This is the newer field for tracking only uncontrolled exceptions.
|
16
|
+
#
|
17
|
+
# This is written to only when `did_crash` is called, and therefore excludes
|
18
|
+
# controlled exceptions.
|
19
|
+
#
|
20
|
+
# This value is a boolean, which is true if the error was an uncontrolled exception
|
21
|
+
attr_reader :crash
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@crash = false
|
25
|
+
end
|
26
|
+
|
7
27
|
def did_launch_action(name)
|
8
28
|
name = name.to_sym
|
9
|
-
|
29
|
+
|
30
|
+
if is_official?(name)
|
31
|
+
launches[name] += 1
|
32
|
+
versions[name] ||= determine_version(name)
|
33
|
+
end
|
10
34
|
end
|
11
35
|
|
36
|
+
# Call when the problem is a caught/controlled exception (e.g. via UI.user_error!)
|
12
37
|
def did_raise_error(name)
|
13
38
|
name = name.to_sym
|
14
|
-
|
39
|
+
if is_official?(name)
|
40
|
+
@error = name
|
41
|
+
# Don't write to the @crash field so that we can distinguish this exception later
|
42
|
+
# as being controlled
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Call when the problem is an uncaught/uncontrolled exception (e.g. via UI.crash!)
|
47
|
+
def did_crash(name)
|
48
|
+
name = name.to_sym
|
49
|
+
if is_official?(name)
|
50
|
+
# Write to the @error field to maintain the historical behavior of the field, so
|
51
|
+
# that the server gets the same data in that field from old and new clients
|
52
|
+
@error = name
|
53
|
+
# Also specifically note that this exception was uncontrolled in the @crash field
|
54
|
+
@crash = true
|
55
|
+
end
|
15
56
|
end
|
16
57
|
|
17
58
|
def did_finish
|
@@ -24,8 +65,10 @@ module FastlaneCore
|
|
24
65
|
require 'excon'
|
25
66
|
url = HOST_URL + '/did_launch?'
|
26
67
|
url += URI.encode_www_form(
|
68
|
+
versions: versions.to_json,
|
27
69
|
steps: launches.to_json,
|
28
|
-
error: @error
|
70
|
+
error: @error,
|
71
|
+
crash: @crash ? @error : nil
|
29
72
|
)
|
30
73
|
|
31
74
|
if Helper.is_test? # don't send test data
|
@@ -57,6 +100,19 @@ module FastlaneCore
|
|
57
100
|
@launches ||= Hash.new(0)
|
58
101
|
end
|
59
102
|
|
103
|
+
# Maintains a hash of tool names to their detected versions.
|
104
|
+
#
|
105
|
+
# This data is sent in the same manner as launches, as an inline form-encoded JSON value in the POST.
|
106
|
+
# For example:
|
107
|
+
#
|
108
|
+
# {
|
109
|
+
# match: '0.5.0',
|
110
|
+
# fastlane: '1.86.1'
|
111
|
+
# }
|
112
|
+
def versions
|
113
|
+
@versions ||= {}
|
114
|
+
end
|
115
|
+
|
60
116
|
def is_official?(name)
|
61
117
|
return true
|
62
118
|
end
|
@@ -67,5 +123,34 @@ module FastlaneCore
|
|
67
123
|
File.write(path, '1') unless did_show
|
68
124
|
did_show
|
69
125
|
end
|
126
|
+
|
127
|
+
def determine_version(name)
|
128
|
+
begin
|
129
|
+
name = name.to_s.downcase
|
130
|
+
|
131
|
+
# We need to pre-load the version file because tools that are invoked through their actions
|
132
|
+
# will not yet have run their action, and thus will not yet have loaded the file which defines
|
133
|
+
# the module and constant we need.
|
134
|
+
require File.join(name, "version")
|
135
|
+
|
136
|
+
# Go from :foo_bar to 'FooBar'
|
137
|
+
module_name = name.fastlane_module
|
138
|
+
|
139
|
+
# Look up the VERSION constant defined for the given tool name,
|
140
|
+
# or return 'unknown' if we can't find it where we'd expect
|
141
|
+
if Kernel.const_defined?(module_name)
|
142
|
+
tool_module = Kernel.const_get(module_name)
|
143
|
+
|
144
|
+
if tool_module.const_defined?('VERSION')
|
145
|
+
return tool_module.const_get('VERSION')
|
146
|
+
end
|
147
|
+
end
|
148
|
+
rescue LoadError
|
149
|
+
# If there is no version file to load, this is not a tool for which
|
150
|
+
# we can report a particular version
|
151
|
+
end
|
152
|
+
|
153
|
+
return nil
|
154
|
+
end
|
70
155
|
end
|
71
156
|
end
|
@@ -24,7 +24,6 @@ module Commander
|
|
24
24
|
begin
|
25
25
|
collector.did_launch_action(@program[:name])
|
26
26
|
run_active_command
|
27
|
-
collector.did_finish
|
28
27
|
rescue InvalidCommandError => e
|
29
28
|
abort "#{e}. Use --help for more information"
|
30
29
|
rescue Interrupt => ex
|
@@ -43,8 +42,10 @@ module Commander
|
|
43
42
|
collector.did_raise_error(@program[:name])
|
44
43
|
display_user_error!(e, e.message)
|
45
44
|
rescue => e # high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else
|
46
|
-
collector.
|
45
|
+
collector.did_crash(@program[:name])
|
47
46
|
handle_unknown_error!(e)
|
47
|
+
ensure
|
48
|
+
collector.did_finish
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
@@ -22,7 +22,10 @@ module FastlaneCore
|
|
22
22
|
|
23
23
|
def releases(gem_name)
|
24
24
|
url = "https://api.github.com/repos/fastlane/#{gem_name}/releases"
|
25
|
-
|
25
|
+
# We have to follow redirects, since some repos were moved away into a separate org
|
26
|
+
server_response = Excon.get(url,
|
27
|
+
middlewares: Excon.defaults[:middlewares] + [Excon::Middleware::RedirectFollower])
|
28
|
+
JSON.parse(server_response.body)
|
26
29
|
end
|
27
30
|
end
|
28
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.43.
|
4
|
+
version: 0.43.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -355,6 +355,7 @@ files:
|
|
355
355
|
- lib/fastlane_core/configuration/config_item.rb
|
356
356
|
- lib/fastlane_core/configuration/configuration.rb
|
357
357
|
- lib/fastlane_core/configuration/configuration_file.rb
|
358
|
+
- lib/fastlane_core/core_ext/string.rb
|
358
359
|
- lib/fastlane_core/crash_reporting/clean_stack_trace.rb
|
359
360
|
- lib/fastlane_core/crash_reporting/crash_reporting.rb
|
360
361
|
- lib/fastlane_core/device_manager.rb
|
@@ -400,7 +401,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
401
|
version: '0'
|
401
402
|
requirements: []
|
402
403
|
rubyforge_project:
|
403
|
-
rubygems_version: 2.4.
|
404
|
+
rubygems_version: 2.4.5.1
|
404
405
|
signing_key:
|
405
406
|
specification_version: 4
|
406
407
|
summary: Contains all shared code/dependencies of the fastlane.tools
|