fastlane 2.62.0.beta.20171011010003 → 2.62.0.beta.20171014010003
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/deliver/lib/assets/DeliverfileDefault +1 -1
- data/deliver/lib/deliver/options.rb +3 -1
- data/fastlane/lib/fastlane/actions/docs/match.md +3 -3
- data/fastlane/lib/fastlane/actions/docs/snapshot.md +1 -1
- data/fastlane/lib/fastlane/actions/hockey.rb +1 -1
- data/fastlane/lib/fastlane/actions/pod_push.rb +9 -0
- data/fastlane/lib/fastlane/actions/update_project_team.rb +2 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +4 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/gym/lib/gym/detect_values.rb +4 -2
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +1 -0
- data/gym/lib/gym/options.rb +7 -1
- data/pilot/lib/pilot/options.rb +3 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +75 -25
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +55 -9
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91e35cb694e77c43f4022a94f6f396d865cd5f38
|
4
|
+
data.tar.gz: e30e419e22a2a08246c78471501cd5cc692afab2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99433dbfc2df4a93fe63021e255f178e0e92f1a6a7183403e2de90157f01557393669eba37b7edd249f9a96cd8e62790b9d97261a09af2bf0c5668cbc4ad04a4
|
7
|
+
data.tar.gz: e99633444490b704bcff01ceec19c5b9cb5875e1a7ff81f144d6c1e47488535c4b4852878df25b88d6203cb42325e5d4d0766104086813d048337139f2259d22
|
@@ -1,6 +1,6 @@
|
|
1
1
|
###################### More Options ######################
|
2
2
|
# If you want to have even more control, check out the documentation
|
3
|
-
# https://
|
3
|
+
# https://docs.fastlane.tools/actions/deliver
|
4
4
|
|
5
5
|
|
6
6
|
###################### Automatically generated ######################
|
@@ -181,10 +181,12 @@ module Deliver
|
|
181
181
|
verify_block: proc do |value|
|
182
182
|
ENV["FASTLANE_TEAM_NAME"] = value.to_s
|
183
183
|
end),
|
184
|
+
# rubocop:disable Metrics/LineLength
|
184
185
|
FastlaneCore::ConfigItem.new(key: :itc_provider,
|
185
186
|
env_name: "DELIVER_ITC_PROVIDER",
|
186
|
-
description: "The provider short name to be used with the iTMSTransporter to identify your team",
|
187
|
+
description: "The provider short name to be used with the iTMSTransporter to identify your team. To get provider short name run `pathToXcode.app/Contents/Applications/Application\\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column",
|
187
188
|
optional: true),
|
189
|
+
# rubocop:enable Metrics/LineLength
|
188
190
|
FastlaneCore::ConfigItem.new(key: :overwrite_screenshots,
|
189
191
|
env_name: "DELIVER_OVERWRITE_SCREENSHOTS",
|
190
192
|
description: "Clear all previously uploaded screenshots before uploading the new ones",
|
@@ -250,13 +250,13 @@ _match_ can even use the same one Git repository for all bundle identifiers.
|
|
250
250
|
|
251
251
|
### Setup Xcode project
|
252
252
|
|
253
|
-
[Docs on how to set up your Xcode project](
|
253
|
+
[Docs on how to set up your Xcode project](/codesigning/xcode-project/)
|
254
254
|
|
255
255
|
#### To build from the command line using [fastlane](https://fastlane.tools)
|
256
256
|
|
257
257
|
_match_ automatically pre-fills environment variables with the UUIDs of the correct provisioning profiles, ready to be used in your Xcode project.
|
258
258
|
|
259
|
-
More information about how to setup your Xcode project can be found [here](
|
259
|
+
More information about how to setup your Xcode project can be found [here](/codesigning/xcode-project/)
|
260
260
|
|
261
261
|
#### To build from Xcode manually
|
262
262
|
|
@@ -264,7 +264,7 @@ This is useful when installing your application on your device using the Develop
|
|
264
264
|
|
265
265
|
You can statically select the right provisioning profile in your Xcode project (the name will be `match Development tools.fastlane.app`).
|
266
266
|
|
267
|
-
[Docs on how to set up your Xcode project](/codesigning/xcode-project
|
267
|
+
[Docs on how to set up your Xcode project](/codesigning/xcode-project/)
|
268
268
|
|
269
269
|
### Continuous Integration
|
270
270
|
|
@@ -91,7 +91,7 @@ Here a few links to get started:
|
|
91
91
|
- In your UI Test class, click the `Record` button on the bottom left and record your interaction
|
92
92
|
- To take a snapshot, call the following between interactions
|
93
93
|
- Swift: `snapshot("01LoginScreen")`
|
94
|
-
- Objective C: `[Snapshot snapshot:@"01LoginScreen"
|
94
|
+
- Objective C: `[Snapshot snapshot:@"01LoginScreen" timeWaitingForIdle:10];`
|
95
95
|
- Add the following code to your `setUp()` method
|
96
96
|
|
97
97
|
**Swift**
|
@@ -18,6 +18,11 @@ module Fastlane
|
|
18
18
|
command << " --sources='#{sources}'"
|
19
19
|
end
|
20
20
|
|
21
|
+
if params[:swift_version]
|
22
|
+
swift_version = params[:swift_version]
|
23
|
+
command << " --swift-version=#{swift_version}"
|
24
|
+
end
|
25
|
+
|
21
26
|
if params[:allow_warnings]
|
22
27
|
command << " --allow-warnings"
|
23
28
|
end
|
@@ -74,6 +79,10 @@ module Fastlane
|
|
74
79
|
verify_block: proc do |value|
|
75
80
|
UI.user_error!("Sources must be an array.") unless value.kind_of?(Array)
|
76
81
|
end),
|
82
|
+
FastlaneCore::ConfigItem.new(key: :swift_version,
|
83
|
+
description: "The SWIFT_VERSION that should be used to lint the spec. This takes precedence over a .swift-version file",
|
84
|
+
optional: true,
|
85
|
+
is_string: false),
|
77
86
|
FastlaneCore::ConfigItem.new(key: :verbose,
|
78
87
|
description: "Show more debugging information",
|
79
88
|
optional: true,
|
@@ -32,6 +32,7 @@ module Fastlane
|
|
32
32
|
FastlaneCore::ConfigItem.new(key: :path,
|
33
33
|
env_name: "FL_PROJECT_SIGNING_PROJECT_PATH",
|
34
34
|
description: "Path to your Xcode project",
|
35
|
+
default_value: Dir['*.xcodeproj'].first,
|
35
36
|
verify_block: proc do |value|
|
36
37
|
UI.user_error!("Path is invalid") unless File.exist?(value)
|
37
38
|
end),
|
@@ -52,6 +53,7 @@ module Fastlane
|
|
52
53
|
|
53
54
|
def self.example_code
|
54
55
|
[
|
56
|
+
'update_project_team',
|
55
57
|
'update_project_team(
|
56
58
|
path: "Example.xcodeproj",
|
57
59
|
teamid: "A3ZZVJ7CNY"
|
@@ -83,7 +83,9 @@ module Fastlane
|
|
83
83
|
command << "-p #{params[:platform] == 'appletvos' ? 'tvos' : params[:platform]}"
|
84
84
|
command << File.expand_path(path).shellescape
|
85
85
|
begin
|
86
|
-
|
86
|
+
command_to_execute = command.join(" ")
|
87
|
+
UI.verbose("upload_dsym using command: #{command_to_execute}")
|
88
|
+
Actions.sh(command_to_execute, log: false)
|
87
89
|
rescue => ex
|
88
90
|
UI.error ex.to_s # it fails, however we don't want to fail everything just for this
|
89
91
|
end
|
@@ -96,6 +98,7 @@ module Fastlane
|
|
96
98
|
next unless result
|
97
99
|
next unless result.kind_of?(Hash)
|
98
100
|
params[:api_token] ||= result["APIKey"]
|
101
|
+
UI.verbose("found an APIKey in #{current}")
|
99
102
|
end
|
100
103
|
end
|
101
104
|
UI.user_error!("Please provide an api_token using api_token:") unless params[:api_token]
|
@@ -65,9 +65,11 @@ module Gym
|
|
65
65
|
Gym.config[:export_options] ||= {}
|
66
66
|
hash_to_use = (Gym.config[:export_options][:provisioningProfiles] || {}).dup || {} # dup so we can show the original values in `verbose` mode
|
67
67
|
|
68
|
-
|
69
|
-
|
68
|
+
unless Gym.config[:skip_profile_detection]
|
69
|
+
mapping_object = CodeSigningMapping.new(project: Gym.project)
|
70
|
+
hash_to_use = mapping_object.merge_profile_mapping(primary_mapping: hash_to_use,
|
70
71
|
export_method: Gym.config[:export_method])
|
72
|
+
end
|
71
73
|
|
72
74
|
return if hash_to_use.count == 0 # We don't want to set a mapping if we don't have one
|
73
75
|
Gym.config[:export_options][:provisioningProfiles] = hash_to_use
|
@@ -31,6 +31,7 @@ module Gym
|
|
31
31
|
options << "-exportPath '#{temporary_output_path}'"
|
32
32
|
options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
|
33
33
|
options << config[:export_xcargs] if config[:export_xcargs]
|
34
|
+
options << config[:xcargs] if config[:xcargs]
|
34
35
|
|
35
36
|
options
|
36
37
|
end
|
data/gym/lib/gym/options.rb
CHANGED
@@ -234,7 +234,13 @@ module Gym
|
|
234
234
|
env_name: "XCPRETTY_UTF",
|
235
235
|
description: "Have xcpretty use unicode encoding when reporting builds",
|
236
236
|
optional: true,
|
237
|
-
is_string: false)
|
237
|
+
is_string: false),
|
238
|
+
FastlaneCore::ConfigItem.new(key: :skip_profile_detection,
|
239
|
+
env_name: "GYM_SKIP_PROFILE_DETECTION",
|
240
|
+
description: "Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used",
|
241
|
+
optional: true,
|
242
|
+
is_string: false,
|
243
|
+
default_value: false)
|
238
244
|
]
|
239
245
|
end
|
240
246
|
end
|
data/pilot/lib/pilot/options.rb
CHANGED
@@ -144,10 +144,12 @@ module Pilot
|
|
144
144
|
verify_block: proc do |value|
|
145
145
|
ENV["FASTLANE_TEAM_ID"] = value.to_s
|
146
146
|
end),
|
147
|
+
# rubocop:disable Metrics/LineLength
|
147
148
|
FastlaneCore::ConfigItem.new(key: :itc_provider,
|
148
149
|
env_name: "PILOT_ITC_PROVIDER",
|
149
|
-
description: "The provider short name to be used with the iTMSTransporter to identify your team",
|
150
|
+
description: "The provider short name to be used with the iTMSTransporter to identify your team. To get provider short name run `pathToXcode.app/Contents/Applications/Application\\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column",
|
150
151
|
optional: true),
|
152
|
+
# rubocop:enable Metrics/LineLength
|
151
153
|
FastlaneCore::ConfigItem.new(key: :groups,
|
152
154
|
short_option: "-g",
|
153
155
|
env_name: "PILOT_GROUPS",
|
@@ -19,17 +19,23 @@ import XCTest
|
|
19
19
|
var deviceLanguage = ""
|
20
20
|
var locale = ""
|
21
21
|
|
22
|
-
@available(*, deprecated, message: "use setupSnapshot: instead")
|
23
|
-
func setLanguage(_ app: XCUIApplication) {
|
24
|
-
setupSnapshot(app)
|
25
|
-
}
|
26
|
-
|
27
22
|
func setupSnapshot(_ app: XCUIApplication) {
|
28
23
|
Snapshot.setupSnapshot(app)
|
29
24
|
}
|
30
25
|
|
31
|
-
func snapshot(_ name: String, waitForLoadingIndicator: Bool
|
32
|
-
|
26
|
+
func snapshot(_ name: String, waitForLoadingIndicator: Bool) {
|
27
|
+
if waitForLoadingIndicator {
|
28
|
+
Snapshot.snapshot(name)
|
29
|
+
} else {
|
30
|
+
Snapshot.snapshot(name, timeWaitingForIdle: 0)
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
/// - Parameters:
|
35
|
+
/// - name: The name of the snapshot
|
36
|
+
/// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait.
|
37
|
+
func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
|
38
|
+
Snapshot.snapshot(name, timeWaitingForIdle: timeout)
|
33
39
|
}
|
34
40
|
|
35
41
|
enum SnapshotError: Error, CustomDebugStringConvertible {
|
@@ -37,7 +43,7 @@ enum SnapshotError: Error, CustomDebugStringConvertible {
|
|
37
43
|
case cannotFindHomeDirectory
|
38
44
|
case cannotFindSimulatorHomeDirectory
|
39
45
|
case cannotAccessSimulatorHomeDirectory(String)
|
40
|
-
|
46
|
+
|
41
47
|
var debugDescription: String {
|
42
48
|
switch self {
|
43
49
|
case .cannotDetectUser:
|
@@ -116,9 +122,9 @@ open class Snapshot: NSObject {
|
|
116
122
|
}
|
117
123
|
}
|
118
124
|
|
119
|
-
open class func snapshot(_ name: String,
|
120
|
-
if
|
121
|
-
waitForLoadingIndicatorToDisappear()
|
125
|
+
open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
|
126
|
+
if timeout > 0 {
|
127
|
+
waitForLoadingIndicatorToDisappear(within: timeout)
|
122
128
|
}
|
123
129
|
|
124
130
|
print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work
|
@@ -140,17 +146,14 @@ open class Snapshot: NSObject {
|
|
140
146
|
#endif
|
141
147
|
}
|
142
148
|
|
143
|
-
class func waitForLoadingIndicatorToDisappear() {
|
149
|
+
class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) {
|
144
150
|
#if os(tvOS)
|
145
151
|
return
|
146
152
|
#endif
|
147
153
|
|
148
|
-
let
|
149
|
-
|
150
|
-
|
151
|
-
sleep(1)
|
152
|
-
print("Waiting for loading indicator to disappear...")
|
153
|
-
}
|
154
|
+
let networkLoadingIndicator = XCUIApplication().otherElements.deviceStatusBars.networkLoadingIndicators.element
|
155
|
+
let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator)
|
156
|
+
XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout)
|
154
157
|
}
|
155
158
|
|
156
159
|
class func pathPrefix() throws -> URL? {
|
@@ -180,16 +183,63 @@ open class Snapshot: NSObject {
|
|
180
183
|
}
|
181
184
|
}
|
182
185
|
|
183
|
-
extension
|
184
|
-
var
|
185
|
-
|
186
|
-
|
187
|
-
|
186
|
+
private extension XCUIElementAttributes {
|
187
|
+
var isNetworkLoadingIndicator: Bool {
|
188
|
+
if hasWhiteListedIdentifier { return false }
|
189
|
+
|
190
|
+
let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20)
|
191
|
+
let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3)
|
192
|
+
|
193
|
+
return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize
|
194
|
+
}
|
195
|
+
|
196
|
+
var hasWhiteListedIdentifier: Bool {
|
197
|
+
let whiteListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"]
|
198
|
+
|
199
|
+
return whiteListedIdentifiers.contains(identifier)
|
200
|
+
}
|
201
|
+
|
202
|
+
func isStatusBar(_ deviceWidth: CGFloat) -> Bool {
|
203
|
+
if elementType == .statusBar { return true }
|
204
|
+
guard frame.origin == .zero else { return false }
|
205
|
+
|
206
|
+
let oldStatusBarSize = CGSize(width: deviceWidth, height: 20)
|
207
|
+
let newStatusBarSize = CGSize(width: deviceWidth, height: 44)
|
208
|
+
|
209
|
+
return [oldStatusBarSize, newStatusBarSize].contains(frame.size)
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
private extension XCUIElementQuery {
|
214
|
+
var networkLoadingIndicators: XCUIElementQuery {
|
215
|
+
let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in
|
216
|
+
guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
|
217
|
+
|
218
|
+
return element.isNetworkLoadingIndicator
|
188
219
|
}
|
189
|
-
|
220
|
+
|
221
|
+
return self.containing(isNetworkLoadingIndicator)
|
222
|
+
}
|
223
|
+
|
224
|
+
var deviceStatusBars: XCUIElementQuery {
|
225
|
+
let deviceWidth = XCUIApplication().frame.width
|
226
|
+
|
227
|
+
let isStatusBar = NSPredicate { (evaluatedObject, _) in
|
228
|
+
guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
|
229
|
+
|
230
|
+
return element.isStatusBar(deviceWidth)
|
231
|
+
}
|
232
|
+
|
233
|
+
return self.containing(isStatusBar)
|
234
|
+
}
|
235
|
+
}
|
236
|
+
|
237
|
+
private extension CGFloat {
|
238
|
+
func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool {
|
239
|
+
return numberA...numberB ~= self
|
190
240
|
}
|
191
241
|
}
|
192
242
|
|
193
243
|
// Please don't remove the lines below
|
194
244
|
// They are used to detect outdated configuration files
|
195
|
-
// SnapshotHelperVersion [1.
|
245
|
+
// SnapshotHelperVersion [1.6]
|
@@ -111,6 +111,30 @@ module Spaceship
|
|
111
111
|
send_shared_login_request(user, password)
|
112
112
|
end
|
113
113
|
|
114
|
+
# Sometimes we get errors or info nested in our data
|
115
|
+
# This method allows you to pass in a set of keys to check for
|
116
|
+
# along with the name of the sub_section of your original data
|
117
|
+
# where we should check
|
118
|
+
# Returns a mapping of keys to data array if we find anything, otherwise, empty map
|
119
|
+
def fetch_errors_in_data(data_section: nil, sub_section_name: nil, keys: nil)
|
120
|
+
if data_section && sub_section_name
|
121
|
+
sub_section = data_section[sub_section_name]
|
122
|
+
else
|
123
|
+
sub_section = data_section
|
124
|
+
end
|
125
|
+
|
126
|
+
unless sub_section
|
127
|
+
return {}
|
128
|
+
end
|
129
|
+
|
130
|
+
error_map = {}
|
131
|
+
keys.each do |key|
|
132
|
+
errors = sub_section.fetch(key, [])
|
133
|
+
error_map[key] = errors if errors.count > 0
|
134
|
+
end
|
135
|
+
return error_map
|
136
|
+
end
|
137
|
+
|
114
138
|
# rubocop:disable Metrics/PerceivedComplexity
|
115
139
|
# If the response is coming from a flaky api, set flaky_api_call to true so we retry a little.
|
116
140
|
# Patience is a virtue.
|
@@ -119,12 +143,17 @@ module Spaceship
|
|
119
143
|
return unless raw.kind_of? Hash
|
120
144
|
|
121
145
|
data = raw['data'] || raw # sometimes it's with data, sometimes it isn't
|
146
|
+
error_keys_to_check = [
|
147
|
+
"sectionErrorKeys",
|
148
|
+
"sectionInfoKeys",
|
149
|
+
"sectionWarningKeys",
|
150
|
+
"validationErrors"
|
151
|
+
]
|
152
|
+
errors_in_data = fetch_errors_in_data(data_section: data, keys: error_keys_to_check)
|
153
|
+
errors_in_version_info = fetch_errors_in_data(data_section: data, sub_section_name: "versionInfo", keys: error_keys_to_check)
|
122
154
|
|
123
|
-
|
124
|
-
|
125
|
-
data.fetch('sectionWarningKeys', []).count == 0 and
|
126
|
-
data.fetch('validationErrors', []).count == 0
|
127
|
-
|
155
|
+
# If we have any errors or "info" we need to treat them as warnings or errors
|
156
|
+
if errors_in_data.count == 0 && errors_in_version_info.count == 0
|
128
157
|
logger.debug("Request was successful")
|
129
158
|
end
|
130
159
|
|
@@ -154,8 +183,15 @@ module Spaceship
|
|
154
183
|
end
|
155
184
|
|
156
185
|
errors = handle_response_hash.call(data)
|
157
|
-
|
158
|
-
|
186
|
+
|
187
|
+
# Search at data level, as well as "versionInfo" level for errors
|
188
|
+
error_keys = ["sectionErrorKeys", "validationErrors"]
|
189
|
+
errors_in_data = fetch_errors_in_data(data_section: data, keys: error_keys)
|
190
|
+
errors_in_version_info = fetch_errors_in_data(data_section: data, sub_section_name: "versionInfo", keys: error_keys)
|
191
|
+
|
192
|
+
errors += errors_in_data.values if errors_in_data.values
|
193
|
+
errors += errors_in_version_info.values if errors_in_version_info.values
|
194
|
+
errors = errors.flat_map { |value| value }
|
159
195
|
|
160
196
|
# Sometimes there is a different kind of error in the JSON response
|
161
197
|
# e.g. {"warn"=>nil, "error"=>["operation_failed"], "info"=>nil}
|
@@ -177,8 +213,18 @@ module Spaceship
|
|
177
213
|
end
|
178
214
|
end
|
179
215
|
|
180
|
-
|
181
|
-
|
216
|
+
# Search at data level, as well as "versionInfo" level for info and warnings
|
217
|
+
info_keys = ["sectionInfoKeys", "sectionWarningKeys"]
|
218
|
+
info_in_data = fetch_errors_in_data(data_section: data, keys: info_keys)
|
219
|
+
info_in_version_info = fetch_errors_in_data(data_section: data, sub_section_name: "versionInfo", keys: info_keys)
|
220
|
+
|
221
|
+
info_in_data.each do |info_key, info_value|
|
222
|
+
puts(info_value)
|
223
|
+
end
|
224
|
+
|
225
|
+
info_in_version_info.each do |info_key, info_value|
|
226
|
+
puts(info_value)
|
227
|
+
end
|
182
228
|
|
183
229
|
return data
|
184
230
|
end
|
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.62.0.beta.
|
4
|
+
version: 2.62.0.beta.20171014010003
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2017-10-
|
18
|
+
date: 2017-10-14 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|
@@ -1497,24 +1497,24 @@ metadata:
|
|
1497
1497
|
post_install_message:
|
1498
1498
|
rdoc_options: []
|
1499
1499
|
require_paths:
|
1500
|
-
-
|
1501
|
-
-
|
1500
|
+
- supply/lib
|
1501
|
+
- screengrab/lib
|
1502
|
+
- match/lib
|
1503
|
+
- precheck/lib
|
1502
1504
|
- sigh/lib
|
1505
|
+
- produce/lib
|
1506
|
+
- scan/lib
|
1507
|
+
- gym/lib
|
1503
1508
|
- snapshot/lib
|
1504
|
-
-
|
1509
|
+
- frameit/lib
|
1505
1510
|
- fastlane/lib
|
1506
1511
|
- cert/lib
|
1507
|
-
- pem/lib
|
1508
|
-
- gym/lib
|
1509
|
-
- produce/lib
|
1510
|
-
- deliver/lib
|
1511
|
-
- supply/lib
|
1512
|
-
- match/lib
|
1513
|
-
- frameit/lib
|
1514
|
-
- credentials_manager/lib
|
1515
1512
|
- pilot/lib
|
1516
|
-
-
|
1513
|
+
- spaceship/lib
|
1514
|
+
- credentials_manager/lib
|
1515
|
+
- deliver/lib
|
1517
1516
|
- fastlane_core/lib
|
1517
|
+
- pem/lib
|
1518
1518
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1519
1519
|
requirements:
|
1520
1520
|
- - ">="
|