fastlane 2.157.4 → 2.162.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -80
- data/cert/lib/cert/options.rb +28 -1
- data/cert/lib/cert/runner.rb +50 -33
- data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
- data/deliver/lib/deliver/options.rb +17 -1
- data/deliver/lib/deliver/runner.rb +36 -7
- data/deliver/lib/deliver/upload_metadata.rb +37 -6
- data/deliver/lib/deliver/upload_price_tier.rb +7 -2
- data/deliver/lib/deliver/upload_screenshots.rb +25 -8
- data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/{.ensure_git_status_clean.rb.swp → .git_commit.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +20 -1
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +6 -1
- data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -2
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +3 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +2 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +32 -7
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +13 -2
- data/fastlane/lib/fastlane/helper/git_helper.rb +2 -0
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +6 -4
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +2 -1
- data/fastlane/swift/Appfile.swift +2 -4
- data/fastlane/swift/ArgumentProcessor.swift +2 -6
- data/fastlane/swift/ControlCommand.swift +2 -5
- data/fastlane/swift/Deliverfile.swift +5 -2
- data/fastlane/swift/DeliverfileProtocol.swift +15 -4
- data/fastlane/swift/Fastfile.swift +5 -1
- data/fastlane/swift/Fastlane.swift +2333 -2240
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +5 -5
- data/fastlane/swift/Gymfile.swift +5 -2
- data/fastlane/swift/GymfileProtocol.swift +6 -3
- data/fastlane/swift/LaneFileProtocol.swift +42 -29
- data/fastlane/swift/MainProcess.swift +77 -0
- data/fastlane/swift/Matchfile.swift +5 -2
- data/fastlane/swift/MatchfileProtocol.swift +21 -6
- data/fastlane/swift/Plugins.swift +2 -1
- data/fastlane/swift/Precheckfile.swift +5 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +18 -3
- data/fastlane/swift/RubyCommand.swift +2 -6
- data/fastlane/swift/RubyCommandable.swift +2 -6
- data/fastlane/swift/Runner.swift +5 -9
- data/fastlane/swift/RunnerArgument.swift +2 -6
- data/fastlane/swift/Scanfile.swift +5 -2
- data/fastlane/swift/ScanfileProtocol.swift +6 -3
- data/fastlane/swift/Screengrabfile.swift +5 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +6 -3
- data/fastlane/swift/Snapshotfile.swift +5 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +6 -3
- data/fastlane/swift/SocketClient.swift +3 -7
- data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -6
- data/fastlane/swift/SocketResponse.swift +2 -6
- data/fastlane/swift/formatting/Brewfile.lock.json +18 -10
- data/fastlane/swift/main.swift +4 -8
- data/fastlane/swift/upgrade_manifest.json +1 -1
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -2
- data/frameit/lib/frameit/editor.rb +1 -0
- data/match/lib/match/generator.rb +6 -1
- data/match/lib/match/importer.rb +44 -8
- data/match/lib/match/migrate.rb +13 -2
- data/match/lib/match/nuke.rb +65 -22
- data/match/lib/match/options.rb +27 -2
- data/match/lib/match/runner.rb +38 -10
- data/match/lib/match/spaceship_ensure.rb +27 -21
- data/match/lib/match/storage/google_cloud_storage.rb +20 -3
- data/match/lib/match/storage/s3_storage.rb +19 -3
- data/pilot/lib/pilot/options.rb +2 -2
- data/precheck/lib/precheck/options.rb +25 -0
- data/precheck/lib/precheck/rule_processor.rb +94 -60
- data/precheck/lib/precheck/runner.rb +26 -5
- data/sigh/lib/sigh/options.rb +21 -0
- data/sigh/lib/sigh/runner.rb +80 -38
- data/snapshot/lib/assets/SnapshotHelper.swift +17 -2
- data/spaceship/README.md +1 -1
- data/spaceship/lib/spaceship/{connect_api/.DS_Store → .DS_Store} +0 -0
- data/spaceship/lib/spaceship/client.rb +2 -1
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/api_client.rb +3 -3
- data/spaceship/lib/spaceship/connect_api/client.rb +38 -15
- data/{fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp → spaceship/lib/spaceship/connect_api/models/.app_store_version_submission.rb.swp} +0 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +17 -9
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +3 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +3 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +21 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +42 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -1
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +28 -2
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +29 -9
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +11 -5
- metadata +24 -25
- data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
data/fastlane/swift/Runner.swift
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
//
|
2
|
-
//
|
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
|
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
|
-
|
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,3 +1,6 @@
|
|
1
|
+
// Scanfile.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 `scan`
|
@@ -8,10 +11,10 @@
|
|
8
11
|
// new group so that it won't be marked for upgrade
|
9
12
|
//
|
10
13
|
|
11
|
-
class Scanfile: ScanfileProtocol {
|
14
|
+
public class Scanfile: ScanfileProtocol {
|
12
15
|
// If you want to enable `scan`, run `fastlane scan 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.
|
20
|
+
// Generated with fastlane 2.162.0
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
// ScanfileProtocol.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
3
|
+
|
4
|
+
public protocol ScanfileProtocol: class {
|
2
5
|
/// Path to the workspace file
|
3
6
|
var workspace: String? { get }
|
4
7
|
|
@@ -189,7 +192,7 @@ protocol ScanfileProtocol: class {
|
|
189
192
|
var failBuild: Bool { get }
|
190
193
|
}
|
191
194
|
|
192
|
-
extension ScanfileProtocol {
|
195
|
+
public extension ScanfileProtocol {
|
193
196
|
var workspace: String? { return nil }
|
194
197
|
var project: String? { return nil }
|
195
198
|
var scheme: String? { return nil }
|
@@ -257,4 +260,4 @@ extension ScanfileProtocol {
|
|
257
260
|
|
258
261
|
// Please don't remove the lines below
|
259
262
|
// They are used to detect outdated files
|
260
|
-
// FastlaneRunnerAPIVersion [0.9.
|
263
|
+
// FastlaneRunnerAPIVersion [0.9.53]
|
@@ -1,3 +1,6 @@
|
|
1
|
+
// Screengrabfile.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 `screengrab`
|
@@ -8,10 +11,10 @@
|
|
8
11
|
// new group so that it won't be marked for upgrade
|
9
12
|
//
|
10
13
|
|
11
|
-
class Screengrabfile: ScreengrabfileProtocol {
|
14
|
+
public class Screengrabfile: ScreengrabfileProtocol {
|
12
15
|
// If you want to enable `screengrab`, run `fastlane screengrab 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.
|
20
|
+
// Generated with fastlane 2.162.0
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
// ScreengrabfileProtocol.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
3
|
+
|
4
|
+
public protocol ScreengrabfileProtocol: class {
|
2
5
|
/// Path to the root of your Android SDK installation, e.g. ~/tools/android-sdk-macosx
|
3
6
|
var androidHome: String? { get }
|
4
7
|
|
@@ -66,7 +69,7 @@ protocol ScreengrabfileProtocol: class {
|
|
66
69
|
var adbHost: String? { get }
|
67
70
|
}
|
68
71
|
|
69
|
-
extension ScreengrabfileProtocol {
|
72
|
+
public extension ScreengrabfileProtocol {
|
70
73
|
var androidHome: String? { return nil }
|
71
74
|
var buildToolsVersion: String? { return nil }
|
72
75
|
var locales: [String] { return ["en-US"] }
|
@@ -93,4 +96,4 @@ extension ScreengrabfileProtocol {
|
|
93
96
|
|
94
97
|
// Please don't remove the lines below
|
95
98
|
// They are used to detect outdated files
|
96
|
-
// FastlaneRunnerAPIVersion [0.9.
|
99
|
+
// FastlaneRunnerAPIVersion [0.9.43]
|
@@ -1,3 +1,6 @@
|
|
1
|
+
// Snapshotfile.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 `snapshot`
|
@@ -8,10 +11,10 @@
|
|
8
11
|
// new group so that it won't be marked for upgrade
|
9
12
|
//
|
10
13
|
|
11
|
-
class Snapshotfile: SnapshotfileProtocol {
|
14
|
+
public class Snapshotfile: SnapshotfileProtocol {
|
12
15
|
// If you want to enable `snapshot`, run `fastlane snapshot 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.
|
20
|
+
// Generated with fastlane 2.162.0
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
// SnapshotfileProtocol.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
3
|
+
|
4
|
+
public protocol SnapshotfileProtocol: class {
|
2
5
|
/// Path the workspace file
|
3
6
|
var workspace: String? { get }
|
4
7
|
|
@@ -132,7 +135,7 @@ protocol SnapshotfileProtocol: class {
|
|
132
135
|
var suppressXcodeOutput: Bool? { get }
|
133
136
|
}
|
134
137
|
|
135
|
-
extension SnapshotfileProtocol {
|
138
|
+
public extension SnapshotfileProtocol {
|
136
139
|
var workspace: String? { return nil }
|
137
140
|
var project: String? { return nil }
|
138
141
|
var xcargs: String? { return nil }
|
@@ -181,4 +184,4 @@ extension SnapshotfileProtocol {
|
|
181
184
|
|
182
185
|
// Please don't remove the lines below
|
183
186
|
// They are used to detect outdated files
|
184
|
-
// FastlaneRunnerAPIVersion [0.9.
|
187
|
+
// FastlaneRunnerAPIVersion [0.9.37]
|
@@ -1,9 +1,5 @@
|
|
1
|
-
//
|
2
|
-
//
|
3
|
-
// FastlaneSwiftRunner
|
4
|
-
//
|
5
|
-
// Created by Joshua Liebowitz on 7/30/17.
|
6
|
-
//
|
1
|
+
// SocketClient.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
7
3
|
|
8
4
|
//
|
9
5
|
// ** NOTE **
|
@@ -40,7 +36,7 @@ class SocketClient: NSObject {
|
|
40
36
|
fileprivate var inputStream: InputStream!
|
41
37
|
fileprivate var outputStream: OutputStream!
|
42
38
|
fileprivate var cleaningUpAfterDone = false
|
43
|
-
fileprivate let dispatchGroup
|
39
|
+
fileprivate let dispatchGroup = DispatchGroup()
|
44
40
|
fileprivate let readSemaphore = DispatchSemaphore(value: 1)
|
45
41
|
fileprivate let writeSemaphore = DispatchSemaphore(value: 1)
|
46
42
|
fileprivate let commandTimeoutSeconds: Int
|
@@ -2,22 +2,22 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.
|
5
|
+
"version": "0.45.6",
|
6
6
|
"bottle": {
|
7
7
|
"cellar": ":any_skip_relocation",
|
8
8
|
"prefix": "/usr/local",
|
9
9
|
"files": {
|
10
10
|
"catalina": {
|
11
|
-
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.
|
12
|
-
"sha256": "
|
11
|
+
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.45.6.catalina.bottle.tar.gz",
|
12
|
+
"sha256": "7f23ff740679b30e313c91533c2f3e6fa4210bb68f8e383c29e7f922f87d8f66"
|
13
13
|
},
|
14
14
|
"mojave": {
|
15
|
-
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.
|
16
|
-
"sha256": "
|
15
|
+
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.45.6.mojave.bottle.tar.gz",
|
16
|
+
"sha256": "b5349b775ff60c73c284d5de8ad2c0fdfb35428cff92bb7a8e5fcc6536750b89"
|
17
17
|
},
|
18
18
|
"high_sierra": {
|
19
|
-
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.
|
20
|
-
"sha256": "
|
19
|
+
"url": "https://homebrew.bintray.com/bottles/swiftformat-0.45.6.high_sierra.bottle.tar.gz",
|
20
|
+
"sha256": "34d900217ca12736a112c31e54a5f4f7e64c1fe224f6e4ea76ad1d25b149f647"
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
@@ -27,12 +27,20 @@
|
|
27
27
|
"system": {
|
28
28
|
"macos": {
|
29
29
|
"catalina": {
|
30
|
-
"HOMEBREW_VERSION": "2.
|
30
|
+
"HOMEBREW_VERSION": "2.4.9-133-g0fdf8f2",
|
31
31
|
"HOMEBREW_PREFIX": "/usr/local",
|
32
|
-
"Homebrew/homebrew-core": "
|
32
|
+
"Homebrew/homebrew-core": "7141f37f3af0e6702f6dab2263852ddefbbbf8ed",
|
33
33
|
"CLT": "11.0.28.3",
|
34
|
-
"Xcode": "11.
|
34
|
+
"Xcode": "11.6",
|
35
35
|
"macOS": "10.15.4"
|
36
|
+
},
|
37
|
+
"big_sur": {
|
38
|
+
"HOMEBREW_VERSION": "2.4.13-249-g6454504",
|
39
|
+
"HOMEBREW_PREFIX": "/usr/local",
|
40
|
+
"Homebrew/homebrew-core": "020491c34515c229d904e6e69e14157cb728d2fa",
|
41
|
+
"CLT": "11.0.28.3",
|
42
|
+
"Xcode": "12.0",
|
43
|
+
"macOS": "11.0"
|
36
44
|
}
|
37
45
|
}
|
38
46
|
}
|
data/fastlane/swift/main.swift
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
//
|
2
|
-
//
|
3
|
-
// FastlaneSwiftRunner
|
4
|
-
//
|
5
|
-
// Created by Joshua Liebowitz on 8/26/17.
|
6
|
-
//
|
1
|
+
// main.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
7
3
|
|
8
4
|
//
|
9
5
|
// ** NOTE **
|
@@ -24,7 +20,7 @@ class MainProcess {
|
|
24
20
|
@objc func connectToFastlaneAndRunLane() {
|
25
21
|
runner.startSocketThread(port: argumentProcessor.port)
|
26
22
|
|
27
|
-
let completedRun = Fastfile.runLane(named: argumentProcessor.currentLane, parameters: argumentProcessor.laneParameters())
|
23
|
+
let completedRun = Fastfile.runLane(from: nil, named: argumentProcessor.currentLane, parameters: argumentProcessor.laneParameters())
|
28
24
|
if completedRun {
|
29
25
|
runner.disconnectFromFastlaneProcess()
|
30
26
|
}
|
@@ -39,7 +35,7 @@ class MainProcess {
|
|
39
35
|
}
|
40
36
|
}
|
41
37
|
|
42
|
-
let process
|
38
|
+
let process = MainProcess()
|
43
39
|
process.startFastlaneThread()
|
44
40
|
|
45
41
|
while !process.doneRunningLane, RunLoop.current.run(mode: RunLoopMode.defaultRunLoopMode, before: Date(timeIntervalSinceNow: 2)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"Actions.swift":"Autogenerated API","Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","Plugins.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","
|
1
|
+
{"Actions.swift":"Autogenerated API","Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","Plugins.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","main.swift":"Runner Code","ArgumentProcessor.swift":"Runner Code","RunnerArgument.swift":"Runner Code"}
|
@@ -19,7 +19,7 @@ module FastlaneCore
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def action_launched(launch_context: nil)
|
22
|
-
|
22
|
+
if should_show_message?
|
23
23
|
show_message
|
24
24
|
end
|
25
25
|
|
@@ -52,16 +52,15 @@ module FastlaneCore
|
|
52
52
|
UI.message("You can disable this by adding `opt_out_usage` at the top of your Fastfile")
|
53
53
|
end
|
54
54
|
|
55
|
-
def
|
56
|
-
|
55
|
+
def should_show_message?
|
56
|
+
return false if FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
|
57
57
|
|
58
|
+
file_name = ".did_show_opt_info"
|
58
59
|
new_path = File.join(FastlaneCore.fastlane_user_dir, file_name)
|
59
|
-
|
60
|
-
|
61
|
-
return did_show if did_show
|
60
|
+
return false if File.exist?(new_path)
|
62
61
|
|
63
62
|
File.write(new_path, '1')
|
64
|
-
|
63
|
+
true
|
65
64
|
end
|
66
65
|
|
67
66
|
def finalize_session
|
@@ -4,7 +4,7 @@ require 'security'
|
|
4
4
|
|
5
5
|
module FastlaneCore
|
6
6
|
class KeychainImporter
|
7
|
-
def self.import_file(path, keychain_path, keychain_password: nil, certificate_password: "", output: FastlaneCore::Globals.verbose?)
|
7
|
+
def self.import_file(path, keychain_path, keychain_password: nil, certificate_password: "", skip_set_partition_list: false, output: FastlaneCore::Globals.verbose?)
|
8
8
|
UI.user_error!("Could not find file '#{path}'") unless File.exist?(path)
|
9
9
|
|
10
10
|
command = "security import #{path.shellescape} -k '#{keychain_path.shellescape}'"
|
@@ -19,7 +19,7 @@ module FastlaneCore
|
|
19
19
|
UI.command_output(stdout.read.to_s) if output
|
20
20
|
|
21
21
|
# Set partition list only if success since it can be a time consuming process if a lot of keys are installed
|
22
|
-
if thrd.value.success?
|
22
|
+
if thrd.value.success? && !skip_set_partition_list
|
23
23
|
keychain_password ||= resolve_keychain_password(keychain_path)
|
24
24
|
set_partition_list(path, keychain_path, keychain_password: keychain_password, output: output)
|
25
25
|
else
|
@@ -429,6 +429,7 @@ module Frameit
|
|
429
429
|
# Add the actual title
|
430
430
|
text_image.combine_options do |i|
|
431
431
|
i.font(current_font) if current_font
|
432
|
+
i.weight(@config[key.to_s]['font_weight']) if @config[key.to_s]['font_weight']
|
432
433
|
i.gravity("Center")
|
433
434
|
i.pointsize(actual_font_size(key))
|
434
435
|
i.draw("text 0,0 '#{text}'")
|
@@ -26,11 +26,14 @@ module Match
|
|
26
26
|
generate_apple_certs: params[:generate_apple_certs],
|
27
27
|
output_path: output_path,
|
28
28
|
force: true, # we don't need a certificate without its private key, we only care about a new certificate
|
29
|
+
api_key_path: params[:api_key_path],
|
30
|
+
api_key: params[:api_key],
|
29
31
|
username: params[:username],
|
30
32
|
team_id: params[:team_id],
|
31
33
|
team_name: params[:team_name],
|
32
34
|
keychain_path: FastlaneCore::Helper.keychain_path(params[:keychain_name]),
|
33
|
-
keychain_password: params[:keychain_password]
|
35
|
+
keychain_password: params[:keychain_password],
|
36
|
+
skip_set_partition_list: params[:skip_set_partition_list]
|
34
37
|
})
|
35
38
|
|
36
39
|
Cert.config = arguments
|
@@ -80,6 +83,8 @@ module Match
|
|
80
83
|
cert_id: certificate_id,
|
81
84
|
provisioning_name: profile_name,
|
82
85
|
ignore_profiles_with_different_name: true,
|
86
|
+
api_key_path: params[:api_key_path],
|
87
|
+
api_key: params[:api_key],
|
83
88
|
team_id: params[:team_id],
|
84
89
|
team_name: params[:team_name],
|
85
90
|
template_name: params[:template_name],
|
data/match/lib/match/importer.rb
CHANGED
@@ -2,6 +2,7 @@ require_relative 'spaceship_ensure'
|
|
2
2
|
require_relative 'encryption'
|
3
3
|
require_relative 'storage'
|
4
4
|
require_relative 'module'
|
5
|
+
require_relative 'generator'
|
5
6
|
require 'fastlane_core/provisioning_profile'
|
6
7
|
require 'fileutils'
|
7
8
|
|
@@ -27,10 +28,17 @@ module Match
|
|
27
28
|
google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
|
28
29
|
google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
|
29
30
|
google_cloud_project_id: params[:google_cloud_project_id].to_s,
|
31
|
+
s3_bucket: params[:s3_bucket],
|
32
|
+
s3_region: params[:s3_region],
|
33
|
+
s3_access_key: params[:s3_access_key],
|
34
|
+
s3_secret_access_key: params[:s3_secret_access_key],
|
35
|
+
s3_object_prefix: params[:s3_object_prefix],
|
30
36
|
readonly: params[:readonly],
|
31
37
|
username: params[:username],
|
32
38
|
team_id: params[:team_id],
|
33
|
-
team_name: params[:team_name]
|
39
|
+
team_name: params[:team_name],
|
40
|
+
api_key_path: params[:api_key_path],
|
41
|
+
api_key: params[:api_key]
|
34
42
|
})
|
35
43
|
storage.download
|
36
44
|
|
@@ -47,21 +55,42 @@ module Match
|
|
47
55
|
|
48
56
|
case cert_type
|
49
57
|
when :development
|
50
|
-
certificate_type =
|
58
|
+
certificate_type = [
|
59
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::IOS_DEVELOPMENT,
|
60
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_APP_DEVELOPMENT,
|
61
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPMENT
|
62
|
+
].join(',')
|
51
63
|
when :distribution, :enterprise
|
52
|
-
certificate_type =
|
64
|
+
certificate_type = [
|
65
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::IOS_DISTRIBUTION,
|
66
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_APP_DISTRIBUTION,
|
67
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::DISTRIBUTION
|
68
|
+
].join(',')
|
53
69
|
when :developer_id_application
|
54
|
-
certificate_type =
|
70
|
+
certificate_type = [
|
71
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_APPLICATION
|
72
|
+
].join(',')
|
73
|
+
when :mac_installer_distribution
|
74
|
+
certificate_type = [
|
75
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION
|
76
|
+
].join(',')
|
55
77
|
else
|
56
78
|
UI.user_error!("Cert type '#{cert_type}' is not supported")
|
57
79
|
end
|
58
80
|
|
81
|
+
prov_type = Match.profile_type_sym(params[:type])
|
59
82
|
output_dir_certs = File.join(storage.prefixed_working_directory, "certs", cert_type.to_s)
|
60
|
-
output_dir_profiles = File.join(storage.prefixed_working_directory, "profiles",
|
83
|
+
output_dir_profiles = File.join(storage.prefixed_working_directory, "profiles", prov_type.to_s)
|
61
84
|
|
62
85
|
# Need to get the cert id by comparing base64 encoded cert content with certificate content from the API responses
|
63
|
-
|
64
|
-
|
86
|
+
token = api_token(params)
|
87
|
+
if token
|
88
|
+
UI.message("Creating authorization token for App Store Connect API")
|
89
|
+
Spaceship::ConnectAPI.token = token
|
90
|
+
else
|
91
|
+
UI.message("Login to App Store Connect (#{params[:username]})")
|
92
|
+
Spaceship::ConnectAPI.login(params[:username], use_portal: true, use_tunes: false, portal_team_id: params[:team_id], team_name: params[:team_name])
|
93
|
+
end
|
65
94
|
certs = Spaceship::ConnectAPI::Certificate.all(filter: { certificateType: certificate_type })
|
66
95
|
|
67
96
|
# Base64 encode contents to find match from API to find a cert ID
|
@@ -86,7 +115,8 @@ module Match
|
|
86
115
|
FileUtils.mkdir_p(output_dir_profiles)
|
87
116
|
bundle_id = FastlaneCore::ProvisioningProfile.bundle_id(profile_path)
|
88
117
|
profile_extension = FastlaneCore::ProvisioningProfile.profile_extension(profile_path)
|
89
|
-
|
118
|
+
profile_type_name = Match::Generator.profile_type_name(prov_type)
|
119
|
+
dest_profile_path = File.join(output_dir_profiles, "#{profile_type_name}_#{bundle_id}#{profile_extension}")
|
90
120
|
files_to_commit.push(dest_profile_path)
|
91
121
|
IO.copy_stream(profile_path, dest_profile_path)
|
92
122
|
end
|
@@ -105,5 +135,11 @@ module Match
|
|
105
135
|
UI.user_error!("#{file_description} does not exist at path: #{file_path}") unless !file_path.nil? || optional
|
106
136
|
file_path
|
107
137
|
end
|
138
|
+
|
139
|
+
def api_token(params)
|
140
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
141
|
+
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
142
|
+
return @api_token
|
143
|
+
end
|
108
144
|
end
|
109
145
|
end
|