fastlane 2.69.2 → 2.69.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Appfile.swift +17 -0
- data/fastlane/swift/ArgumentProcessor.swift +72 -0
- data/fastlane/swift/Deliverfile.swift +14 -0
- data/fastlane/swift/DeliverfileProtocol.swift +118 -0
- data/fastlane/swift/Fastfile.swift +12 -0
- data/fastlane/swift/Fastlane.swift +3739 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +409 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/liebowitz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +103 -0
- data/fastlane/swift/Gymfile.swift +14 -0
- data/fastlane/swift/GymfileProtocol.swift +86 -0
- data/fastlane/swift/LaneFileProtocol.swift +103 -0
- data/fastlane/swift/Matchfile.swift +14 -0
- data/fastlane/swift/MatchfileProtocol.swift +54 -0
- data/fastlane/swift/Precheckfile.swift +14 -0
- data/fastlane/swift/PrecheckfileProtocol.swift +24 -0
- data/fastlane/swift/RubyCommand.swift +138 -0
- data/fastlane/swift/Runner.swift +190 -0
- data/fastlane/swift/RunnerArgument.swift +18 -0
- data/fastlane/swift/Scanfile.swift +14 -0
- data/fastlane/swift/ScanfileProtocol.swift +88 -0
- data/fastlane/swift/Screengrabfile.swift +14 -0
- data/fastlane/swift/ScreengrabfileProtocol.swift +48 -0
- data/fastlane/swift/Snapshotfile.swift +14 -0
- data/fastlane/swift/SnapshotfileProtocol.swift +70 -0
- data/fastlane/swift/SocketClient.swift +283 -0
- data/fastlane/swift/SocketClientDelegateProtocol.swift +19 -0
- data/fastlane/swift/SocketResponse.swift +74 -0
- data/fastlane/swift/main.swift +43 -0
- data/match/lib/match/encrypt.rb +12 -0
- metadata +32 -2
@@ -0,0 +1,190 @@
|
|
1
|
+
//
|
2
|
+
// Runner.swift
|
3
|
+
// FastlaneSwiftRunner
|
4
|
+
//
|
5
|
+
// Created by Joshua Liebowitz on 8/26/17.
|
6
|
+
// Copyright © 2017 Joshua Liebowitz. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
|
11
|
+
let logger: Logger = {
|
12
|
+
return Logger()
|
13
|
+
}()
|
14
|
+
|
15
|
+
let runner: Runner = {
|
16
|
+
return Runner()
|
17
|
+
}()
|
18
|
+
|
19
|
+
func desc(_ laneDescription: String) {
|
20
|
+
// no-op, this is handled in fastlane/lane_list.rb
|
21
|
+
}
|
22
|
+
|
23
|
+
class Runner {
|
24
|
+
fileprivate var thread: Thread!
|
25
|
+
fileprivate var socketClient: SocketClient!
|
26
|
+
fileprivate let dispatchGroup: DispatchGroup = DispatchGroup()
|
27
|
+
fileprivate var returnValue: String? // lol, so safe
|
28
|
+
fileprivate var currentlyExecutingCommand: RubyCommandable? = nil
|
29
|
+
fileprivate var shouldLeaveDispatchGroupDuringDisconnect = false
|
30
|
+
|
31
|
+
func executeCommand(_ command: RubyCommandable) -> String {
|
32
|
+
self.dispatchGroup.enter()
|
33
|
+
currentlyExecutingCommand = command
|
34
|
+
socketClient.send(rubyCommand: command)
|
35
|
+
|
36
|
+
let secondsToWait = DispatchTimeInterval.seconds(SocketClient.defaultCommandTimeoutSeconds)
|
37
|
+
let connectTimeout = DispatchTime.now() + secondsToWait
|
38
|
+
let timeoutResult = self.dispatchGroup.wait(timeout: connectTimeout)
|
39
|
+
let failureMessage = "command didn't execute in: \(SocketClient.defaultCommandTimeoutSeconds) seconds"
|
40
|
+
let success = testDispatchTimeoutResult(timeoutResult, failureMessage: failureMessage, timeToWait: secondsToWait)
|
41
|
+
guard success else {
|
42
|
+
log(message: "command timeout")
|
43
|
+
fatalError()
|
44
|
+
}
|
45
|
+
|
46
|
+
if let returnValue = self.returnValue {
|
47
|
+
return returnValue
|
48
|
+
} else {
|
49
|
+
return ""
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
// Handle threading stuff
|
55
|
+
extension Runner {
|
56
|
+
func startSocketThread() {
|
57
|
+
let secondsToWait = DispatchTimeInterval.seconds(SocketClient.connectTimeoutSeconds)
|
58
|
+
|
59
|
+
self.dispatchGroup.enter()
|
60
|
+
|
61
|
+
self.socketClient = SocketClient(commandTimeoutSeconds:timeout, socketDelegate: self)
|
62
|
+
self.thread = Thread(target: self, selector: #selector(startSocketComs), object: nil)
|
63
|
+
self.thread!.name = "socket thread"
|
64
|
+
self.thread!.start()
|
65
|
+
|
66
|
+
let connectTimeout = DispatchTime.now() + secondsToWait
|
67
|
+
let timeoutResult = self.dispatchGroup.wait(timeout: connectTimeout)
|
68
|
+
|
69
|
+
let failureMessage = "couldn't start socket thread in: \(SocketClient.connectTimeoutSeconds) seconds"
|
70
|
+
let success = testDispatchTimeoutResult(timeoutResult, failureMessage: failureMessage, timeToWait: secondsToWait)
|
71
|
+
guard success else {
|
72
|
+
log(message: "socket thread timeout")
|
73
|
+
fatalError()
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
func disconnectFromFastlaneProcess() {
|
78
|
+
self.shouldLeaveDispatchGroupDuringDisconnect = true
|
79
|
+
self.dispatchGroup.enter()
|
80
|
+
socketClient.sendComplete()
|
81
|
+
|
82
|
+
let connectTimeout = DispatchTime.now() + 2
|
83
|
+
_ = self.dispatchGroup.wait(timeout: connectTimeout)
|
84
|
+
}
|
85
|
+
|
86
|
+
@objc func startSocketComs() {
|
87
|
+
guard let socketClient = self.socketClient else {
|
88
|
+
return
|
89
|
+
}
|
90
|
+
|
91
|
+
socketClient.connectAndOpenStreams()
|
92
|
+
self.dispatchGroup.leave()
|
93
|
+
}
|
94
|
+
|
95
|
+
fileprivate func testDispatchTimeoutResult(_ timeoutResult: DispatchTimeoutResult, failureMessage: String, timeToWait: DispatchTimeInterval) -> Bool {
|
96
|
+
switch timeoutResult {
|
97
|
+
case .success:
|
98
|
+
return true
|
99
|
+
case .timedOut:
|
100
|
+
log(message: "timeout: \(failureMessage)")
|
101
|
+
return false
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
extension Runner : SocketClientDelegateProtocol {
|
107
|
+
func commandExecuted(serverResponse: SocketClientResponse) {
|
108
|
+
switch serverResponse {
|
109
|
+
case .success(let returnedObject, let closureArgumentValue):
|
110
|
+
verbose(message: "command executed")
|
111
|
+
self.returnValue = returnedObject
|
112
|
+
if let command = self.currentlyExecutingCommand as? RubyCommand {
|
113
|
+
if let closureArgumentValue = closureArgumentValue {
|
114
|
+
command.performCallback(callbackArg: closureArgumentValue)
|
115
|
+
}
|
116
|
+
}
|
117
|
+
self.dispatchGroup.leave()
|
118
|
+
|
119
|
+
case .alreadyClosedSockets, .connectionFailure, .malformedRequest, .malformedResponse, .serverError:
|
120
|
+
log(message: "error encountered while executing command:\n\(serverResponse)")
|
121
|
+
self.dispatchGroup.leave()
|
122
|
+
|
123
|
+
case .commandTimeout(let timeout):
|
124
|
+
log(message: "Runner timed out after \(timeout) second(s)")
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
func connectionsOpened() {
|
129
|
+
DispatchQueue.main.async {
|
130
|
+
verbose(message: "connected!")
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
func connectionsClosed() {
|
135
|
+
DispatchQueue.main.async {
|
136
|
+
self.thread?.cancel()
|
137
|
+
self.thread = nil
|
138
|
+
self.socketClient = nil
|
139
|
+
verbose(message: "connection closed!")
|
140
|
+
if self.shouldLeaveDispatchGroupDuringDisconnect {
|
141
|
+
self.dispatchGroup.leave()
|
142
|
+
}
|
143
|
+
exit(0)
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
class Logger {
|
149
|
+
enum LogMode {
|
150
|
+
init(logMode: String) {
|
151
|
+
switch logMode {
|
152
|
+
case "normal", "default":
|
153
|
+
self = .normal
|
154
|
+
case "verbose":
|
155
|
+
self = .verbose
|
156
|
+
default:
|
157
|
+
logger.log(message: "unrecognized log mode: \(logMode), defaulting to 'normal'")
|
158
|
+
self = .normal
|
159
|
+
}
|
160
|
+
}
|
161
|
+
case normal
|
162
|
+
case verbose
|
163
|
+
}
|
164
|
+
|
165
|
+
public static var logMode: LogMode = .normal
|
166
|
+
|
167
|
+
func log(message: String) {
|
168
|
+
let timestamp = NSDate().timeIntervalSince1970
|
169
|
+
print("[\(timestamp)]: \(message)")
|
170
|
+
}
|
171
|
+
|
172
|
+
func verbose(message: String) {
|
173
|
+
if Logger.logMode == .verbose {
|
174
|
+
let timestamp = NSDate().timeIntervalSince1970
|
175
|
+
print("[\(timestamp)]: \(message)")
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
179
|
+
|
180
|
+
func log(message: String) {
|
181
|
+
logger.log(message: message)
|
182
|
+
}
|
183
|
+
|
184
|
+
func verbose(message: String) {
|
185
|
+
logger.verbose(message: message)
|
186
|
+
}
|
187
|
+
|
188
|
+
// Please don't remove the lines below
|
189
|
+
// They are used to detect outdated files
|
190
|
+
// FastlaneRunnerAPIVersion [0.9.1]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
//
|
2
|
+
// RunnerArgument.swift
|
3
|
+
// FastlaneSwiftRunner
|
4
|
+
//
|
5
|
+
// Created by Joshua Liebowitz on 9/1/17.
|
6
|
+
// Copyright © 2017 Joshua Liebowitz. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
|
11
|
+
struct RunnerArgument {
|
12
|
+
let name: String
|
13
|
+
let value: String
|
14
|
+
}
|
15
|
+
|
16
|
+
// Please don't remove the lines below
|
17
|
+
// They are used to detect outdated files
|
18
|
+
// FastlaneRunnerAPIVersion [0.9.1]
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// This class is automatically included in FastlaneRunner during build
|
2
|
+
|
3
|
+
// This autogenerated file will be overwritten or replaced during build time, or when you initialize `scan`
|
4
|
+
class Scanfile: ScanfileProtocol {
|
5
|
+
// If you want to enable `scan`, run `fastlane scan init`
|
6
|
+
// After, this file will be replaced with a custom implementation that contains values you supplied
|
7
|
+
// during the `init` process, and you won't see this message
|
8
|
+
}
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
// Generated with fastlane 2.69.2
|
@@ -0,0 +1,88 @@
|
|
1
|
+
protocol ScanfileProtocol: class {
|
2
|
+
var workspace: String? { get }
|
3
|
+
var project: String? { get }
|
4
|
+
var device: String? { get }
|
5
|
+
var toolchain: String? { get }
|
6
|
+
var devices: [String]? { get }
|
7
|
+
var scheme: String? { get }
|
8
|
+
var clean: Bool { get }
|
9
|
+
var codeCoverage: Bool? { get }
|
10
|
+
var addressSanitizer: Bool? { get }
|
11
|
+
var threadSanitizer: Bool? { get }
|
12
|
+
var skipBuild: Bool { get }
|
13
|
+
var outputDirectory: String { get }
|
14
|
+
var outputStyle: String? { get }
|
15
|
+
var outputTypes: String { get }
|
16
|
+
var outputFiles: String? { get }
|
17
|
+
var buildlogPath: String { get }
|
18
|
+
var includeSimulatorLogs: Bool { get }
|
19
|
+
var formatter: String? { get }
|
20
|
+
var testWithoutBuilding: Bool? { get }
|
21
|
+
var buildForTesting: Bool? { get }
|
22
|
+
var xctestrun: String? { get }
|
23
|
+
var derivedDataPath: String? { get }
|
24
|
+
var resultBundle: String? { get }
|
25
|
+
var sdk: String? { get }
|
26
|
+
var openReport: Bool { get }
|
27
|
+
var configuration: String? { get }
|
28
|
+
var destination: String? { get }
|
29
|
+
var xcargs: String? { get }
|
30
|
+
var xcconfig: String? { get }
|
31
|
+
var onlyTesting: String? { get }
|
32
|
+
var skipTesting: String? { get }
|
33
|
+
var slackUrl: String? { get }
|
34
|
+
var slackChannel: String? { get }
|
35
|
+
var slackMessage: String? { get }
|
36
|
+
var skipSlack: Bool { get }
|
37
|
+
var slackOnlyOnFailure: Bool { get }
|
38
|
+
var useClangReportName: Bool { get }
|
39
|
+
var customReportFileName: String? { get }
|
40
|
+
var failBuild: Bool { get }
|
41
|
+
}
|
42
|
+
|
43
|
+
extension ScanfileProtocol {
|
44
|
+
var workspace: String? { return nil }
|
45
|
+
var project: String? { return nil }
|
46
|
+
var device: String? { return nil }
|
47
|
+
var toolchain: String? { return nil }
|
48
|
+
var devices: [String]? { return nil }
|
49
|
+
var scheme: String? { return nil }
|
50
|
+
var clean: Bool { return false }
|
51
|
+
var codeCoverage: Bool? { return nil }
|
52
|
+
var addressSanitizer: Bool? { return nil }
|
53
|
+
var threadSanitizer: Bool? { return nil }
|
54
|
+
var skipBuild: Bool { return false }
|
55
|
+
var outputDirectory: String { return "./test_output" }
|
56
|
+
var outputStyle: String? { return nil }
|
57
|
+
var outputTypes: String { return "html,junit" }
|
58
|
+
var outputFiles: String? { return nil }
|
59
|
+
var buildlogPath: String { return "~/Library/Logs/scan" }
|
60
|
+
var includeSimulatorLogs: Bool { return false }
|
61
|
+
var formatter: String? { return nil }
|
62
|
+
var testWithoutBuilding: Bool? { return nil }
|
63
|
+
var buildForTesting: Bool? { return nil }
|
64
|
+
var xctestrun: String? { return nil }
|
65
|
+
var derivedDataPath: String? { return nil }
|
66
|
+
var resultBundle: String? { return nil }
|
67
|
+
var sdk: String? { return nil }
|
68
|
+
var openReport: Bool { return false }
|
69
|
+
var configuration: String? { return nil }
|
70
|
+
var destination: String? { return nil }
|
71
|
+
var xcargs: String? { return nil }
|
72
|
+
var xcconfig: String? { return nil }
|
73
|
+
var onlyTesting: String? { return nil }
|
74
|
+
var skipTesting: String? { return nil }
|
75
|
+
var slackUrl: String? { return nil }
|
76
|
+
var slackChannel: String? { return nil }
|
77
|
+
var slackMessage: String? { return nil }
|
78
|
+
var skipSlack: Bool { return false }
|
79
|
+
var slackOnlyOnFailure: Bool { return false }
|
80
|
+
var useClangReportName: Bool { return false }
|
81
|
+
var customReportFileName: String? { return nil }
|
82
|
+
var failBuild: Bool { return true }
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
// Please don't remove the lines below
|
87
|
+
// They are used to detect outdated files
|
88
|
+
// FastlaneRunnerAPIVersion [0.9.1]
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// This class is automatically included in FastlaneRunner during build
|
2
|
+
|
3
|
+
// This autogenerated file will be overwritten or replaced during build time, or when you initialize `screengrab`
|
4
|
+
class Screengrabfile: ScreengrabfileProtocol {
|
5
|
+
// If you want to enable `screengrab`, run `fastlane screengrab init`
|
6
|
+
// After, this file will be replaced with a custom implementation that contains values you supplied
|
7
|
+
// during the `init` process, and you won't see this message
|
8
|
+
}
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
// Generated with fastlane 2.69.2
|
@@ -0,0 +1,48 @@
|
|
1
|
+
protocol ScreengrabfileProtocol: class {
|
2
|
+
var androidHome: String? { get }
|
3
|
+
var buildToolsVersion: String? { get }
|
4
|
+
var locales: [String] { get }
|
5
|
+
var clearPreviousScreenshots: Bool { get }
|
6
|
+
var outputDirectory: String { get }
|
7
|
+
var skipOpenSummary: Bool { get }
|
8
|
+
var appPackageName: String { get }
|
9
|
+
var testsPackageName: String? { get }
|
10
|
+
var useTestsInPackages: [String]? { get }
|
11
|
+
var useTestsInClasses: [String]? { get }
|
12
|
+
var launchArguments: [String]? { get }
|
13
|
+
var testInstrumentationRunner: String { get }
|
14
|
+
var endingLocale: String { get }
|
15
|
+
var appApkPath: String? { get }
|
16
|
+
var testsApkPath: String? { get }
|
17
|
+
var specificDevice: String? { get }
|
18
|
+
var deviceType: String { get }
|
19
|
+
var exitOnTestFailure: Bool { get }
|
20
|
+
var reinstallApp: Bool { get }
|
21
|
+
}
|
22
|
+
|
23
|
+
extension ScreengrabfileProtocol {
|
24
|
+
var androidHome: String? { return nil }
|
25
|
+
var buildToolsVersion: String? { return nil }
|
26
|
+
var locales: [String] { return ["en-US"] }
|
27
|
+
var clearPreviousScreenshots: Bool { return false }
|
28
|
+
var outputDirectory: String { return "fastlane/metadata/android" }
|
29
|
+
var skipOpenSummary: Bool { return false }
|
30
|
+
var appPackageName: String { return "" }
|
31
|
+
var testsPackageName: String? { return nil }
|
32
|
+
var useTestsInPackages: [String]? { return nil }
|
33
|
+
var useTestsInClasses: [String]? { return nil }
|
34
|
+
var launchArguments: [String]? { return nil }
|
35
|
+
var testInstrumentationRunner: String { return "android.support.test.runner.AndroidJUnitRunner" }
|
36
|
+
var endingLocale: String { return "en-US" }
|
37
|
+
var appApkPath: String? { return nil }
|
38
|
+
var testsApkPath: String? { return nil }
|
39
|
+
var specificDevice: String? { return nil }
|
40
|
+
var deviceType: String { return "phone" }
|
41
|
+
var exitOnTestFailure: Bool { return true }
|
42
|
+
var reinstallApp: Bool { return false }
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
// Please don't remove the lines below
|
47
|
+
// They are used to detect outdated files
|
48
|
+
// FastlaneRunnerAPIVersion [0.9.1]
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// This class is automatically included in FastlaneRunner during build
|
2
|
+
|
3
|
+
// This autogenerated file will be overwritten or replaced during build time, or when you initialize `snapshot`
|
4
|
+
class Snapshotfile: SnapshotfileProtocol {
|
5
|
+
// If you want to enable `snapshot`, run `fastlane snapshot init`
|
6
|
+
// After, this file will be replaced with a custom implementation that contains values you supplied
|
7
|
+
// during the `init` process, and you won't see this message
|
8
|
+
}
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
// Generated with fastlane 2.69.2
|
@@ -0,0 +1,70 @@
|
|
1
|
+
protocol SnapshotfileProtocol: class {
|
2
|
+
var workspace: String? { get }
|
3
|
+
var project: String? { get }
|
4
|
+
var xcargs: String? { get }
|
5
|
+
var devices: [String]? { get }
|
6
|
+
var languages: [String] { get }
|
7
|
+
var launchArguments: [String] { get }
|
8
|
+
var outputDirectory: String { get }
|
9
|
+
var outputSimulatorLogs: Bool { get }
|
10
|
+
var iosVersion: String? { get }
|
11
|
+
var skipOpenSummary: Bool { get }
|
12
|
+
var skipHelperVersionCheck: Bool { get }
|
13
|
+
var clearPreviousScreenshots: Bool { get }
|
14
|
+
var reinstallApp: Bool { get }
|
15
|
+
var eraseSimulator: Bool { get }
|
16
|
+
var localizeSimulator: Bool { get }
|
17
|
+
var appIdentifier: String? { get }
|
18
|
+
var addPhotos: [String]? { get }
|
19
|
+
var addVideos: [String]? { get }
|
20
|
+
var buildlogPath: String { get }
|
21
|
+
var clean: Bool { get }
|
22
|
+
var configuration: String? { get }
|
23
|
+
var xcprettyArgs: String? { get }
|
24
|
+
var sdk: String? { get }
|
25
|
+
var scheme: String? { get }
|
26
|
+
var numberOfRetries: Int { get }
|
27
|
+
var stopAfterFirstError: Bool { get }
|
28
|
+
var derivedDataPath: String? { get }
|
29
|
+
var testTargetName: String? { get }
|
30
|
+
var namespaceLogFiles: String? { get }
|
31
|
+
var concurrentSimulators: Bool { get }
|
32
|
+
}
|
33
|
+
|
34
|
+
extension SnapshotfileProtocol {
|
35
|
+
var workspace: String? { return nil }
|
36
|
+
var project: String? { return nil }
|
37
|
+
var xcargs: String? { return nil }
|
38
|
+
var devices: [String]? { return nil }
|
39
|
+
var languages: [String] { return ["en-US"] }
|
40
|
+
var launchArguments: [String] { return [""] }
|
41
|
+
var outputDirectory: String { return "screenshots" }
|
42
|
+
var outputSimulatorLogs: Bool { return false }
|
43
|
+
var iosVersion: String? { return nil }
|
44
|
+
var skipOpenSummary: Bool { return false }
|
45
|
+
var skipHelperVersionCheck: Bool { return false }
|
46
|
+
var clearPreviousScreenshots: Bool { return false }
|
47
|
+
var reinstallApp: Bool { return false }
|
48
|
+
var eraseSimulator: Bool { return false }
|
49
|
+
var localizeSimulator: Bool { return false }
|
50
|
+
var appIdentifier: String? { return nil }
|
51
|
+
var addPhotos: [String]? { return nil }
|
52
|
+
var addVideos: [String]? { return nil }
|
53
|
+
var buildlogPath: String { return "~/Library/Logs/snapshot" }
|
54
|
+
var clean: Bool { return false }
|
55
|
+
var configuration: String? { return nil }
|
56
|
+
var xcprettyArgs: String? { return nil }
|
57
|
+
var sdk: String? { return nil }
|
58
|
+
var scheme: String? { return nil }
|
59
|
+
var numberOfRetries: Int { return 1 }
|
60
|
+
var stopAfterFirstError: Bool { return false }
|
61
|
+
var derivedDataPath: String? { return nil }
|
62
|
+
var testTargetName: String? { return nil }
|
63
|
+
var namespaceLogFiles: String? { return nil }
|
64
|
+
var concurrentSimulators: Bool { return true }
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
// Please don't remove the lines below
|
69
|
+
// They are used to detect outdated files
|
70
|
+
// FastlaneRunnerAPIVersion [0.9.1]
|