fastlane 2.164.0 → 2.169.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.swp +0 -0
- data/cert/lib/cert/.runner.rb.swp +0 -0
- data/cert/lib/cert/options.rb +3 -3
- data/cert/lib/cert/runner.rb +2 -2
- data/deliver/lib/deliver/app_screenshot.rb +6 -2
- data/deliver/lib/deliver/loader.rb +136 -18
- data/deliver/lib/deliver/upload_metadata.rb +4 -10
- data/deliver/lib/deliver/upload_screenshots.rb +1 -64
- data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/add_git_tag.rb +9 -2
- data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +4 -0
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +2 -2
- data/fastlane/lib/fastlane/actions/spm.rb +6 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +29 -8
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -3
- data/fastlane/lib/fastlane/actions/xcode_install.rb +8 -5
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
- data/fastlane/lib/fastlane/features.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +56 -26
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +5 -1
- data/fastlane/swift/LaneFileProtocol.swift +2 -2
- data/fastlane/swift/MainProcess.swift +2 -0
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +4 -4
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Runner.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +9 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
- data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
- data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
- data/gym/lib/gym/code_signing_mapping.rb +1 -1
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/options.rb +7 -1
- data/match/lib/match/.options.rb.swp +0 -0
- data/match/lib/match/module.rb +1 -1
- data/match/lib/match/nuke.rb +9 -5
- data/match/lib/match/options.rb +2 -2
- data/pilot/lib/pilot/build_manager.rb +9 -3
- data/scan/lib/scan/detect_values.rb +3 -1
- data/scan/lib/scan/module.rb +4 -0
- data/scan/lib/scan/options.rb +16 -1
- data/scan/lib/scan/runner.rb +2 -2
- data/scan/lib/scan/test_command_generator.rb +1 -0
- data/{match/lib/match/.commands_generator.rb.swp → sigh/lib/sigh/.options.rb.swp} +0 -0
- data/sigh/lib/sigh/runner.rb +2 -2
- data/snapshot/lib/assets/SnapshotHelper.swift +5 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +14 -0
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/app.rb +139 -54
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +16 -10
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +8 -4
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +15 -11
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +13 -9
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +9 -7
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +15 -11
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +7 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +55 -36
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +21 -14
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +12 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/build.rb +24 -16
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/user.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +71 -0
- data/spaceship/lib/spaceship/errors.rb +19 -0
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +18 -6
- data/supply/lib/supply.rb +1 -1
- data/supply/lib/supply/options.rb +1 -1
- data/supply/lib/supply/uploader.rb +3 -2
- metadata +26 -22
- data/match/lib/match/.importer.rb.swp +0 -0
@@ -133,6 +133,9 @@ public protocol GymfileProtocol: class {
|
|
133
133
|
|
134
134
|
/// Sets a custom path for Swift Package Manager dependencies
|
135
135
|
var clonedSourcePackagesPath: String? { get }
|
136
|
+
|
137
|
+
/// Lets xcodebuild use system's scm configuration
|
138
|
+
var useSystemScm: Bool { get }
|
136
139
|
}
|
137
140
|
|
138
141
|
public extension GymfileProtocol {
|
@@ -180,8 +183,9 @@ public extension GymfileProtocol {
|
|
180
183
|
var xcprettyUtf: Bool? { return nil }
|
181
184
|
var skipProfileDetection: Bool { return false }
|
182
185
|
var clonedSourcePackagesPath: String? { return nil }
|
186
|
+
var useSystemScm: Bool { return false }
|
183
187
|
}
|
184
188
|
|
185
189
|
// Please don't remove the lines below
|
186
190
|
// They are used to detect outdated files
|
187
|
-
// FastlaneRunnerAPIVersion [0.9.
|
191
|
+
// FastlaneRunnerAPIVersion [0.9.55]
|
@@ -22,8 +22,8 @@ public protocol LaneFileProtocol: class {
|
|
22
22
|
|
23
23
|
public extension LaneFileProtocol {
|
24
24
|
var fastlaneVersion: String { return "" } // Defaults to "" because that means any is fine
|
25
|
-
func beforeAll(with
|
26
|
-
func afterAll(with
|
25
|
+
func beforeAll(with _: String) {} // No-op by default
|
26
|
+
func afterAll(with _: String) {} // No-op by default
|
27
27
|
func onError(currentLane _: String, errorInfo _: String) {} // No-op by default
|
28
28
|
func recordLaneDescriptions() {} // No-op by default
|
29
29
|
}
|
@@ -56,6 +56,8 @@ class MainProcess {
|
|
56
56
|
print(stdout)
|
57
57
|
self.timeBetweenPrints = Int(self.lastPrintDate.timeIntervalSinceNow)
|
58
58
|
}
|
59
|
+
|
60
|
+
// swiftformat:disable:next redundantSelf
|
59
61
|
_ = Runner.waitWithPolling(self.timeBetweenPrints, toEventually: { $0 > 5 }, timeout: 10)
|
60
62
|
thread.start()
|
61
63
|
#endif
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// Copyright (c) 2020 FastlaneTools
|
3
3
|
|
4
4
|
public protocol MatchfileProtocol: class {
|
5
|
-
/// Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
|
5
|
+
/// Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
|
6
6
|
var type: String { get }
|
7
7
|
|
8
8
|
/// Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
@@ -17,7 +17,7 @@ public protocol MatchfileProtocol: class {
|
|
17
17
|
/// Skip syncing provisioning profiles
|
18
18
|
var skipProvisioningProfiles: Bool { get }
|
19
19
|
|
20
|
-
/// The bundle identifier(s) of your app (comma-separated)
|
20
|
+
/// The bundle identifier(s) of your app (comma-separated string or array of strings)
|
21
21
|
var appIdentifier: [String] { get }
|
22
22
|
|
23
23
|
/// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
@@ -92,7 +92,7 @@ public protocol MatchfileProtocol: class {
|
|
92
92
|
/// Keychain the items should be imported to
|
93
93
|
var keychainName: String { get }
|
94
94
|
|
95
|
-
/// This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
95
|
+
/// This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
96
96
|
var keychainPassword: String? { get }
|
97
97
|
|
98
98
|
/// Renew the provisioning profiles every time you run match
|
@@ -184,4 +184,4 @@ public extension MatchfileProtocol {
|
|
184
184
|
|
185
185
|
// Please don't remove the lines below
|
186
186
|
// They are used to detect outdated files
|
187
|
-
// FastlaneRunnerAPIVersion [0.9.
|
187
|
+
// FastlaneRunnerAPIVersion [0.9.49]
|
data/fastlane/swift/Runner.swift
CHANGED
@@ -37,7 +37,7 @@ class Runner {
|
|
37
37
|
socketClient.send(rubyCommand: command)
|
38
38
|
|
39
39
|
let secondsToWait = DispatchTimeInterval.seconds(SocketClient.defaultCommandTimeoutSeconds)
|
40
|
-
//
|
40
|
+
// swiftformat:disable:next redundantSelf
|
41
41
|
let timeoutResult = Self.waitWithPolling(self.executeNext[command.id], toEventually: { $0 == true }, timeout: SocketClient.defaultCommandTimeoutSeconds)
|
42
42
|
executeNext.removeValue(forKey: command.id)
|
43
43
|
let failureMessage = "command didn't execute in: \(SocketClient.defaultCommandTimeoutSeconds) seconds"
|
@@ -179,6 +179,9 @@ public protocol ScanfileProtocol: class {
|
|
179
179
|
/// Use only if you're a pro, use the other options instead
|
180
180
|
var destination: String? { get }
|
181
181
|
|
182
|
+
/// Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
183
|
+
var catalystPlatform: String? { get }
|
184
|
+
|
182
185
|
/// **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
183
186
|
var customReportFileName: String? { get }
|
184
187
|
|
@@ -188,6 +191,9 @@ public protocol ScanfileProtocol: class {
|
|
188
191
|
/// Sets a custom path for Swift Package Manager dependencies
|
189
192
|
var clonedSourcePackagesPath: String? { get }
|
190
193
|
|
194
|
+
/// Lets xcodebuild use system's scm configuration
|
195
|
+
var useSystemScm: Bool { get }
|
196
|
+
|
191
197
|
/// Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
192
198
|
var failBuild: Bool { get }
|
193
199
|
}
|
@@ -252,12 +258,14 @@ public extension ScanfileProtocol {
|
|
252
258
|
var skipSlack: Bool { return false }
|
253
259
|
var slackOnlyOnFailure: Bool { return false }
|
254
260
|
var destination: String? { return nil }
|
261
|
+
var catalystPlatform: String? { return nil }
|
255
262
|
var customReportFileName: String? { return nil }
|
256
263
|
var xcodebuildCommand: String { return "env NSUnbufferedIO=YES xcodebuild" }
|
257
264
|
var clonedSourcePackagesPath: String? { return nil }
|
265
|
+
var useSystemScm: Bool { return false }
|
258
266
|
var failBuild: Bool { return true }
|
259
267
|
}
|
260
268
|
|
261
269
|
// Please don't remove the lines below
|
262
270
|
// They are used to detect outdated files
|
263
|
-
// FastlaneRunnerAPIVersion [0.9.
|
271
|
+
// FastlaneRunnerAPIVersion [0.9.60]
|
@@ -29,7 +29,7 @@ class SocketClient: NSObject {
|
|
29
29
|
}
|
30
30
|
|
31
31
|
static let connectTimeoutSeconds = 2
|
32
|
-
static let defaultCommandTimeoutSeconds =
|
32
|
+
static let defaultCommandTimeoutSeconds = 10800 // 3 hours
|
33
33
|
static let doneToken = "done" // TODO: remove these
|
34
34
|
static let cancelToken = "cancelFastlaneRun"
|
35
35
|
|
@@ -22,7 +22,7 @@ module FastlaneCore
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.installed_identies(in_keychain: nil)
|
25
|
-
|
25
|
+
install_wwdr_certificates unless wwdr_certificates_installed?
|
26
26
|
|
27
27
|
available = list_available_identities(in_keychain: in_keychain)
|
28
28
|
# Match for this text against word boundaries to avoid edge cases around multiples of 10 identities!
|
@@ -81,16 +81,21 @@ module FastlaneCore
|
|
81
81
|
`#{commands.join(' ')}`
|
82
82
|
end
|
83
83
|
|
84
|
-
def self.
|
84
|
+
def self.wwdr_certificates_installed?
|
85
85
|
certificate_name = "Apple Worldwide Developer Relations Certification Authority"
|
86
86
|
keychain = wwdr_keychain
|
87
|
-
response = Helper.backticks("security find-certificate -c '#{certificate_name}' #{keychain.shellescape}", print: FastlaneCore::Globals.verbose?)
|
88
|
-
|
87
|
+
response = Helper.backticks("security find-certificate -a -c '#{certificate_name}' #{keychain.shellescape}", print: FastlaneCore::Globals.verbose?)
|
88
|
+
certs = response.split("keychain: \"#{keychain}\"").drop(1)
|
89
|
+
certs.count == 2
|
89
90
|
end
|
90
91
|
|
91
|
-
def self.
|
92
|
-
|
93
|
-
|
92
|
+
def self.install_wwdr_certificates
|
93
|
+
install_wwdr_certificate('https://developer.apple.com/certificationauthority/AppleWWDRCA.cer')
|
94
|
+
install_wwdr_certificate('https://www.apple.com/certificateauthority/AppleWWDRCAG3.cer')
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.install_wwdr_certificate(url)
|
98
|
+
file = Tempfile.new(File.basename(url))
|
94
99
|
filename = file.path
|
95
100
|
keychain = wwdr_keychain
|
96
101
|
keychain = "-k #{keychain.shellescape}" unless keychain.empty?
|
@@ -107,7 +107,7 @@ module FastlaneCore
|
|
107
107
|
|
108
108
|
# Do we want to disable the colored output?
|
109
109
|
def self.colors_disabled?
|
110
|
-
FastlaneCore::Env.truthy?("FASTLANE_DISABLE_COLORS")
|
110
|
+
FastlaneCore::Env.truthy?("FASTLANE_DISABLE_COLORS") || ENV.key?("NO_COLOR")
|
111
111
|
end
|
112
112
|
|
113
113
|
# Does the user use the Mac stock terminal
|
@@ -203,9 +203,17 @@ module FastlaneCore
|
|
203
203
|
return File.join(self.itms_path, 'iTMSTransporter')
|
204
204
|
end
|
205
205
|
|
206
|
+
def self.user_defined_itms_path?
|
207
|
+
return FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
|
208
|
+
end
|
209
|
+
|
210
|
+
def self.user_defined_itms_path
|
211
|
+
return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if self.user_defined_itms_path?
|
212
|
+
end
|
213
|
+
|
206
214
|
# @return the full path to the iTMSTransporter executable
|
207
215
|
def self.itms_path
|
208
|
-
return
|
216
|
+
return self.user_defined_itms_path if FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
|
209
217
|
|
210
218
|
if self.mac?
|
211
219
|
# First check for manually install iTMSTransporter
|
@@ -254,7 +254,7 @@ module FastlaneCore
|
|
254
254
|
class JavaTransporterExecutor < TransporterExecutor
|
255
255
|
def build_upload_command(username, password, source = "/tmp", provider_short_name = "", jwt = nil)
|
256
256
|
use_jwt = !jwt.to_s.empty?
|
257
|
-
if Helper.mac? && Helper.xcode_at_least?(11)
|
257
|
+
if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
|
258
258
|
[
|
259
259
|
("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
|
260
260
|
'xcrun iTMSTransporter',
|
@@ -294,7 +294,7 @@ module FastlaneCore
|
|
294
294
|
|
295
295
|
def build_download_command(username, password, apple_id, destination = "/tmp", provider_short_name = "", jwt = nil)
|
296
296
|
use_jwt = !jwt.to_s.empty?
|
297
|
-
if Helper.mac? && Helper.xcode_at_least?(11)
|
297
|
+
if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
|
298
298
|
[
|
299
299
|
("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
|
300
300
|
'xcrun iTMSTransporter',
|
@@ -332,7 +332,7 @@ module FastlaneCore
|
|
332
332
|
|
333
333
|
def build_provider_ids_command(username, password, jwt = nil)
|
334
334
|
use_jwt = !jwt.to_s.empty?
|
335
|
-
if Helper.mac? && Helper.xcode_at_least?(11)
|
335
|
+
if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
|
336
336
|
[
|
337
337
|
("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
|
338
338
|
'xcrun iTMSTransporter',
|
@@ -47,7 +47,9 @@ module FastlaneCore
|
|
47
47
|
def bundle_id(path, keychain_path = nil)
|
48
48
|
profile = parse(path, keychain_path)
|
49
49
|
app_id_prefix = profile["ApplicationIdentifierPrefix"].first
|
50
|
-
|
50
|
+
entitlements = profile["Entitlements"]
|
51
|
+
app_identifier = entitlements["application-identifier"] || entitlements["com.apple.application-identifier"]
|
52
|
+
bundle_id = app_identifier.gsub("#{app_id_prefix}.", "")
|
51
53
|
bundle_id
|
52
54
|
rescue
|
53
55
|
UI.error("Unable to extract the Bundle Id from the provided provisioning profile '#{path}'.")
|
@@ -142,7 +142,7 @@ module Gym
|
|
142
142
|
next unless specified_configuration == build_configuration.name
|
143
143
|
|
144
144
|
# Catalyst apps will have some build settings that will have a configuration
|
145
|
-
# that is
|
145
|
+
# that is specific for macos so going to do our best to capture those
|
146
146
|
#
|
147
147
|
# There are other platform filters besides "[sdk=macosx*]" that we could use but
|
148
148
|
# this is the default that Xcode will use so this will also be our default
|
@@ -39,6 +39,7 @@ module Gym
|
|
39
39
|
options << "-destination '#{config[:destination]}'" if config[:destination]
|
40
40
|
options << "-archivePath #{archive_path.shellescape}" unless config[:skip_archive]
|
41
41
|
options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
|
42
|
+
options << "-scmProvider system" if config[:use_system_scm]
|
42
43
|
options << config[:xcargs] if config[:xcargs]
|
43
44
|
options << "OTHER_SWIFT_FLAGS=\"-Xfrontend -debug-time-function-bodies\"" if config[:analyze_build_time]
|
44
45
|
|
data/gym/lib/gym/options.rb
CHANGED
@@ -279,7 +279,13 @@ module Gym
|
|
279
279
|
env_name: "GYM_CLONED_SOURCE_PACKAGES_PATH",
|
280
280
|
description: "Sets a custom path for Swift Package Manager dependencies",
|
281
281
|
type: String,
|
282
|
-
optional: true)
|
282
|
+
optional: true),
|
283
|
+
FastlaneCore::ConfigItem.new(key: :use_system_scm,
|
284
|
+
env_name: "GYM_USE_SYSTEM_SCM",
|
285
|
+
description: "Lets xcodebuild use system's scm configuration",
|
286
|
+
optional: true,
|
287
|
+
type: Boolean,
|
288
|
+
default_value: false)
|
283
289
|
]
|
284
290
|
end
|
285
291
|
end
|
Binary file
|
data/match/lib/match/module.rb
CHANGED
@@ -9,7 +9,7 @@ module Match
|
|
9
9
|
DESCRIPTION = "Easily sync your certificates and profiles across your team"
|
10
10
|
|
11
11
|
def self.environments
|
12
|
-
return %w(appstore adhoc development enterprise developer_id)
|
12
|
+
return %w(appstore adhoc development enterprise developer_id mac_installer_distribution)
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.storage_modes
|
data/match/lib/match/nuke.rb
CHANGED
@@ -252,11 +252,15 @@ module Match
|
|
252
252
|
|
253
253
|
self.encryption.encrypt_files if self.encryption
|
254
254
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
255
|
+
if files_to_delete.count > 0
|
256
|
+
# Now we need to save all this to the storage too, if needed
|
257
|
+
message = ["[fastlane]", "Nuked", "files", "for", type.to_s].join(" ")
|
258
|
+
self.storage.save_changes!(files_to_commit: [],
|
259
|
+
files_to_delete: files_to_delete,
|
260
|
+
custom_message: message)
|
261
|
+
else
|
262
|
+
UI.message("Your storage had no files to be deleted. This happens when you run `nuke` with an empty storage. Nothing to be worried about!")
|
263
|
+
end
|
260
264
|
end
|
261
265
|
|
262
266
|
private
|
data/match/lib/match/options.rb
CHANGED
@@ -65,7 +65,7 @@ module Match
|
|
65
65
|
FastlaneCore::ConfigItem.new(key: :app_identifier,
|
66
66
|
short_option: "-a",
|
67
67
|
env_name: "MATCH_APP_IDENTIFIER",
|
68
|
-
description: "The bundle identifier(s) of your app (comma-separated)",
|
68
|
+
description: "The bundle identifier(s) of your app (comma-separated string or array of strings)",
|
69
69
|
type: Array, # we actually allow String and Array here
|
70
70
|
skip_type_validation: true,
|
71
71
|
code_gen_sensitive: true,
|
@@ -227,7 +227,7 @@ module Match
|
|
227
227
|
short_option: "-p",
|
228
228
|
env_name: "MATCH_KEYCHAIN_PASSWORD",
|
229
229
|
sensitive: true,
|
230
|
-
description: "This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password",
|
230
|
+
description: "This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password",
|
231
231
|
optional: true),
|
232
232
|
|
233
233
|
# settings
|
@@ -192,7 +192,7 @@ module Pilot
|
|
192
192
|
[
|
193
193
|
build.app_version,
|
194
194
|
build.version,
|
195
|
-
(build.beta_build_metrics || []).map(&:install_count).reduce(:+)
|
195
|
+
(build.beta_build_metrics || []).map(&:install_count).compact.reduce(:+)
|
196
196
|
]
|
197
197
|
end
|
198
198
|
|
@@ -273,9 +273,15 @@ module Pilot
|
|
273
273
|
changelog
|
274
274
|
end
|
275
275
|
|
276
|
+
def self.emoji_regex
|
277
|
+
# EmojiRegex::RGIEmoji is now preferred over EmojiRegex::Regex which is deprecated as of 3.2.0
|
278
|
+
# https://github.com/ticky/ruby-emoji-regex/releases/tag/v3.2.0
|
279
|
+
return defined?(EmojiRegex::RGIEmoji) ? EmojiRegex::RGIEmoji : EmojiRegex::Regex
|
280
|
+
end
|
281
|
+
|
276
282
|
def self.strip_emoji(changelog)
|
277
|
-
if changelog && changelog =~
|
278
|
-
changelog.gsub!(
|
283
|
+
if changelog && changelog =~ emoji_regex
|
284
|
+
changelog.gsub!(emoji_regex, "")
|
279
285
|
UI.important("Emoji symbols have been removed from the changelog, since they're not allowed by Apple.")
|
280
286
|
end
|
281
287
|
changelog
|
@@ -209,7 +209,9 @@ module Scan
|
|
209
209
|
end
|
210
210
|
|
211
211
|
# building up the destination now
|
212
|
-
if Scan.
|
212
|
+
if Scan.building_mac_catalyst_for_mac?
|
213
|
+
Scan.config[:destination] = ["platform=macOS,variant=Mac Catalyst"]
|
214
|
+
elsif Scan.devices && Scan.devices.count > 0
|
213
215
|
Scan.config[:destination] = Scan.devices.map { |d| "platform=#{d.os_type} Simulator,id=#{d.udid}" }
|
214
216
|
elsif Scan.project.mac_app?
|
215
217
|
Scan.config[:destination] = min_xcode8? ? ["platform=macOS"] : ["platform=OS X"]
|
data/scan/lib/scan/module.rb
CHANGED
@@ -21,6 +21,10 @@ module Scan
|
|
21
21
|
def scanfile_name
|
22
22
|
"Scanfile"
|
23
23
|
end
|
24
|
+
|
25
|
+
def building_mac_catalyst_for_mac?
|
26
|
+
Scan.project.supports_mac_catalyst? && Scan.config[:catalyst_platform] == "macos"
|
27
|
+
end
|
24
28
|
end
|
25
29
|
|
26
30
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|