fastlane 2.69.2 → 2.69.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/fastlane/lib/fastlane/version.rb +1 -1
  3. data/fastlane/swift/Appfile.swift +17 -0
  4. data/fastlane/swift/ArgumentProcessor.swift +72 -0
  5. data/fastlane/swift/Deliverfile.swift +14 -0
  6. data/fastlane/swift/DeliverfileProtocol.swift +118 -0
  7. data/fastlane/swift/Fastfile.swift +12 -0
  8. data/fastlane/swift/Fastlane.swift +3739 -0
  9. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +409 -0
  10. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  11. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/liebowitz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  12. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +103 -0
  13. data/fastlane/swift/Gymfile.swift +14 -0
  14. data/fastlane/swift/GymfileProtocol.swift +86 -0
  15. data/fastlane/swift/LaneFileProtocol.swift +103 -0
  16. data/fastlane/swift/Matchfile.swift +14 -0
  17. data/fastlane/swift/MatchfileProtocol.swift +54 -0
  18. data/fastlane/swift/Precheckfile.swift +14 -0
  19. data/fastlane/swift/PrecheckfileProtocol.swift +24 -0
  20. data/fastlane/swift/RubyCommand.swift +138 -0
  21. data/fastlane/swift/Runner.swift +190 -0
  22. data/fastlane/swift/RunnerArgument.swift +18 -0
  23. data/fastlane/swift/Scanfile.swift +14 -0
  24. data/fastlane/swift/ScanfileProtocol.swift +88 -0
  25. data/fastlane/swift/Screengrabfile.swift +14 -0
  26. data/fastlane/swift/ScreengrabfileProtocol.swift +48 -0
  27. data/fastlane/swift/Snapshotfile.swift +14 -0
  28. data/fastlane/swift/SnapshotfileProtocol.swift +70 -0
  29. data/fastlane/swift/SocketClient.swift +283 -0
  30. data/fastlane/swift/SocketClientDelegateProtocol.swift +19 -0
  31. data/fastlane/swift/SocketResponse.swift +74 -0
  32. data/fastlane/swift/main.swift +43 -0
  33. data/match/lib/match/encrypt.rb +12 -0
  34. metadata +32 -2
@@ -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 `gym`
4
+ class Gymfile: GymfileProtocol {
5
+ // If you want to enable `gym`, run `fastlane gym 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,86 @@
1
+ protocol GymfileProtocol: class {
2
+ var workspace: String? { get }
3
+ var project: String? { get }
4
+ var scheme: String? { get }
5
+ var clean: Bool { get }
6
+ var outputDirectory: String { get }
7
+ var outputName: String? { get }
8
+ var configuration: String? { get }
9
+ var silent: Bool { get }
10
+ var codesigningIdentity: String? { get }
11
+ var skipPackageIpa: Bool { get }
12
+ var includeSymbols: Bool? { get }
13
+ var includeBitcode: Bool? { get }
14
+ var exportMethod: String? { get }
15
+ var exportOptions: [String : Any]? { get }
16
+ var exportXcargs: String? { get }
17
+ var skipBuildArchive: Bool? { get }
18
+ var skipArchive: Bool? { get }
19
+ var buildPath: String? { get }
20
+ var archivePath: String? { get }
21
+ var derivedDataPath: String? { get }
22
+ var resultBundle: String? { get }
23
+ var buildlogPath: String { get }
24
+ var sdk: String? { get }
25
+ var toolchain: String? { get }
26
+ var destination: String? { get }
27
+ var exportTeamId: String? { get }
28
+ var xcargs: String? { get }
29
+ var xcconfig: String? { get }
30
+ var suppressXcodeOutput: String? { get }
31
+ var disableXcpretty: String? { get }
32
+ var xcprettyTestFormat: String? { get }
33
+ var xcprettyFormatter: String? { get }
34
+ var xcprettyReportJunit: String? { get }
35
+ var xcprettyReportHtml: String? { get }
36
+ var xcprettyReportJson: String? { get }
37
+ var analyzeBuildTime: String? { get }
38
+ var xcprettyUtf: String? { get }
39
+ var skipProfileDetection: Bool { get }
40
+ }
41
+
42
+ extension GymfileProtocol {
43
+ var workspace: String? { return nil }
44
+ var project: String? { return nil }
45
+ var scheme: String? { return nil }
46
+ var clean: Bool { return false }
47
+ var outputDirectory: String { return "." }
48
+ var outputName: String? { return nil }
49
+ var configuration: String? { return nil }
50
+ var silent: Bool { return false }
51
+ var codesigningIdentity: String? { return nil }
52
+ var skipPackageIpa: Bool { return false }
53
+ var includeSymbols: Bool? { return nil }
54
+ var includeBitcode: Bool? { return nil }
55
+ var exportMethod: String? { return nil }
56
+ var exportOptions: [String : Any]? { return nil }
57
+ var exportXcargs: String? { return nil }
58
+ var skipBuildArchive: Bool? { return nil }
59
+ var skipArchive: Bool? { return nil }
60
+ var buildPath: String? { return nil }
61
+ var archivePath: String? { return nil }
62
+ var derivedDataPath: String? { return nil }
63
+ var resultBundle: String? { return nil }
64
+ var buildlogPath: String { return "~/Library/Logs/gym" }
65
+ var sdk: String? { return nil }
66
+ var toolchain: String? { return nil }
67
+ var destination: String? { return nil }
68
+ var exportTeamId: String? { return nil }
69
+ var xcargs: String? { return nil }
70
+ var xcconfig: String? { return nil }
71
+ var suppressXcodeOutput: String? { return nil }
72
+ var disableXcpretty: String? { return nil }
73
+ var xcprettyTestFormat: String? { return nil }
74
+ var xcprettyFormatter: String? { return nil }
75
+ var xcprettyReportJunit: String? { return nil }
76
+ var xcprettyReportHtml: String? { return nil }
77
+ var xcprettyReportJson: String? { return nil }
78
+ var analyzeBuildTime: String? { return nil }
79
+ var xcprettyUtf: String? { return nil }
80
+ var skipProfileDetection: Bool { return false }
81
+ }
82
+
83
+
84
+ // Please don't remove the lines below
85
+ // They are used to detect outdated files
86
+ // FastlaneRunnerAPIVersion [0.9.1]
@@ -0,0 +1,103 @@
1
+ //
2
+ // LaneFileProtocol.swift
3
+ // FastlaneSwiftRunner
4
+ //
5
+ // Created by Joshua Liebowitz on 8/4/17.
6
+ // Copyright © 2017 Joshua Liebowitz. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ public protocol LaneFileProtocol: class {
12
+ var fastlaneVersion: String { get }
13
+ static func runLane(named: String)
14
+
15
+ func recordLaneDescriptions()
16
+ func beforeAll()
17
+ func afterAll(currentLane: String)
18
+ func onError(currentLane: String, errorInfo: String)
19
+ }
20
+
21
+ public extension LaneFileProtocol {
22
+ var fastlaneVersion: String { return "" } // default "" because that means any is fine
23
+ func beforeAll() { } // no op by default
24
+ func afterAll(currentLane: String) { } // no op by default
25
+ func onError(currentLane: String, errorInfo: String) {} // no op by default
26
+ func recordLaneDescriptions() { } // no op by default
27
+ }
28
+
29
+ @objcMembers
30
+ public class LaneFile: NSObject, LaneFileProtocol {
31
+ private(set) static var fastfileInstance: Fastfile?
32
+
33
+ // Called before any lane is executed.
34
+ private func setupAllTheThings() {
35
+ // Step 1, add lange descriptions
36
+ (self as! Fastfile).recordLaneDescriptions()
37
+
38
+ // Step 2, run beforeAll() function
39
+ LaneFile.fastfileInstance!.beforeAll()
40
+ }
41
+
42
+ public static var lanes: [String : String] {
43
+ var laneToMethodName: [String : String] = [:]
44
+ var methodCount: UInt32 = 0
45
+ let methodList = class_copyMethodList(self, &methodCount)
46
+ for i in 0..<Int(methodCount) {
47
+ let selName = sel_getName(method_getName(methodList![i]))
48
+ let name = String(cString: selName)
49
+ let lowercasedName = name.lowercased()
50
+ guard lowercasedName.hasSuffix("lane") else {
51
+ continue
52
+ }
53
+
54
+ laneToMethodName[lowercasedName] = name
55
+ let lowercasedNameNoLane = String(lowercasedName.prefix(lowercasedName.count - 4))
56
+ laneToMethodName[lowercasedNameNoLane] = name
57
+ }
58
+ return laneToMethodName
59
+ }
60
+
61
+ public static func loadFastfile() {
62
+ if self.fastfileInstance == nil {
63
+ let fastfileType: AnyObject.Type = NSClassFromString(self.className())!
64
+ let fastfileAsNSObjectType: NSObject.Type = fastfileType as! NSObject.Type
65
+ let currentFastfileInstance: Fastfile? = fastfileAsNSObjectType.init() as? Fastfile
66
+ self.fastfileInstance = currentFastfileInstance
67
+ }
68
+ }
69
+
70
+ public static func runLane(named: String) {
71
+ log(message: "Running lane: \(named)")
72
+ self.loadFastfile()
73
+
74
+ guard let fastfileInstance: Fastfile = self.fastfileInstance else {
75
+ let message = "Unable to instantiate class named: \(self.className())"
76
+ log(message: message)
77
+ fatalError(message)
78
+ }
79
+
80
+ // call all methods that need to be called before we start calling lanes
81
+ fastfileInstance.setupAllTheThings()
82
+
83
+ let currentLanes = self.lanes
84
+ let lowerCasedLaneRequested = named.lowercased()
85
+
86
+ guard let laneMethod = currentLanes[lowerCasedLaneRequested] else {
87
+ let message = "unable to find lane named: \(named)"
88
+ log(message: message)
89
+ fatalError(message)
90
+ }
91
+
92
+ // We need to catch all possible errors here and display a nice message
93
+ _ = fastfileInstance.perform(NSSelectorFromString(laneMethod))
94
+
95
+ // only call on success
96
+ fastfileInstance.afterAll(currentLane: named)
97
+ log(message: "Done running lane: \(named) 🚀")
98
+ }
99
+ }
100
+
101
+ // Please don't remove the lines below
102
+ // They are used to detect outdated files
103
+ // 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 `match`
4
+ class Matchfile: MatchfileProtocol {
5
+ // If you want to enable `match`, run `fastlane match 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,54 @@
1
+ protocol MatchfileProtocol: class {
2
+ var gitUrl: String { get }
3
+ var gitBranch: String { get }
4
+ var type: String { get }
5
+ var appIdentifier: [String] { get }
6
+ var username: String { get }
7
+ var keychainName: String { get }
8
+ var keychainPassword: String? { get }
9
+ var readonly: Bool { get }
10
+ var teamId: String? { get }
11
+ var gitFullName: String? { get }
12
+ var gitUserEmail: String? { get }
13
+ var teamName: String? { get }
14
+ var verbose: Bool { get }
15
+ var force: Bool { get }
16
+ var skipConfirmation: Bool { get }
17
+ var shallowClone: Bool { get }
18
+ var cloneBranchDirectly: Bool { get }
19
+ var workspace: String? { get }
20
+ var forceForNewDevices: Bool { get }
21
+ var skipDocs: Bool { get }
22
+ var platform: String { get }
23
+ var templateName: String? { get }
24
+ }
25
+
26
+ extension MatchfileProtocol {
27
+ var gitUrl: String { return "" }
28
+ var gitBranch: String { return "master" }
29
+ var type: String { return "development" }
30
+ var appIdentifier: [String] { return [] }
31
+ var username: String { return "" }
32
+ var keychainName: String { return "login.keychain" }
33
+ var keychainPassword: String? { return nil }
34
+ var readonly: Bool { return false }
35
+ var teamId: String? { return nil }
36
+ var gitFullName: String? { return nil }
37
+ var gitUserEmail: String? { return nil }
38
+ var teamName: String? { return nil }
39
+ var verbose: Bool { return false }
40
+ var force: Bool { return false }
41
+ var skipConfirmation: Bool { return false }
42
+ var shallowClone: Bool { return false }
43
+ var cloneBranchDirectly: Bool { return false }
44
+ var workspace: String? { return nil }
45
+ var forceForNewDevices: Bool { return false }
46
+ var skipDocs: Bool { return false }
47
+ var platform: String { return "ios" }
48
+ var templateName: String? { return nil }
49
+ }
50
+
51
+
52
+ // Please don't remove the lines below
53
+ // They are used to detect outdated files
54
+ // 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 `precheck`
4
+ class Precheckfile: PrecheckfileProtocol {
5
+ // If you want to enable `precheck`, run `fastlane precheck 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,24 @@
1
+ protocol PrecheckfileProtocol: class {
2
+ var appIdentifier: String { get }
3
+ var username: String { get }
4
+ var teamId: String? { get }
5
+ var teamName: String? { get }
6
+ var defaultRuleLevel: String { get }
7
+ var includeInAppPurchases: Bool { get }
8
+ var freeStuffInIap: String? { get }
9
+ }
10
+
11
+ extension PrecheckfileProtocol {
12
+ var appIdentifier: String { return "" }
13
+ var username: String { return "" }
14
+ var teamId: String? { return nil }
15
+ var teamName: String? { return nil }
16
+ var defaultRuleLevel: String { return "error" }
17
+ var includeInAppPurchases: Bool { return true }
18
+ var freeStuffInIap: String? { return nil }
19
+ }
20
+
21
+
22
+ // Please don't remove the lines below
23
+ // They are used to detect outdated files
24
+ // FastlaneRunnerAPIVersion [0.9.1]
@@ -0,0 +1,138 @@
1
+ //
2
+ // RubyCommand.swift
3
+ // FastlaneSwiftRunner
4
+ //
5
+ // Created by Joshua Liebowitz on 8/4/17.
6
+ // Copyright © 2017 Joshua Liebowitz. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ protocol RubyCommandable {
12
+ var json: String { get }
13
+ }
14
+
15
+ struct RubyCommand: RubyCommandable {
16
+ struct Argument {
17
+ enum ArgType {
18
+ case stringClosure
19
+
20
+ var typeString: String {
21
+ switch self {
22
+ case .stringClosure:
23
+ return "string_closure" // this should match when is in ruby's SocketServerActionCommandExecutor
24
+ }
25
+ }
26
+ }
27
+
28
+ let name: String
29
+ let value: Any?
30
+ let type: ArgType?
31
+
32
+ init(name: String, value: Any?, type: ArgType? = nil) {
33
+ self.name = name
34
+ self.value = value
35
+ self.type = type
36
+ }
37
+
38
+ var hasValue: Bool {
39
+ return nil != self.value
40
+ }
41
+
42
+ var json: String {
43
+ get {
44
+
45
+ if let someValue = value {
46
+ let typeJson: String
47
+ if let type = type {
48
+ typeJson = ", \"value_type\" : \"\(type.typeString)\""
49
+ }else {
50
+ typeJson = ""
51
+ }
52
+
53
+ if type == .stringClosure {
54
+ return "{\"name\" : \"\(name)\", \"value\" : \"ignored_for_closure\"\(typeJson)}"
55
+ } else if let array = someValue as? [String] {
56
+ return "{\"name\" : \"\(name)\", \"value\" : \"\(array.joined(separator: ","))\"\(typeJson)}"
57
+ } else if let hash = someValue as? [String : Any] {
58
+ let jsonData = try! JSONSerialization.data(withJSONObject: hash, options: [])
59
+ let jsonString = String(data: jsonData, encoding: .utf8)!
60
+ return "{\"name\" : \"\(name)\", \"value\" : \(jsonString)\(typeJson)}"
61
+ } else {
62
+ let dictionary = [
63
+ "name": name,
64
+ "value": someValue
65
+ ]
66
+ let jsonData = try! JSONSerialization.data(withJSONObject: dictionary, options: [])
67
+ let jsonString = String(data: jsonData, encoding: .utf8)!
68
+ return jsonString
69
+ }
70
+ } else {
71
+ // Just exclude this arg if it doesn't have a value
72
+ return ""
73
+ }
74
+ }
75
+ }
76
+ }
77
+
78
+ let commandID: String
79
+ let methodName: String
80
+ let className: String?
81
+ let args: [Argument]
82
+
83
+ func performCallback(callbackArg: String) {
84
+ // WARNING: This will perform the first callback it receives
85
+ let callbacks = self.args.filter { ($0.type != nil) && $0.type == .stringClosure }
86
+ guard let callback = callbacks.first else {
87
+ verbose(message: "received call to performCallback with \(callbackArg), but no callback available to perform")
88
+ return
89
+ }
90
+
91
+ guard let callbackArgValue = callback.value else {
92
+ verbose(message: "received call to performCallback with \(callbackArg), but callback is nil")
93
+ return
94
+ }
95
+
96
+ guard let callbackClosure = callbackArgValue as? ((String) -> Void) else {
97
+ verbose(message: "received call to performCallback with \(callbackArg), but callback type is unknown \(callbackArgValue.self)")
98
+ return
99
+ }
100
+
101
+ print("Performing callback with: \(callbackArg)")
102
+ callbackClosure(callbackArg)
103
+ }
104
+
105
+ var json: String {
106
+ let argsArrayJson = self.args
107
+ .map { $0.json }
108
+ .filter { $0 != "" }
109
+
110
+ let argsJson: String?
111
+ if argsArrayJson.count > 0 {
112
+ argsJson = "\"args\" : [\(argsArrayJson.joined(separator: ","))]"
113
+ } else {
114
+ argsJson = nil
115
+ }
116
+
117
+ let commandIDJson = "\"commandID\" : \"\(commandID)\""
118
+ let methodNameJson = "\"methodName\" : \"\(methodName)\""
119
+
120
+ var jsonParts = [commandIDJson, methodNameJson]
121
+ if let argsJson = argsJson {
122
+ jsonParts.append(argsJson)
123
+ }
124
+
125
+ if let className = className {
126
+ let classNameJson = "\"className\" : \"\(className)\""
127
+ jsonParts.append(classNameJson)
128
+ }
129
+
130
+ let commandJsonString = "{\(jsonParts.joined(separator: ","))}"
131
+
132
+ return commandJsonString
133
+ }
134
+ }
135
+
136
+ // Please don't remove the lines below
137
+ // They are used to detect outdated files
138
+ // FastlaneRunnerAPIVersion [0.9.1]