fastlane 2.151.2 → 2.155.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 +82 -82
- data/deliver/lib/deliver/app_screenshot.rb +1 -1
- data/deliver/lib/deliver/commands_generator.rb +7 -4
- data/deliver/lib/deliver/detect_values.rb +9 -3
- data/deliver/lib/deliver/download_screenshots.rb +1 -3
- data/deliver/lib/deliver/html_generator.rb +8 -1
- data/deliver/lib/deliver/options.rb +1 -1
- data/deliver/lib/deliver/runner.rb +5 -10
- data/deliver/lib/deliver/setup.rb +92 -3
- data/deliver/lib/deliver/submit_for_review.rb +4 -6
- data/deliver/lib/deliver/upload_metadata.rb +51 -30
- data/deliver/lib/deliver/upload_price_tier.rb +1 -3
- data/deliver/lib/deliver/upload_screenshots.rb +75 -44
- data/fastlane/lib/fastlane/{helper/.s3_client_helper.rb.swp → .erb_template_helper.rb.swp} +0 -0
- data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
- data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
- data/fastlane/lib/fastlane/actions/erb.rb +10 -2
- data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
- data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +5 -0
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
- data/fastlane/lib/fastlane/runner.rb +3 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +3 -3
- data/fastlane/swift/Fastlane.swift +419 -192
- 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 +10 -2
- 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 +9 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
- data/frameit/lib/frameit/editor.rb +11 -6
- data/gym/lib/gym/detect_values.rb +6 -3
- data/gym/lib/gym/module.rb +30 -0
- data/gym/lib/gym/runner.rb +23 -18
- data/match/lib/match/generator.rb +6 -0
- data/match/lib/match/options.rb +16 -4
- data/match/lib/match/runner.rb +13 -5
- data/match/lib/match/spaceship_ensure.rb +7 -9
- data/match/lib/match/storage/git_storage.rb +16 -2
- data/match/lib/match/storage/google_cloud_storage.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +9 -0
- data/pilot/lib/pilot/options.rb +7 -1
- data/scan/lib/scan/runner.rb +19 -6
- data/sigh/lib/sigh/download_all.rb +42 -27
- data/sigh/lib/sigh/module.rb +26 -0
- data/sigh/lib/sigh/options.rb +2 -2
- data/sigh/lib/sigh/runner.rb +74 -33
- data/snapshot/lib/snapshot/options.rb +10 -0
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +3 -2
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +4 -1
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +5 -3
- data/spaceship/lib/spaceship/connect_api/model.rb +15 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +61 -3
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +17 -5
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +41 -7
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +31 -1
- data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +46 -4
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
- data/supply/lib/supply/client.rb +2 -1
- data/supply/lib/supply/options.rb +8 -1
- metadata +34 -61
- data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
- data/frameit/lib/frameit/.editor.rb.swp +0 -0
@@ -53,6 +53,9 @@ protocol MatchfileProtocol: class {
|
|
53
53
|
/// Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
54
54
|
var gitBearerAuthorization: String? { get }
|
55
55
|
|
56
|
+
/// Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
57
|
+
var gitPrivateKey: String? { get }
|
58
|
+
|
56
59
|
/// Name of the Google Cloud Storage bucket to use
|
57
60
|
var googleCloudBucketName: String? { get }
|
58
61
|
|
@@ -95,9 +98,12 @@ protocol MatchfileProtocol: class {
|
|
95
98
|
/// Skip generation of a README.md for the created git repository
|
96
99
|
var skipDocs: Bool { get }
|
97
100
|
|
98
|
-
/// Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
|
101
|
+
/// Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
|
99
102
|
var platform: String { get }
|
100
103
|
|
104
|
+
/// Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
|
105
|
+
var deriveCatalystAppIdentifier: Bool { get }
|
106
|
+
|
101
107
|
/// The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
102
108
|
var templateName: String? { get }
|
103
109
|
|
@@ -133,6 +139,7 @@ extension MatchfileProtocol {
|
|
133
139
|
var cloneBranchDirectly: Bool { return false }
|
134
140
|
var gitBasicAuthorization: String? { return nil }
|
135
141
|
var gitBearerAuthorization: String? { return nil }
|
142
|
+
var gitPrivateKey: String? { return nil }
|
136
143
|
var googleCloudBucketName: String? { return nil }
|
137
144
|
var googleCloudKeysFile: String? { return nil }
|
138
145
|
var googleCloudProjectId: String? { return nil }
|
@@ -148,6 +155,7 @@ extension MatchfileProtocol {
|
|
148
155
|
var skipConfirmation: Bool { return false }
|
149
156
|
var skipDocs: Bool { return false }
|
150
157
|
var platform: String { return "ios" }
|
158
|
+
var deriveCatalystAppIdentifier: Bool { return false }
|
151
159
|
var templateName: String? { return nil }
|
152
160
|
var profileName: String? { return nil }
|
153
161
|
var failOnNameTaken: Bool { return false }
|
@@ -157,4 +165,4 @@ extension MatchfileProtocol {
|
|
157
165
|
|
158
166
|
// Please don't remove the lines below
|
159
167
|
// They are used to detect outdated files
|
160
|
-
// FastlaneRunnerAPIVersion [0.9.
|
168
|
+
// FastlaneRunnerAPIVersion [0.9.26]
|
@@ -44,6 +44,9 @@ protocol SnapshotfileProtocol: class {
|
|
44
44
|
/// Enabling this option will automatically erase the simulator before running the application
|
45
45
|
var eraseSimulator: Bool { get }
|
46
46
|
|
47
|
+
/// Enabling this option will prevent displaying the simulator window
|
48
|
+
var headless: Bool { get }
|
49
|
+
|
47
50
|
/// Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
|
48
51
|
var overrideStatusBar: Bool { get }
|
49
52
|
|
@@ -124,6 +127,9 @@ protocol SnapshotfileProtocol: class {
|
|
124
127
|
|
125
128
|
/// Disable xcpretty formatting of build
|
126
129
|
var disableXcpretty: Bool? { get }
|
130
|
+
|
131
|
+
/// Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
|
132
|
+
var suppressXcodeOutput: Bool? { get }
|
127
133
|
}
|
128
134
|
|
129
135
|
extension SnapshotfileProtocol {
|
@@ -142,6 +148,7 @@ extension SnapshotfileProtocol {
|
|
142
148
|
var clearPreviousScreenshots: Bool { return false }
|
143
149
|
var reinstallApp: Bool { return false }
|
144
150
|
var eraseSimulator: Bool { return false }
|
151
|
+
var headless: Bool { return true }
|
145
152
|
var overrideStatusBar: Bool { return false }
|
146
153
|
var localizeSimulator: Bool { return false }
|
147
154
|
var darkMode: Bool? { return nil }
|
@@ -169,8 +176,9 @@ extension SnapshotfileProtocol {
|
|
169
176
|
var onlyTesting: String? { return nil }
|
170
177
|
var skipTesting: String? { return nil }
|
171
178
|
var disableXcpretty: Bool? { return nil }
|
179
|
+
var suppressXcodeOutput: Bool? { return nil }
|
172
180
|
}
|
173
181
|
|
174
182
|
// Please don't remove the lines below
|
175
183
|
// They are used to detect outdated files
|
176
|
-
// FastlaneRunnerAPIVersion [0.9.
|
184
|
+
// FastlaneRunnerAPIVersion [0.9.21]
|
@@ -199,18 +199,37 @@ module FastlaneCore
|
|
199
199
|
self.name
|
200
200
|
end
|
201
201
|
|
202
|
+
def boot
|
203
|
+
return unless is_simulator
|
204
|
+
return unless os_type == "iOS"
|
205
|
+
return if self.state == 'Booted'
|
206
|
+
|
207
|
+
UI.message("Booting #{self}")
|
208
|
+
|
209
|
+
`xcrun simctl boot #{self.udid} 2>/dev/null`
|
210
|
+
self.state = 'Booted'
|
211
|
+
end
|
212
|
+
|
213
|
+
def shutdown
|
214
|
+
return unless is_simulator
|
215
|
+
return unless os_type == "iOS"
|
216
|
+
return if self.state != 'Booted'
|
217
|
+
|
218
|
+
UI.message("Shutting down #{self.udid}")
|
219
|
+
`xcrun simctl shutdown #{self.udid} 2>/dev/null`
|
220
|
+
self.state = 'Shutdown'
|
221
|
+
end
|
222
|
+
|
202
223
|
def reset
|
203
224
|
UI.message("Resetting #{self}")
|
204
|
-
|
225
|
+
shutdown
|
205
226
|
`xcrun simctl erase #{self.udid}`
|
206
|
-
return
|
207
227
|
end
|
208
228
|
|
209
229
|
def delete
|
210
230
|
UI.message("Deleting #{self}")
|
211
|
-
|
231
|
+
shutdown
|
212
232
|
`xcrun simctl delete #{self.udid}`
|
213
|
-
return
|
214
233
|
end
|
215
234
|
|
216
235
|
def disable_slide_to_type
|
@@ -324,10 +343,10 @@ module FastlaneCore
|
|
324
343
|
def copy_logarchive(device, log_identity, logs_destination_dir)
|
325
344
|
require 'shellwords'
|
326
345
|
|
327
|
-
logarchive_dst = File.join(logs_destination_dir, "system_logs-#{log_identity}.logarchive")
|
346
|
+
logarchive_dst = File.join(logs_destination_dir, "system_logs-#{log_identity}.logarchive")
|
328
347
|
FileUtils.rm_rf(logarchive_dst)
|
329
348
|
FileUtils.mkdir_p(File.expand_path("..", logarchive_dst))
|
330
|
-
command = "xcrun simctl spawn
|
349
|
+
command = "xcrun simctl spawn #{device.udid} log collect --output #{logarchive_dst.shellescape} 2>/dev/null"
|
331
350
|
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: true)
|
332
351
|
end
|
333
352
|
end
|
@@ -298,7 +298,7 @@ module Frameit
|
|
298
298
|
resize_text(keyword)
|
299
299
|
|
300
300
|
vertical_padding = vertical_frame_padding # assign padding to variable
|
301
|
-
spacing_between_title_and_keyword = (actual_font_size / 2)
|
301
|
+
spacing_between_title_and_keyword = (actual_font_size('keyword') / 2)
|
302
302
|
title_left_space = (background.width / 2.0 - title.width / 2.0).round
|
303
303
|
keyword_left_space = (background.width / 2.0 - keyword.width / 2.0).round
|
304
304
|
|
@@ -359,7 +359,7 @@ module Frameit
|
|
359
359
|
vertical_padding = vertical_frame_padding # assign padding to variable
|
360
360
|
left_space = (background.width / 2.0 - sum_width / 2.0).round
|
361
361
|
|
362
|
-
self.space_to_device += actual_font_size + vertical_padding
|
362
|
+
self.space_to_device += actual_font_size('title') + vertical_padding
|
363
363
|
|
364
364
|
if title_below_image
|
365
365
|
title_top = background.height - effective_text_height / 2 - title.height / 2
|
@@ -385,7 +385,10 @@ module Frameit
|
|
385
385
|
background
|
386
386
|
end
|
387
387
|
|
388
|
-
def actual_font_size
|
388
|
+
def actual_font_size(key)
|
389
|
+
font_size = @config[key.to_s]['font_size']
|
390
|
+
return font_size if !font_size.nil? && font_size > 0
|
391
|
+
|
389
392
|
font_scale_factor = @config['font_scale_factor'] || 0.1
|
390
393
|
UI.user_error!("Parameter 'font_scale_factor' can not be 0. Please provide a value larger than 0.0 (default = 0.1).") if font_scale_factor == 0.0
|
391
394
|
[@image.width * font_scale_factor].max.round
|
@@ -393,7 +396,7 @@ module Frameit
|
|
393
396
|
|
394
397
|
# The space between the keyword and the title
|
395
398
|
def keyword_padding
|
396
|
-
(actual_font_size / 3.0).round
|
399
|
+
(actual_font_size('keyword') / 3.0).round
|
397
400
|
end
|
398
401
|
|
399
402
|
# This will build up to 2 individual images with the title and optional keyword, which will then be added to the real image
|
@@ -427,7 +430,7 @@ module Frameit
|
|
427
430
|
text_image.combine_options do |i|
|
428
431
|
i.font(current_font) if current_font
|
429
432
|
i.gravity("Center")
|
430
|
-
i.pointsize(actual_font_size)
|
433
|
+
i.pointsize(actual_font_size(key))
|
431
434
|
i.draw("text 0,0 '#{text}'")
|
432
435
|
i.interline_spacing(interline_spacing) if interline_spacing
|
433
436
|
i.fill(@config[key.to_s]['color'])
|
@@ -497,7 +500,9 @@ module Frameit
|
|
497
500
|
UI.user_error!("Valid parameters :keyword, :title") unless [:keyword, :title].include?(type)
|
498
501
|
|
499
502
|
# Try to get it from a keyword.strings or title.strings file
|
500
|
-
strings_path = File.join(File.expand_path("
|
503
|
+
strings_path = File.join(File.expand_path("../", screenshot.path), "#{type}.strings")
|
504
|
+
strings_path = File.join(File.expand_path("../../", screenshot.path), "#{type}.strings") unless File.exist?(strings_path)
|
505
|
+
strings_path = File.join(File.expand_path("../../../", screenshot.path), "#{type}.strings") unless File.exist?(strings_path)
|
501
506
|
if File.exist?(strings_path)
|
502
507
|
parsed = StringsParser.parse(strings_path)
|
503
508
|
text_array = parsed.find { |k, v| screenshot.path.upcase.include?(k.upcase) }
|
@@ -144,10 +144,13 @@ module Gym
|
|
144
144
|
# Is it an iOS device or a Mac?
|
145
145
|
def self.detect_platform
|
146
146
|
return if Gym.config[:destination]
|
147
|
-
|
148
|
-
|
149
|
-
elsif Gym.project.tvos?
|
147
|
+
|
148
|
+
platform = if Gym.project.tvos?
|
150
149
|
"tvOS"
|
150
|
+
elsif Gym.building_for_ios?
|
151
|
+
"iOS"
|
152
|
+
elsif Gym.building_for_mac?
|
153
|
+
min_xcode8? ? "macOS" : "OS X"
|
151
154
|
else
|
152
155
|
"iOS"
|
153
156
|
end
|
data/gym/lib/gym/module.rb
CHANGED
@@ -25,6 +25,28 @@ module Gym
|
|
25
25
|
require 'gym/xcodebuild_fixes/generic_archive_fix'
|
26
26
|
end
|
27
27
|
|
28
|
+
def building_for_ios?
|
29
|
+
if Gym.project.mac?
|
30
|
+
# Can be building for iOS if mac project and catalyst
|
31
|
+
return building_mac_catalyst_for_ios?
|
32
|
+
else
|
33
|
+
# Can be iOS project and build for mac if catalyst
|
34
|
+
return false if building_mac_catalyst_for_mac?
|
35
|
+
|
36
|
+
# Can be iOS project if iOS, tvOS, or watchOS
|
37
|
+
return Gym.project.ios? || Gym.project.tvos? || Gym.project.watchos?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def building_for_mac?
|
42
|
+
if Gym.project.supports_mac_catalyst?
|
43
|
+
# Can be a mac project and not build mac if catalyst
|
44
|
+
return building_mac_catalyst_for_mac?
|
45
|
+
else
|
46
|
+
return Gym.project.mac?
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
28
50
|
def building_mac_catalyst_for_ios?
|
29
51
|
Gym.project.supports_mac_catalyst? && Gym.config[:catalyst_platform] == "ios"
|
30
52
|
end
|
@@ -32,6 +54,14 @@ module Gym
|
|
32
54
|
def building_mac_catalyst_for_mac?
|
33
55
|
Gym.project.supports_mac_catalyst? && Gym.config[:catalyst_platform] == "macos"
|
34
56
|
end
|
57
|
+
|
58
|
+
def export_destination_upload?
|
59
|
+
config_path = Gym.cache[:config_path]
|
60
|
+
return false if config_path.nil?
|
61
|
+
|
62
|
+
result = CFPropertyList.native_types(CFPropertyList::List.new(file: config_path).value)
|
63
|
+
return result["destination"] == "upload"
|
64
|
+
end
|
35
65
|
end
|
36
66
|
|
37
67
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
data/gym/lib/gym/runner.rb
CHANGED
@@ -23,25 +23,24 @@ module Gym
|
|
23
23
|
|
24
24
|
FileUtils.mkdir_p(File.expand_path(Gym.config[:output_directory]))
|
25
25
|
|
26
|
-
# Determine platform to archive
|
27
|
-
is_mac = Gym.project.mac? || Gym.building_mac_catalyst_for_mac?
|
28
|
-
is_ios = !is_mac && (Gym.project.ios? || Gym.project.tvos? || Gym.project.watchos?)
|
29
|
-
|
30
26
|
# Archive
|
31
|
-
if
|
27
|
+
if Gym.building_for_ios?
|
32
28
|
fix_generic_archive unless Gym.project.watchos? # See https://github.com/fastlane/fastlane/pull/4325
|
33
29
|
return BuildCommandGenerator.archive_path if Gym.config[:skip_package_ipa]
|
34
30
|
|
35
31
|
package_app
|
36
32
|
compress_and_move_dsym
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
|
34
|
+
unless Gym.export_destination_upload?
|
35
|
+
path = move_ipa
|
36
|
+
move_manifest
|
37
|
+
move_app_thinning
|
38
|
+
move_app_thinning_size_report
|
39
|
+
move_apps_folder
|
40
|
+
move_asset_packs
|
41
|
+
move_appstore_info
|
42
|
+
end
|
43
|
+
elsif Gym.building_for_mac?
|
45
44
|
path = File.expand_path(Gym.config[:output_directory])
|
46
45
|
compress_and_move_dsym
|
47
46
|
if Gym.project.mac_app? || Gym.building_mac_catalyst_for_mac?
|
@@ -49,14 +48,17 @@ module Gym
|
|
49
48
|
return path if Gym.config[:skip_package_pkg]
|
50
49
|
|
51
50
|
package_app
|
52
|
-
|
53
|
-
|
51
|
+
unless Gym.export_destination_upload?
|
52
|
+
path = move_pkg
|
53
|
+
move_appstore_info
|
54
|
+
end
|
54
55
|
return path
|
55
56
|
end
|
56
57
|
copy_files_from_path(File.join(BuildCommandGenerator.archive_path, "Products/usr/local/bin/*")) if Gym.project.command_line_tool?
|
57
58
|
end
|
58
59
|
return path
|
59
60
|
end
|
61
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
60
62
|
|
61
63
|
#####################################################
|
62
64
|
# @!group Printing out things
|
@@ -273,11 +275,14 @@ module Gym
|
|
273
275
|
app_path = File.join(BuildCommandGenerator.archive_path, "Products/Applications/#{exe_name}.app")
|
274
276
|
|
275
277
|
UI.crash!("Couldn't find application in '#{BuildCommandGenerator.archive_path}'") unless File.exist?(app_path)
|
278
|
+
|
279
|
+
joined_app_path = File.join(Gym.config[:output_directory], File.basename(app_path))
|
280
|
+
FileUtils.rm_rf(joined_app_path)
|
276
281
|
FileUtils.cp_r(app_path, File.expand_path(Gym.config[:output_directory]), remove_destination: true)
|
277
|
-
|
282
|
+
|
278
283
|
UI.success("Successfully exported the .app file:")
|
279
|
-
UI.message(
|
280
|
-
|
284
|
+
UI.message(joined_app_path)
|
285
|
+
joined_app_path
|
281
286
|
end
|
282
287
|
|
283
288
|
# Move the manifest.plist if exists into the output directory
|
@@ -14,7 +14,13 @@ module Match
|
|
14
14
|
specific_cert_type = cert_type.to_s
|
15
15
|
end
|
16
16
|
|
17
|
+
platform = params[:platform]
|
18
|
+
if platform.to_s == :catalyst.to_s
|
19
|
+
platform = :macos.to_s
|
20
|
+
end
|
21
|
+
|
17
22
|
arguments = FastlaneCore::Configuration.create(Cert::Options.available_options, {
|
23
|
+
platform: platform,
|
18
24
|
development: params[:type] == "development",
|
19
25
|
type: specific_cert_type,
|
20
26
|
generate_apple_certs: params[:generate_apple_certs],
|
data/match/lib/match/options.rb
CHANGED
@@ -141,14 +141,21 @@ module Match
|
|
141
141
|
env_name: "MATCH_GIT_BASIC_AUTHORIZATION",
|
142
142
|
sensitive: true,
|
143
143
|
description: "Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64",
|
144
|
-
conflicting_options: [:git_bearer_authorization],
|
144
|
+
conflicting_options: [:git_bearer_authorization, :git_private_key],
|
145
145
|
optional: true,
|
146
146
|
default_value: nil),
|
147
147
|
FastlaneCore::ConfigItem.new(key: :git_bearer_authorization,
|
148
148
|
env_name: "MATCH_GIT_BEARER_AUTHORIZATION",
|
149
149
|
sensitive: true,
|
150
150
|
description: "Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64",
|
151
|
-
conflicting_options: [:git_basic_authorization],
|
151
|
+
conflicting_options: [:git_basic_authorization, :git_private_key],
|
152
|
+
optional: true,
|
153
|
+
default_value: nil),
|
154
|
+
FastlaneCore::ConfigItem.new(key: :git_private_key,
|
155
|
+
env_name: "MATCH_GIT_PRIVATE_KEY",
|
156
|
+
sensitive: true,
|
157
|
+
description: "Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof",
|
158
|
+
conflicting_options: [:git_basic_authorization, :git_bearer_authorization],
|
152
159
|
optional: true,
|
153
160
|
default_value: nil),
|
154
161
|
|
@@ -228,14 +235,19 @@ module Match
|
|
228
235
|
FastlaneCore::ConfigItem.new(key: :platform,
|
229
236
|
short_option: '-o',
|
230
237
|
env_name: "MATCH_PLATFORM",
|
231
|
-
description: "Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)",
|
238
|
+
description: "Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)",
|
232
239
|
default_value: default_platform,
|
233
240
|
default_value_dynamic: true,
|
234
241
|
verify_block: proc do |value|
|
235
242
|
value = value.to_s
|
236
|
-
pt = %w(tvos ios macos)
|
243
|
+
pt = %w(tvos ios macos catalyst)
|
237
244
|
UI.user_error!("Unsupported platform, must be: #{pt}") unless pt.include?(value)
|
238
245
|
end),
|
246
|
+
FastlaneCore::ConfigItem.new(key: :derive_catalyst_app_identifier,
|
247
|
+
env_name: "MATCH_DERIVE_CATALYST_APP_IDENTIFIER",
|
248
|
+
description: "Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping",
|
249
|
+
type: Boolean,
|
250
|
+
default_value: false),
|
239
251
|
FastlaneCore::ConfigItem.new(key: :template_name,
|
240
252
|
env_name: "MATCH_PROVISIONING_PROFILE_TEMPLATE_NAME",
|
241
253
|
description: "The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. \"Apple Pay Pass Suppression Development\")",
|