fastlane 2.157.1 → 2.159.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +80 -80
  3. data/deliver/lib/deliver/runner.rb +4 -2
  4. data/deliver/lib/deliver/upload_metadata.rb +5 -1
  5. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +12 -8
  6. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
  7. data/fastlane/lib/fastlane/actions/download_dsyms.rb +89 -68
  8. data/fastlane/lib/fastlane/actions/set_changelog.rb +2 -1
  9. data/fastlane/lib/fastlane/helper/git_helper.rb +2 -0
  10. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +6 -4
  11. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  12. data/fastlane/lib/fastlane/version.rb +1 -1
  13. data/fastlane/swift/Actions.swift +2 -1
  14. data/fastlane/swift/Appfile.swift +2 -4
  15. data/fastlane/swift/ArgumentProcessor.swift +2 -6
  16. data/fastlane/swift/ControlCommand.swift +2 -5
  17. data/fastlane/swift/Deliverfile.swift +5 -2
  18. data/fastlane/swift/DeliverfileProtocol.swift +6 -3
  19. data/fastlane/swift/Fastfile.swift +5 -1
  20. data/fastlane/swift/Fastlane.swift +2227 -2218
  21. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +5 -5
  22. data/fastlane/swift/Gymfile.swift +5 -2
  23. data/fastlane/swift/GymfileProtocol.swift +6 -3
  24. data/fastlane/swift/LaneFileProtocol.swift +36 -19
  25. data/fastlane/swift/MainProcess.swift +77 -0
  26. data/fastlane/swift/Matchfile.swift +5 -2
  27. data/fastlane/swift/MatchfileProtocol.swift +6 -3
  28. data/fastlane/swift/Plugins.swift +2 -1
  29. data/fastlane/swift/Precheckfile.swift +5 -2
  30. data/fastlane/swift/PrecheckfileProtocol.swift +10 -3
  31. data/fastlane/swift/RubyCommand.swift +2 -6
  32. data/fastlane/swift/RubyCommandable.swift +2 -6
  33. data/fastlane/swift/Runner.swift +5 -9
  34. data/fastlane/swift/RunnerArgument.swift +2 -6
  35. data/fastlane/swift/Scanfile.swift +5 -2
  36. data/fastlane/swift/ScanfileProtocol.swift +6 -3
  37. data/fastlane/swift/Screengrabfile.swift +5 -2
  38. data/fastlane/swift/ScreengrabfileProtocol.swift +6 -3
  39. data/fastlane/swift/Snapshotfile.swift +5 -2
  40. data/fastlane/swift/SnapshotfileProtocol.swift +6 -3
  41. data/fastlane/swift/SocketClient.swift +3 -7
  42. data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -6
  43. data/fastlane/swift/SocketResponse.swift +2 -6
  44. data/fastlane/swift/formatting/Brewfile.lock.json +18 -10
  45. data/fastlane/swift/main.swift +4 -8
  46. data/fastlane/swift/upgrade_manifest.json +1 -1
  47. data/match/lib/match/importer.rb +5 -2
  48. data/match/lib/match/spaceship_ensure.rb +5 -5
  49. data/pilot/lib/pilot/build_manager.rb +0 -3
  50. data/pilot/lib/pilot/manager.rb +1 -2
  51. data/precheck/lib/precheck/options.rb +9 -0
  52. data/precheck/lib/precheck/rule_processor.rb +94 -60
  53. data/precheck/lib/precheck/runner.rb +6 -4
  54. data/produce/lib/produce/itunes_connect.rb +2 -1
  55. data/sigh/lib/assets/resign.sh +9 -6
  56. data/sigh/lib/sigh/runner.rb +2 -1
  57. data/snapshot/lib/assets/SnapshotHelper.swift +17 -2
  58. data/spaceship/lib/spaceship/client.rb +1 -0
  59. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  60. data/spaceship/lib/spaceship/connect_api/client.rb +37 -10
  61. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +2 -0
  62. data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
  63. data/spaceship/lib/spaceship/connect_api/models/.app_store_version.rb.swp +0 -0
  64. data/spaceship/lib/spaceship/connect_api/models/.app_store_version_submission.rb.swp +0 -0
  65. data/spaceship/lib/spaceship/connect_api/models/app.rb +5 -5
  66. data/spaceship/lib/spaceship/connect_api/models/app_price_point.rb +26 -0
  67. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +7 -1
  68. data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +21 -0
  69. data/spaceship/lib/spaceship/connect_api/spaceship.rb +3 -2
  70. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +50 -50
  71. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +20 -0
  72. metadata +23 -18
@@ -9,6 +9,7 @@
9
9
  /* Begin PBXBuildFile section */
10
10
  0311E387230AC1B20060BB5C /* Plugins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E386230AC1B20060BB5C /* Plugins.swift */; };
11
11
  0311E38B230AC9490060BB5C /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E38A230AC9490060BB5C /* Actions.swift */; };
12
+ 1257253924B7992C00E04FA3 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1257253824B7992B00E04FA3 /* main.swift */; };
12
13
  B302067B1F5E3E9000DE6EBD /* SnapshotfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */; };
13
14
  B302067C1F5E3E9000DE6EBD /* GymfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */; };
14
15
  B302067D1F5E3E9000DE6EBD /* MatchfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */; };
@@ -18,7 +19,6 @@
18
19
  B30206811F5E3E9000DE6EBD /* DeliverfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B302067A1F5E3E9000DE6EBD /* DeliverfileProtocol.swift */; };
19
20
  B3BA65A61F5A269100B34850 /* Fastlane.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA659D1F5A269100B34850 /* Fastlane.swift */; };
20
21
  B3BA65A71F5A269100B34850 /* LaneFileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA659E1F5A269100B34850 /* LaneFileProtocol.swift */; };
21
- B3BA65A81F5A269100B34850 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA659F1F5A269100B34850 /* main.swift */; };
22
22
  B3BA65A91F5A269100B34850 /* RubyCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA65A01F5A269100B34850 /* RubyCommand.swift */; };
23
23
  B3BA65AA1F5A269100B34850 /* Runner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA65A11F5A269100B34850 /* Runner.swift */; };
24
24
  B3BA65AB1F5A269100B34850 /* SocketClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BA65A21F5A269100B34850 /* SocketClient.swift */; };
@@ -42,6 +42,7 @@
42
42
  /* Begin PBXFileReference section */
43
43
  0311E386230AC1B20060BB5C /* Plugins.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Plugins.swift; path = ../Plugins.swift; sourceTree = "<group>"; };
44
44
  0311E38A230AC9490060BB5C /* Actions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Actions.swift; path = ../Actions.swift; sourceTree = "<group>"; };
45
+ 1257253824B7992B00E04FA3 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = main.swift; path = ../main.swift; sourceTree = "<group>"; };
45
46
  B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotfileProtocol.swift; path = ../SnapshotfileProtocol.swift; sourceTree = "<group>"; };
46
47
  B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GymfileProtocol.swift; path = ../GymfileProtocol.swift; sourceTree = "<group>"; };
47
48
  B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MatchfileProtocol.swift; path = ../MatchfileProtocol.swift; sourceTree = "<group>"; };
@@ -55,7 +56,6 @@
55
56
  B3144C0A200553DC00470AFE /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; };
56
57
  B3BA659D1F5A269100B34850 /* Fastlane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Fastlane.swift; path = ../Fastlane.swift; sourceTree = "<group>"; };
57
58
  B3BA659E1F5A269100B34850 /* LaneFileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LaneFileProtocol.swift; path = ../LaneFileProtocol.swift; sourceTree = "<group>"; };
58
- B3BA659F1F5A269100B34850 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = main.swift; path = ../main.swift; sourceTree = "<group>"; };
59
59
  B3BA65A01F5A269100B34850 /* RubyCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RubyCommand.swift; path = ../RubyCommand.swift; sourceTree = "<group>"; };
60
60
  B3BA65A11F5A269100B34850 /* Runner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Runner.swift; path = ../Runner.swift; sourceTree = "<group>"; };
61
61
  B3BA65A21F5A269100B34850 /* SocketClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketClient.swift; path = ../SocketClient.swift; sourceTree = "<group>"; };
@@ -161,9 +161,9 @@
161
161
  D512BA011F7C7F40000D2137 /* Runner Code */ = {
162
162
  isa = PBXGroup;
163
163
  children = (
164
+ 1257253824B7992B00E04FA3 /* main.swift */,
164
165
  B3144C0A200553DC00470AFE /* README.txt */,
165
166
  D5BAFD111F7DAAFC0030B324 /* ArgumentProcessor.swift */,
166
- B3BA659F1F5A269100B34850 /* main.swift */,
167
167
  B3BA65AE1F5A2D5C00B34850 /* RunnerArgument.swift */,
168
168
  );
169
169
  name = "Runner Code";
@@ -236,7 +236,7 @@
236
236
  );
237
237
  runOnlyForDeploymentPostprocessing = 0;
238
238
  shellPath = /bin/sh;
239
- shellScript = "cd \"${SRCROOT}\"\ncd ../..\ncp \"${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\" .";
239
+ shellScript = "cd \"${SRCROOT}\"\ncd ../..\ncp \"${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\" .\n";
240
240
  };
241
241
  /* End PBXShellScriptBuildPhase section */
242
242
 
@@ -267,9 +267,9 @@
267
267
  B3BA65AA1F5A269100B34850 /* Runner.swift in Sources */,
268
268
  B3BA65AF1F5A2D5C00B34850 /* RunnerArgument.swift in Sources */,
269
269
  D5B8A5B31FFDC49E00536B24 /* ControlCommand.swift in Sources */,
270
+ 1257253924B7992C00E04FA3 /* main.swift in Sources */,
270
271
  B302067E1F5E3E9000DE6EBD /* PrecheckfileProtocol.swift in Sources */,
271
272
  B3BA65AD1F5A269100B34850 /* SocketResponse.swift in Sources */,
272
- B3BA65A81F5A269100B34850 /* main.swift in Sources */,
273
273
  D55B28C71F6C588300DC42C5 /* Scanfile.swift in Sources */,
274
274
  0311E387230AC1B20060BB5C /* Plugins.swift in Sources */,
275
275
  D55B28C91F6C588300DC42C5 /* Snapshotfile.swift in Sources */,
@@ -1,3 +1,6 @@
1
+ // Gymfile.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
1
4
  // This class is automatically included in FastlaneRunner during build
2
5
 
3
6
  // This autogenerated file will be overwritten or replaced during build time, or when you initialize `gym`
@@ -8,10 +11,10 @@
8
11
  // new group so that it won't be marked for upgrade
9
12
  //
10
13
 
11
- class Gymfile: GymfileProtocol {
14
+ public class Gymfile: GymfileProtocol {
12
15
  // If you want to enable `gym`, run `fastlane gym init`
13
16
  // After, this file will be replaced with a custom implementation that contains values you supplied
14
17
  // during the `init` process, and you won't see this message
15
18
  }
16
19
 
17
- // Generated with fastlane 2.157.1
20
+ // Generated with fastlane 2.159.0
@@ -1,4 +1,7 @@
1
- protocol GymfileProtocol: class {
1
+ // GymfileProtocol.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
4
+ public protocol GymfileProtocol: class {
2
5
  /// Path to the workspace file
3
6
  var workspace: String? { get }
4
7
 
@@ -132,7 +135,7 @@ protocol GymfileProtocol: class {
132
135
  var clonedSourcePackagesPath: String? { get }
133
136
  }
134
137
 
135
- extension GymfileProtocol {
138
+ public extension GymfileProtocol {
136
139
  var workspace: String? { return nil }
137
140
  var project: String? { return nil }
138
141
  var scheme: String? { return nil }
@@ -181,4 +184,4 @@ extension GymfileProtocol {
181
184
 
182
185
  // Please don't remove the lines below
183
186
  // They are used to detect outdated files
184
- // FastlaneRunnerAPIVersion [0.9.39]
187
+ // FastlaneRunnerAPIVersion [0.9.45]
@@ -1,9 +1,5 @@
1
- //
2
- // LaneFileProtocol.swift
3
- // FastlaneSwiftRunner
4
- //
5
- // Created by Joshua Liebowitz on 8/4/17.
6
- //
1
+ // LaneFileProtocol.swift
2
+ // Copyright (c) 2020 FastlaneTools
7
3
 
8
4
  //
9
5
  // ** NOTE **
@@ -16,7 +12,7 @@ import Foundation
16
12
 
17
13
  public protocol LaneFileProtocol: class {
18
14
  var fastlaneVersion: String { get }
19
- static func runLane(named: String, parameters: [String: String]) -> Bool
15
+ static func runLane(from fastfile: LaneFile?, named: String, parameters: [String: String]) -> Bool
20
16
 
21
17
  func recordLaneDescriptions()
22
18
  func beforeAll()
@@ -33,8 +29,8 @@ public extension LaneFileProtocol {
33
29
  }
34
30
 
35
31
  @objcMembers
36
- public class LaneFile: NSObject, LaneFileProtocol {
37
- private(set) static var fastfileInstance: Fastfile?
32
+ open class LaneFile: NSObject, LaneFileProtocol {
33
+ private(set) static var fastfileInstance: LaneFile?
38
34
 
39
35
  // Called before any lane is executed.
40
36
  private func setupAllTheThings() {
@@ -52,7 +48,14 @@ public class LaneFile: NSObject, LaneFileProtocol {
52
48
  private static var laneFunctionNames: [String] {
53
49
  var lanes: [String] = []
54
50
  var methodCount: UInt32 = 0
55
- let methodList = class_copyMethodList(self, &methodCount)
51
+ #if !SWIFT_PACKAGE
52
+ let methodList = class_copyMethodList(self, &methodCount)
53
+ #else
54
+ // In SPM we're calling this functions out of the scope of the normal binary that it
55
+ // is being built, so self in this scope would be the SPM executable instead of the Fastfile
56
+ // that we'd normally expect.
57
+ let methodList = class_copyMethodList(type(of: fastfileInstance!), &methodCount)
58
+ #endif
56
59
  for i in 0 ..< Int(methodCount) {
57
60
  let selName = sel_getName(method_getName(methodList![i]))
58
61
  let name = String(cString: selName)
@@ -92,16 +95,30 @@ public class LaneFile: NSObject, LaneFileProtocol {
92
95
  }
93
96
  }
94
97
 
95
- public static func runLane(named: String, parameters: [String: String]) -> Bool {
98
+ public static func runLane(from fastfile: LaneFile?, named: String, parameters: [String: String]) -> Bool {
96
99
  log(message: "Running lane: \(named)")
97
- loadFastfile()
98
-
99
- guard let fastfileInstance: Fastfile = self.fastfileInstance else {
100
- let message = "Unable to instantiate class named: \(className())"
101
- log(message: message)
102
- fatalError(message)
103
- }
104
-
100
+ #if !SWIFT_PACKAGE
101
+ // In SPM we do not load the Fastfile class from its `className()`, because we're in another
102
+ // in the executable's scope that loads the library, so in that case `className()` won't be the
103
+ // expected Fastfile and so, we do not dynamically load it as we do without SPM.
104
+ loadFastfile()
105
+ #endif
106
+
107
+ #if !SWIFT_PACKAGE
108
+ guard let fastfileInstance: LaneFile = self.fastfileInstance else {
109
+ let message = "Unable to instantiate class named: \(className())"
110
+ log(message: message)
111
+ fatalError(message)
112
+ }
113
+ #else
114
+ // We load the fastfile as a Lanefile in a static way, by parameter, because the Fastlane library
115
+ // cannot know nothing about the caller (in this case, the executable).
116
+ guard let fastfileInstance: LaneFile = fastfile else {
117
+ log(message: "Found nil instance of fastfile")
118
+ preconditionFailure()
119
+ }
120
+ #endif
121
+ self.fastfileInstance = fastfile!
105
122
  let currentLanes = lanes
106
123
  let lowerCasedLaneRequested = named.lowercased()
107
124
 
@@ -0,0 +1,77 @@
1
+ // MainProcess.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
4
+ //
5
+ // ** NOTE **
6
+ // This file is provided by fastlane and WILL be overwritten in future updates
7
+ // If you want to add extra functionality to this project, create a new file in a
8
+ // new group so that it won't be marked for upgrade
9
+ //
10
+
11
+ import Foundation
12
+ #if canImport(SwiftShell)
13
+ import SwiftShell
14
+ #endif
15
+
16
+ let argumentProcessor = ArgumentProcessor(args: CommandLine.arguments)
17
+ let timeout = argumentProcessor.commandTimeout
18
+
19
+ class MainProcess {
20
+ var doneRunningLane = false
21
+ var thread: Thread!
22
+ #if SWIFT_PACKAGE
23
+ var lastPrintDate = Date.distantFuture
24
+ var timeBetweenPrints = Int.min
25
+ var rubySocketCommand: AsyncCommand!
26
+ #endif
27
+
28
+ @objc func connectToFastlaneAndRunLane(_ fastfile: LaneFile?) {
29
+ runner.startSocketThread(port: argumentProcessor.port)
30
+
31
+ let completedRun = Fastfile.runLane(from: fastfile, named: argumentProcessor.currentLane, parameters: argumentProcessor.laneParameters())
32
+ if completedRun {
33
+ runner.disconnectFromFastlaneProcess()
34
+ }
35
+
36
+ doneRunningLane = true
37
+ }
38
+
39
+ func startFastlaneThread(with fastFile: LaneFile?) {
40
+ #if !SWIFT_PACKAGE
41
+ thread = Thread(target: self, selector: #selector(connectToFastlaneAndRunLane), object: nil)
42
+ #else
43
+ thread = Thread(target: self, selector: #selector(connectToFastlaneAndRunLane), object: fastFile)
44
+ #endif
45
+ thread.name = "worker thread"
46
+ #if SWIFT_PACKAGE
47
+ let PATH = run("/bin/bash", "-c", "-l", "eval $(/usr/libexec/path_helper -s) ; echo $PATH").stdout
48
+ main.env["PATH"] = PATH
49
+ let path = main.run(bash: "which fastlane").stdout
50
+ let pids = main.run("lsof", "-t", "-i", ":2000").stdout.split(separator: "\n")
51
+ pids.forEach { main.run("kill", "-9", $0) }
52
+ rubySocketCommand = main.runAsync(path, "socket_server", "-c", "1200")
53
+ lastPrintDate = Date()
54
+ rubySocketCommand.stderror.onStringOutput { print($0) }
55
+ rubySocketCommand.stdout.onStringOutput { stdout in
56
+ print(stdout)
57
+ self.timeBetweenPrints = Int(self.lastPrintDate.timeIntervalSinceNow)
58
+ }
59
+ _ = Runner.waitWithPolling(self.timeBetweenPrints, toEventually: { $0 > 5 }, timeout: 10)
60
+ thread.start()
61
+ #endif
62
+ }
63
+ }
64
+
65
+ public class Main {
66
+ let process = MainProcess()
67
+
68
+ public init() {}
69
+
70
+ public func run(with fastFile: LaneFile?) {
71
+ process.startFastlaneThread(with: fastFile)
72
+
73
+ while !process.doneRunningLane, RunLoop.current.run(mode: RunLoopMode.defaultRunLoopMode, before: Date(timeIntervalSinceNow: 2)) {
74
+ // no op
75
+ }
76
+ }
77
+ }
@@ -1,3 +1,6 @@
1
+ // Matchfile.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
1
4
  // This class is automatically included in FastlaneRunner during build
2
5
 
3
6
  // This autogenerated file will be overwritten or replaced during build time, or when you initialize `match`
@@ -8,10 +11,10 @@
8
11
  // new group so that it won't be marked for upgrade
9
12
  //
10
13
 
11
- class Matchfile: MatchfileProtocol {
14
+ public class Matchfile: MatchfileProtocol {
12
15
  // If you want to enable `match`, run `fastlane match init`
13
16
  // After, this file will be replaced with a custom implementation that contains values you supplied
14
17
  // during the `init` process, and you won't see this message
15
18
  }
16
19
 
17
- // Generated with fastlane 2.157.1
20
+ // Generated with fastlane 2.159.0
@@ -1,4 +1,7 @@
1
- protocol MatchfileProtocol: class {
1
+ // MatchfileProtocol.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
4
+ public protocol MatchfileProtocol: class {
2
5
  /// Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
3
6
  var type: String { get }
4
7
 
@@ -120,7 +123,7 @@ protocol MatchfileProtocol: class {
120
123
  var verbose: Bool { get }
121
124
  }
122
125
 
123
- extension MatchfileProtocol {
126
+ public extension MatchfileProtocol {
124
127
  var type: String { return "development" }
125
128
  var additionalCertTypes: [String]? { return nil }
126
129
  var readonly: Bool { return false }
@@ -165,4 +168,4 @@ extension MatchfileProtocol {
165
168
 
166
169
  // Please don't remove the lines below
167
170
  // They are used to detect outdated files
168
- // FastlaneRunnerAPIVersion [0.9.33]
171
+ // FastlaneRunnerAPIVersion [0.9.39]
@@ -1,4 +1,5 @@
1
- // This class is automatically included in FastlaneRunner during build
1
+ // Plugins.swift
2
+ // Copyright (c) 2020 FastlaneTools
2
3
 
3
4
  // This autogenerated file will be overwritten or replaced when installing/updating plugins or running "fastlane generate_swift"
4
5
  //
@@ -1,3 +1,6 @@
1
+ // Precheckfile.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
1
4
  // This class is automatically included in FastlaneRunner during build
2
5
 
3
6
  // This autogenerated file will be overwritten or replaced during build time, or when you initialize `precheck`
@@ -8,10 +11,10 @@
8
11
  // new group so that it won't be marked for upgrade
9
12
  //
10
13
 
11
- class Precheckfile: PrecheckfileProtocol {
14
+ public class Precheckfile: PrecheckfileProtocol {
12
15
  // If you want to enable `precheck`, run `fastlane precheck init`
13
16
  // After, this file will be replaced with a custom implementation that contains values you supplied
14
17
  // during the `init` process, and you won't see this message
15
18
  }
16
19
 
17
- // Generated with fastlane 2.157.1
20
+ // Generated with fastlane 2.159.0
@@ -1,4 +1,7 @@
1
- protocol PrecheckfileProtocol: class {
1
+ // PrecheckfileProtocol.swift
2
+ // Copyright (c) 2020 FastlaneTools
3
+
4
+ public protocol PrecheckfileProtocol: class {
2
5
  /// The bundle identifier of your app
3
6
  var appIdentifier: String { get }
4
7
 
@@ -11,6 +14,9 @@ protocol PrecheckfileProtocol: class {
11
14
  /// The name of your App Store Connect team if you're in multiple teams
12
15
  var teamName: String? { get }
13
16
 
17
+ /// The platform to use (optional)
18
+ var platform: String { get }
19
+
14
20
  /// The default rule level unless otherwise configured
15
21
  var defaultRuleLevel: String { get }
16
22
 
@@ -21,11 +27,12 @@ protocol PrecheckfileProtocol: class {
21
27
  var freeStuffInIap: String? { get }
22
28
  }
23
29
 
24
- extension PrecheckfileProtocol {
30
+ public extension PrecheckfileProtocol {
25
31
  var appIdentifier: String { return "" }
26
32
  var username: String { return "" }
27
33
  var teamId: String? { return nil }
28
34
  var teamName: String? { return nil }
35
+ var platform: String { return "ios" }
29
36
  var defaultRuleLevel: String { return "error" }
30
37
  var includeInAppPurchases: Bool { return true }
31
38
  var freeStuffInIap: String? { return nil }
@@ -33,4 +40,4 @@ extension PrecheckfileProtocol {
33
40
 
34
41
  // Please don't remove the lines below
35
42
  // They are used to detect outdated files
36
- // FastlaneRunnerAPIVersion [0.9.32]
43
+ // FastlaneRunnerAPIVersion [0.9.38]
@@ -1,9 +1,5 @@
1
- //
2
- // RubyCommand.swift
3
- // FastlaneSwiftRunner
4
- //
5
- // Created by Joshua Liebowitz on 8/4/17.
6
- //
1
+ // RubyCommand.swift
2
+ // Copyright (c) 2020 FastlaneTools
7
3
 
8
4
  //
9
5
  // ** NOTE **
@@ -1,9 +1,5 @@
1
- //
2
- // RubyCommandable.swift
3
- // FastlaneRunner
4
- //
5
- // Created by Joshua Liebowitz on 1/4/18.
6
- //
1
+ // RubyCommandable.swift
2
+ // Copyright (c) 2020 FastlaneTools
7
3
 
8
4
  //
9
5
  // ** NOTE **
@@ -1,9 +1,5 @@
1
- //
2
- // Runner.swift
3
- // FastlaneSwiftRunner
4
- //
5
- // Created by Joshua Liebowitz on 8/26/17.
6
- //
1
+ // Runner.swift
2
+ // Copyright (c) 2020 FastlaneTools
7
3
 
8
4
  //
9
5
  // ** NOTE **
@@ -29,7 +25,7 @@ func desc(_: String) {
29
25
  class Runner {
30
26
  private var thread: Thread!
31
27
  private var socketClient: SocketClient!
32
- private let dispatchGroup: DispatchGroup = DispatchGroup()
28
+ private let dispatchGroup = DispatchGroup()
33
29
  private var returnValue: String? // lol, so safe
34
30
  private var currentlyExecutingCommand: RubyCommandable?
35
31
  private var shouldLeaveDispatchGroupDuringDisconnect = false
@@ -42,7 +38,7 @@ class Runner {
42
38
 
43
39
  let secondsToWait = DispatchTimeInterval.seconds(SocketClient.defaultCommandTimeoutSeconds)
44
40
  // swiftlint:disable next
45
- let timeoutResult = waitWithPolling(self.executeNext[command.id], toEventually: { $0 == true }, timeout: SocketClient.defaultCommandTimeoutSeconds)
41
+ let timeoutResult = Self.waitWithPolling(self.executeNext[command.id], toEventually: { $0 == true }, timeout: SocketClient.defaultCommandTimeoutSeconds)
46
42
  executeNext.removeValue(forKey: command.id)
47
43
  let failureMessage = "command didn't execute in: \(SocketClient.defaultCommandTimeoutSeconds) seconds"
48
44
  let success = testDispatchTimeoutResult(timeoutResult, failureMessage: failureMessage, timeToWait: secondsToWait)
@@ -58,7 +54,7 @@ class Runner {
58
54
  }
59
55
  }
60
56
 
61
- private func waitWithPolling<T>(_ expression: @autoclosure @escaping () throws -> T, toEventually predicate: @escaping (T) -> Bool, timeout: Int, pollingInterval: DispatchTimeInterval = .milliseconds(4)) -> DispatchTimeoutResult {
57
+ static func waitWithPolling<T>(_ expression: @autoclosure @escaping () throws -> T, toEventually predicate: @escaping (T) -> Bool, timeout: Int, pollingInterval: DispatchTimeInterval = .milliseconds(4)) -> DispatchTimeoutResult {
62
58
  func memoizedClosure<T>(_ closure: @escaping () throws -> T) -> (Bool) throws -> T {
63
59
  var cache: T?
64
60
  return { withoutCaching in
@@ -1,9 +1,5 @@
1
- //
2
- // RunnerArgument.swift
3
- // FastlaneSwiftRunner
4
- //
5
- // Created by Joshua Liebowitz on 9/1/17.
6
- //
1
+ // RunnerArgument.swift
2
+ // Copyright (c) 2020 FastlaneTools
7
3
 
8
4
  //
9
5
  // ** NOTE **