fastlane 2.161.0 → 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 +76 -76
- 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 +2 -2
- data/deliver/lib/deliver/upload_metadata.rb +1 -0
- data/deliver/lib/deliver/upload_screenshots.rb +25 -8
- 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/Fastlane.swift +51 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +15 -3
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -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_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -2
- data/match/lib/match/generator.rb +6 -1
- data/match/lib/match/importer.rb +39 -6
- data/match/lib/match/migrate.rb +13 -2
- data/match/lib/match/nuke.rb +65 -22
- data/match/lib/match/options.rb +26 -1
- 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/sigh/lib/sigh/options.rb +21 -0
- data/sigh/lib/sigh/runner.rb +80 -38
- 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 +13 -3
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
- 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/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- metadata +19 -18
@@ -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
|
@@ -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
@@ -28,10 +28,17 @@ module Match
|
|
28
28
|
google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
|
29
29
|
google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
|
30
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],
|
31
36
|
readonly: params[:readonly],
|
32
37
|
username: params[:username],
|
33
38
|
team_id: params[:team_id],
|
34
|
-
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]
|
35
42
|
})
|
36
43
|
storage.download
|
37
44
|
|
@@ -48,11 +55,25 @@ module Match
|
|
48
55
|
|
49
56
|
case cert_type
|
50
57
|
when :development
|
51
|
-
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(',')
|
52
63
|
when :distribution, :enterprise
|
53
|
-
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(',')
|
54
69
|
when :developer_id_application
|
55
|
-
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(',')
|
56
77
|
else
|
57
78
|
UI.user_error!("Cert type '#{cert_type}' is not supported")
|
58
79
|
end
|
@@ -62,8 +83,14 @@ module Match
|
|
62
83
|
output_dir_profiles = File.join(storage.prefixed_working_directory, "profiles", prov_type.to_s)
|
63
84
|
|
64
85
|
# Need to get the cert id by comparing base64 encoded cert content with certificate content from the API responses
|
65
|
-
|
66
|
-
|
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
|
67
94
|
certs = Spaceship::ConnectAPI::Certificate.all(filter: { certificateType: certificate_type })
|
68
95
|
|
69
96
|
# Base64 encode contents to find match from API to find a cert ID
|
@@ -108,5 +135,11 @@ module Match
|
|
108
135
|
UI.user_error!("#{file_description} does not exist at path: #{file_path}") unless !file_path.nil? || optional
|
109
136
|
file_path
|
110
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
|
111
144
|
end
|
112
145
|
end
|
data/match/lib/match/migrate.rb
CHANGED
@@ -42,9 +42,14 @@ module Match
|
|
42
42
|
# while on Git we recommend using the git branch instead. As there is
|
43
43
|
# no concept of branches in Google Cloud Storage (omg thanks), we use
|
44
44
|
# the team id properly
|
45
|
-
spaceship = SpaceshipEnsure.new(params[:username], params[:team_id], params[:team_name])
|
45
|
+
spaceship = SpaceshipEnsure.new(params[:username], params[:team_id], params[:team_name], api_token(params))
|
46
46
|
team_id = spaceship.team_id
|
47
|
-
|
47
|
+
|
48
|
+
if team_id.to_s.empty?
|
49
|
+
UI.user_error!("The `team_id` option is required. fastlane cannot automatically determine portal team id via the App Store Connect API (yet)")
|
50
|
+
else
|
51
|
+
UI.message("Detected team ID '#{team_id}' to use for Google Cloud Storage...")
|
52
|
+
end
|
48
53
|
|
49
54
|
files_to_commit = []
|
50
55
|
Dir.chdir(git_storage.working_directory) do
|
@@ -85,6 +90,12 @@ module Match
|
|
85
90
|
UI.input("Please make sure to read the above and confirm with enter")
|
86
91
|
end
|
87
92
|
|
93
|
+
def api_token(params)
|
94
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
95
|
+
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
96
|
+
return @api_token
|
97
|
+
end
|
98
|
+
|
88
99
|
def ensure_parameters_are_valid(params)
|
89
100
|
if params[:readonly]
|
90
101
|
UI.user_error!("`fastlane match migrate` doesn't work in `readonly` mode")
|
data/match/lib/match/nuke.rb
CHANGED
@@ -44,7 +44,7 @@ module Match
|
|
44
44
|
s3_access_key: params[:s3_access_key].to_s,
|
45
45
|
s3_secret_access_key: params[:s3_secret_access_key].to_s,
|
46
46
|
s3_bucket: params[:s3_bucket].to_s,
|
47
|
-
team_id: params[:team_id] || Spaceship.client.
|
47
|
+
team_id: params[:team_id] || Spaceship::ConnectAPI.client.portal_team_id
|
48
48
|
})
|
49
49
|
self.storage.download
|
50
50
|
|
@@ -97,10 +97,14 @@ module Match
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def spaceship_login
|
100
|
-
|
101
|
-
|
100
|
+
if api_token
|
101
|
+
UI.message("Creating authorization token for App Store Connect API")
|
102
|
+
Spaceship::ConnectAPI.token = api_token
|
103
|
+
else
|
104
|
+
Spaceship::ConnectAPI.login(params[:username], use_portal: true, use_tunes: false, portal_team_id: params[:team_id], team_name: params[:team_name])
|
105
|
+
end
|
102
106
|
|
103
|
-
if Spaceship.client.in_house? && (type == "distribution" || type == "enterprise")
|
107
|
+
if Spaceship::ConnectAPI.client.in_house? && (type == "distribution" || type == "enterprise")
|
104
108
|
UI.error("---")
|
105
109
|
UI.error("⚠️ Warning: This seems to be an Enterprise account!")
|
106
110
|
UI.error("By nuking your account's distribution, all your apps deployed via ad-hoc will stop working!") if type == "distribution"
|
@@ -111,6 +115,12 @@ module Match
|
|
111
115
|
end
|
112
116
|
end
|
113
117
|
|
118
|
+
def api_token
|
119
|
+
@api_token ||= Spaceship::ConnectAPI::Token.create(params[:api_key]) if params[:api_key]
|
120
|
+
@api_token ||= Spaceship::ConnectAPI::Token.from_json_file(params[:api_key_path]) if params[:api_key_path]
|
121
|
+
return @api_token
|
122
|
+
end
|
123
|
+
|
114
124
|
# Collect all the certs/profiles
|
115
125
|
def prepare_list
|
116
126
|
UI.message("Fetching certificates and profiles...")
|
@@ -125,8 +135,10 @@ module Match
|
|
125
135
|
# Get all iOS and macOS profile
|
126
136
|
self.profiles = []
|
127
137
|
prov_types.each do |prov_type|
|
128
|
-
|
129
|
-
|
138
|
+
types = profile_types(prov_type)
|
139
|
+
# Filtering on 'profileType' seems to be undocumented as of 2020-07-30
|
140
|
+
# but works on both web session and official API
|
141
|
+
self.profiles += Spaceship::ConnectAPI::Profile.all(filter: { profileType: types.join(",") })
|
130
142
|
end
|
131
143
|
|
132
144
|
# Gets the main and additional cert types
|
@@ -138,7 +150,7 @@ module Match
|
|
138
150
|
self.certs = []
|
139
151
|
self.certs += cert_types.map do |ct|
|
140
152
|
certificate_type(ct).flat_map do |cert|
|
141
|
-
|
153
|
+
Spaceship::ConnectAPI::Certificate.all(filter: { certificateType: cert })
|
142
154
|
end
|
143
155
|
end.flatten
|
144
156
|
|
@@ -165,7 +177,7 @@ module Match
|
|
165
177
|
puts("")
|
166
178
|
if self.certs.count > 0
|
167
179
|
rows = self.certs.collect do |cert|
|
168
|
-
cert_expiration = cert.
|
180
|
+
cert_expiration = cert.expiration_date.nil? ? "Unknown" : Time.parse(cert.expiration_date).strftime("%Y-%m-%d")
|
169
181
|
[cert.name, cert.id, cert.class.to_s.split("::").last, cert_expiration]
|
170
182
|
end
|
171
183
|
puts(Terminal::Table.new({
|
@@ -178,11 +190,11 @@ module Match
|
|
178
190
|
|
179
191
|
if self.profiles.count > 0
|
180
192
|
rows = self.profiles.collect do |p|
|
181
|
-
status = p.
|
193
|
+
status = p.valid? ? p.profile_state.green : p.profile_state.red
|
182
194
|
|
183
195
|
# Expires is sometimes nil
|
184
|
-
expires = p.
|
185
|
-
[p.name, p.id, status, p.
|
196
|
+
expires = p.expiration_date ? Time.parse(p.expiration_date).strftime("%Y-%m-%d") : nil
|
197
|
+
[p.name, p.id, status, p.profile_type, expires]
|
186
198
|
end
|
187
199
|
puts(Terminal::Table.new({
|
188
200
|
title: "Provisioning Profiles that are going to be revoked".green,
|
@@ -227,7 +239,7 @@ module Match
|
|
227
239
|
self.certs.each do |cert|
|
228
240
|
UI.message("Revoking certificate '#{cert.name}' (#{cert.id})...")
|
229
241
|
begin
|
230
|
-
cert.
|
242
|
+
cert.delete!
|
231
243
|
rescue => ex
|
232
244
|
UI.message(ex.to_s)
|
233
245
|
end
|
@@ -274,31 +286,62 @@ module Match
|
|
274
286
|
def certificate_type(type)
|
275
287
|
case type.to_sym
|
276
288
|
when :mac_installer_distribution
|
277
|
-
return [
|
289
|
+
return [
|
290
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_INSTALLER_DISTRIBUTION
|
291
|
+
]
|
278
292
|
when :distribution
|
279
|
-
return [
|
293
|
+
return [
|
294
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_APP_DISTRIBUTION,
|
295
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::IOS_DISTRIBUTION,
|
296
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::DISTRIBUTION
|
297
|
+
]
|
280
298
|
when :development
|
281
|
-
return [
|
299
|
+
return [
|
300
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::MAC_APP_DEVELOPMENT,
|
301
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::IOS_DEVELOPMENT,
|
302
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPMENT
|
303
|
+
]
|
282
304
|
when :enterprise
|
283
|
-
return [
|
305
|
+
return [
|
306
|
+
Spaceship::ConnectAPI::Certificate::CertificateType::IOS_DISTRIBUTION
|
307
|
+
]
|
284
308
|
else
|
285
309
|
raise "Unknown type '#{type}'"
|
286
310
|
end
|
287
311
|
end
|
288
312
|
|
289
313
|
# The kind of provisioning profile we're interested in
|
290
|
-
def
|
314
|
+
def profile_types(prov_type)
|
291
315
|
case prov_type.to_sym
|
292
316
|
when :appstore
|
293
|
-
return
|
317
|
+
return [
|
318
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_STORE,
|
319
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_STORE,
|
320
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_STORE,
|
321
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_STORE
|
322
|
+
]
|
294
323
|
when :development
|
295
|
-
return
|
324
|
+
return [
|
325
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_DEVELOPMENT,
|
326
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DEVELOPMENT,
|
327
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_DEVELOPMENT,
|
328
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DEVELOPMENT
|
329
|
+
]
|
296
330
|
when :enterprise
|
297
|
-
return
|
331
|
+
return [
|
332
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_INHOUSE,
|
333
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_INHOUSE
|
334
|
+
]
|
298
335
|
when :adhoc
|
299
|
-
return
|
336
|
+
return [
|
337
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC,
|
338
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_ADHOC
|
339
|
+
]
|
300
340
|
when :developer_id
|
301
|
-
return
|
341
|
+
return [
|
342
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DIRECT,
|
343
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DIRECT
|
344
|
+
]
|
302
345
|
else
|
303
346
|
raise "Unknown provisioning type '#{prov_type}'"
|
304
347
|
end
|
data/match/lib/match/options.rb
CHANGED
@@ -62,7 +62,6 @@ module Match
|
|
62
62
|
type: Boolean,
|
63
63
|
default_value: false),
|
64
64
|
|
65
|
-
# app
|
66
65
|
FastlaneCore::ConfigItem.new(key: :app_identifier,
|
67
66
|
short_option: "-a",
|
68
67
|
env_name: "MATCH_APP_IDENTIFIER",
|
@@ -72,10 +71,30 @@ module Match
|
|
72
71
|
code_gen_sensitive: true,
|
73
72
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier),
|
74
73
|
default_value_dynamic: true),
|
74
|
+
|
75
|
+
# App Store Connect API
|
76
|
+
FastlaneCore::ConfigItem.new(key: :api_key_path,
|
77
|
+
env_name: "SIGH_API_KEY_PATH",
|
78
|
+
description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
|
79
|
+
optional: true,
|
80
|
+
conflicting_options: [:api_key],
|
81
|
+
verify_block: proc do |value|
|
82
|
+
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
83
|
+
end),
|
84
|
+
FastlaneCore::ConfigItem.new(key: :api_key,
|
85
|
+
env_name: "SIGH_API_KEY",
|
86
|
+
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
|
87
|
+
type: Hash,
|
88
|
+
optional: true,
|
89
|
+
sensitive: true,
|
90
|
+
conflicting_options: [:api_key_path]),
|
91
|
+
|
92
|
+
# Apple ID
|
75
93
|
FastlaneCore::ConfigItem.new(key: :username,
|
76
94
|
short_option: "-u",
|
77
95
|
env_name: "MATCH_USERNAME",
|
78
96
|
description: "Your Apple ID Username",
|
97
|
+
optional: true,
|
79
98
|
default_value: user,
|
80
99
|
default_value_dynamic: true),
|
81
100
|
FastlaneCore::ConfigItem.new(key: :team_id,
|
@@ -268,6 +287,12 @@ module Match
|
|
268
287
|
env_name: "MATCH_OUTPUT_PATH",
|
269
288
|
description: "Path in which to export certificates, key and profile",
|
270
289
|
optional: true),
|
290
|
+
FastlaneCore::ConfigItem.new(key: :skip_set_partition_list,
|
291
|
+
short_option: "-P",
|
292
|
+
env_name: "MATCH_SKIP_SET_PARTITION_LIST",
|
293
|
+
description: "Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing",
|
294
|
+
type: Boolean,
|
295
|
+
default_value: false),
|
271
296
|
|
272
297
|
# other
|
273
298
|
FastlaneCore::ConfigItem.new(key: :verbose,
|