fastlane 2.151.0 → 2.153.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +78 -78
- data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
- 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 +36 -31
- data/deliver/lib/deliver/options.rb +1 -1
- data/deliver/lib/deliver/runner.rb +5 -10
- data/deliver/lib/deliver/setup.rb +94 -3
- data/deliver/lib/deliver/submit_for_review.rb +4 -6
- data/deliver/lib/deliver/upload_metadata.rb +32 -28
- data/deliver/lib/deliver/upload_price_tier.rb +1 -3
- data/deliver/lib/deliver/upload_screenshots.rb +76 -45
- data/{deliver/lib/deliver/.download_screenshots.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
- data/{spaceship/lib/spaceship/connect_api/models/.app_screenshot.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
- 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/upload_to_testflight.rb +11 -3
- data/fastlane/lib/fastlane/helper/s3_client_helper.rb +1 -1
- 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 +19 -7
- 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 +1 -1
- 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/device_manager.rb +20 -6
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +6 -3
- data/frameit/lib/frameit/editor.rb +8 -5
- data/match/lib/match/runner.rb +4 -4
- data/pilot/lib/pilot/options.rb +6 -0
- data/scan/lib/scan/runner.rb +19 -6
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/{deliver/lib/deliver/.commands_generator.rb.swp → spaceship/lib/spaceship/connect_api/.model.rb.swp} +0 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
- data/spaceship/lib/spaceship/connect_api/model.rb +14 -0
- data/spaceship/lib/spaceship/connect_api/{.file_uploader.rb.swp → models/.app_store_review_detail.rb.swp} +0 -0
- data/spaceship/lib/spaceship/connect_api/models/.app_store_version.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +40 -2
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +5 -4
- 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/idfa_declaration.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
- metadata +39 -64
- data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
- data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
@@ -216,7 +216,9 @@ module Fastlane
|
|
216
216
|
end
|
217
217
|
|
218
218
|
def execute_action(method_sym, class_ref, arguments, custom_dir: nil, from_action: false)
|
219
|
-
if
|
219
|
+
if from_action == true
|
220
|
+
custom_dir = "." # We preserve the directory from where the previous action was called from
|
221
|
+
elsif custom_dir.nil?
|
220
222
|
custom_dir ||= "." if Helper.test?
|
221
223
|
custom_dir ||= ".."
|
222
224
|
end
|
@@ -99,7 +99,7 @@ protocol DeliverfileProtocol: class {
|
|
99
99
|
var precheckDefaultRuleLevel: String { get }
|
100
100
|
|
101
101
|
/// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow
|
102
|
-
var individualMetadataItems: [String] { get }
|
102
|
+
var individualMetadataItems: [String]? { get }
|
103
103
|
|
104
104
|
/// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - Metadata: The path to the app icon
|
105
105
|
var appIcon: String? { get }
|
@@ -214,7 +214,7 @@ extension DeliverfileProtocol {
|
|
214
214
|
var itcProvider: String? { return nil }
|
215
215
|
var runPrecheckBeforeSubmit: Bool { return true }
|
216
216
|
var precheckDefaultRuleLevel: String { return "warn" }
|
217
|
-
var individualMetadataItems: [String] { return
|
217
|
+
var individualMetadataItems: [String]? { return nil }
|
218
218
|
var appIcon: String? { return nil }
|
219
219
|
var appleWatchAppIcon: String? { return nil }
|
220
220
|
var copyright: String? { return nil }
|
@@ -245,4 +245,4 @@ extension DeliverfileProtocol {
|
|
245
245
|
|
246
246
|
// Please don't remove the lines below
|
247
247
|
// They are used to detect outdated files
|
248
|
-
// FastlaneRunnerAPIVersion [0.9.
|
248
|
+
// FastlaneRunnerAPIVersion [0.9.27]
|
@@ -523,7 +523,7 @@ func appstore(username: String,
|
|
523
523
|
itcProvider: String? = nil,
|
524
524
|
runPrecheckBeforeSubmit: Bool = true,
|
525
525
|
precheckDefaultRuleLevel: Any = "warn",
|
526
|
-
individualMetadataItems: [String] =
|
526
|
+
individualMetadataItems: [String]? = nil,
|
527
527
|
appIcon: String? = nil,
|
528
528
|
appleWatchAppIcon: String? = nil,
|
529
529
|
copyright: String? = nil,
|
@@ -2573,7 +2573,7 @@ func deliver(username: Any = deliverfile.username,
|
|
2573
2573
|
itcProvider: Any? = deliverfile.itcProvider,
|
2574
2574
|
runPrecheckBeforeSubmit: Bool = deliverfile.runPrecheckBeforeSubmit,
|
2575
2575
|
precheckDefaultRuleLevel: Any = deliverfile.precheckDefaultRuleLevel,
|
2576
|
-
individualMetadataItems: [String] = deliverfile.individualMetadataItems,
|
2576
|
+
individualMetadataItems: [String]? = deliverfile.individualMetadataItems,
|
2577
2577
|
appIcon: Any? = deliverfile.appIcon,
|
2578
2578
|
appleWatchAppIcon: Any? = deliverfile.appleWatchAppIcon,
|
2579
2579
|
copyright: Any? = deliverfile.copyright,
|
@@ -2760,7 +2760,7 @@ func downloadDsyms(username: String,
|
|
2760
2760
|
teamName: String? = nil,
|
2761
2761
|
platform: String = "ios",
|
2762
2762
|
version: String? = nil,
|
2763
|
-
buildNumber:
|
2763
|
+
buildNumber: Any? = nil,
|
2764
2764
|
minVersion: String? = nil,
|
2765
2765
|
outputDirectory: String? = nil,
|
2766
2766
|
waitForDsymProcessing: Bool = false,
|
@@ -2974,16 +2974,19 @@ func ensureXcodeVersion(version: String? = nil,
|
|
2974
2974
|
- template: ERB Template File
|
2975
2975
|
- destination: Destination file
|
2976
2976
|
- placeholders: Placeholders given as a hash
|
2977
|
+
- trimMode: Trim mode applied to the ERB
|
2977
2978
|
|
2978
2979
|
Renders an ERB template with `:placeholders` given as a hash via parameter.
|
2979
2980
|
If no `:destination` is set, it returns the rendered template as string.
|
2980
2981
|
*/
|
2981
2982
|
func erb(template: String,
|
2982
2983
|
destination: String? = nil,
|
2983
|
-
placeholders: [String: Any] = [:]
|
2984
|
+
placeholders: [String: Any] = [:],
|
2985
|
+
trimMode: String? = nil) {
|
2984
2986
|
let command = RubyCommand(commandID: "", methodName: "erb", className: nil, args: [RubyCommand.Argument(name: "template", value: template),
|
2985
2987
|
RubyCommand.Argument(name: "destination", value: destination),
|
2986
|
-
RubyCommand.Argument(name: "placeholders", value: placeholders)
|
2988
|
+
RubyCommand.Argument(name: "placeholders", value: placeholders),
|
2989
|
+
RubyCommand.Argument(name: "trim_mode", value: trimMode)])
|
2987
2990
|
_ = runner.executeCommand(command)
|
2988
2991
|
}
|
2989
2992
|
|
@@ -5039,6 +5042,7 @@ func pem(development: Bool = false,
|
|
5039
5042
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
5040
5043
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
5041
5044
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
5045
|
+
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
5042
5046
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
5043
5047
|
- distributeExternal: Should the build be distributed to external testers?
|
5044
5048
|
- notifyExternalTesters: Should notify external testers?
|
@@ -5076,6 +5080,7 @@ func pilot(username: String,
|
|
5076
5080
|
skipSubmission: Bool = false,
|
5077
5081
|
skipWaitingForBuildProcessing: Bool = false,
|
5078
5082
|
updateBuildInfoOnUpload: Bool = false,
|
5083
|
+
distributeOnly: Bool = false,
|
5079
5084
|
usesNonExemptEncryption: Bool = false,
|
5080
5085
|
distributeExternal: Bool = false,
|
5081
5086
|
notifyExternalTesters: Bool = true,
|
@@ -5109,6 +5114,7 @@ func pilot(username: String,
|
|
5109
5114
|
RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
|
5110
5115
|
RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
|
5111
5116
|
RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
|
5117
|
+
RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
|
5112
5118
|
RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
|
5113
5119
|
RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
|
5114
5120
|
RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
|
@@ -7533,6 +7539,7 @@ func testfairy(apiKey: String,
|
|
7533
7539
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7534
7540
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
7535
7541
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
7542
|
+
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
7536
7543
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
7537
7544
|
- distributeExternal: Should the build be distributed to external testers?
|
7538
7545
|
- notifyExternalTesters: Should notify external testers?
|
@@ -7570,6 +7577,7 @@ func testflight(username: String,
|
|
7570
7577
|
skipSubmission: Bool = false,
|
7571
7578
|
skipWaitingForBuildProcessing: Bool = false,
|
7572
7579
|
updateBuildInfoOnUpload: Bool = false,
|
7580
|
+
distributeOnly: Bool = false,
|
7573
7581
|
usesNonExemptEncryption: Bool = false,
|
7574
7582
|
distributeExternal: Bool = false,
|
7575
7583
|
notifyExternalTesters: Bool = true,
|
@@ -7603,6 +7611,7 @@ func testflight(username: String,
|
|
7603
7611
|
RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
|
7604
7612
|
RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
|
7605
7613
|
RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
|
7614
|
+
RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
|
7606
7615
|
RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
|
7607
7616
|
RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
|
7608
7617
|
RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
|
@@ -8185,7 +8194,7 @@ func uploadToAppStore(username: String,
|
|
8185
8194
|
itcProvider: String? = nil,
|
8186
8195
|
runPrecheckBeforeSubmit: Bool = true,
|
8187
8196
|
precheckDefaultRuleLevel: Any = "warn",
|
8188
|
-
individualMetadataItems: [String] =
|
8197
|
+
individualMetadataItems: [String]? = nil,
|
8189
8198
|
appIcon: String? = nil,
|
8190
8199
|
appleWatchAppIcon: String? = nil,
|
8191
8200
|
copyright: String? = nil,
|
@@ -8448,6 +8457,7 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
|
|
8448
8457
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
8449
8458
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
8450
8459
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
8460
|
+
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
8451
8461
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
8452
8462
|
- distributeExternal: Should the build be distributed to external testers?
|
8453
8463
|
- notifyExternalTesters: Should notify external testers?
|
@@ -8485,6 +8495,7 @@ func uploadToTestflight(username: String,
|
|
8485
8495
|
skipSubmission: Bool = false,
|
8486
8496
|
skipWaitingForBuildProcessing: Bool = false,
|
8487
8497
|
updateBuildInfoOnUpload: Bool = false,
|
8498
|
+
distributeOnly: Bool = false,
|
8488
8499
|
usesNonExemptEncryption: Bool = false,
|
8489
8500
|
distributeExternal: Bool = false,
|
8490
8501
|
notifyExternalTesters: Bool = true,
|
@@ -8518,6 +8529,7 @@ func uploadToTestflight(username: String,
|
|
8518
8529
|
RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
|
8519
8530
|
RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
|
8520
8531
|
RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
|
8532
|
+
RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
|
8521
8533
|
RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
|
8522
8534
|
RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
|
8523
8535
|
RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
|
@@ -8977,4 +8989,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8977
8989
|
|
8978
8990
|
// Please don't remove the lines below
|
8979
8991
|
// They are used to detect outdated files
|
8980
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8992
|
+
// FastlaneRunnerAPIVersion [0.9.80]
|
@@ -199,18 +199,32 @@ 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
|
+
|
206
|
+
UI.message("Booting #{self}")
|
207
|
+
`xcrun simctl boot #{self.udid}` unless self.state == "Booted"
|
208
|
+
end
|
209
|
+
|
210
|
+
def shutdown
|
211
|
+
return unless is_simulator
|
212
|
+
return unless os_type == "iOS"
|
213
|
+
|
214
|
+
UI.message("Shutting down #{self.udid}")
|
215
|
+
`xcrun simctl shutdown #{self.udid}` if self.state == "Booted"
|
216
|
+
end
|
217
|
+
|
202
218
|
def reset
|
203
219
|
UI.message("Resetting #{self}")
|
204
|
-
|
220
|
+
shutdown
|
205
221
|
`xcrun simctl erase #{self.udid}`
|
206
|
-
return
|
207
222
|
end
|
208
223
|
|
209
224
|
def delete
|
210
225
|
UI.message("Deleting #{self}")
|
211
|
-
|
226
|
+
shutdown
|
212
227
|
`xcrun simctl delete #{self.udid}`
|
213
|
-
return
|
214
228
|
end
|
215
229
|
|
216
230
|
def disable_slide_to_type
|
@@ -324,10 +338,10 @@ module FastlaneCore
|
|
324
338
|
def copy_logarchive(device, log_identity, logs_destination_dir)
|
325
339
|
require 'shellwords'
|
326
340
|
|
327
|
-
logarchive_dst = File.join(logs_destination_dir, "system_logs-#{log_identity}.logarchive")
|
341
|
+
logarchive_dst = File.join(logs_destination_dir, "system_logs-#{log_identity}.logarchive")
|
328
342
|
FileUtils.rm_rf(logarchive_dst)
|
329
343
|
FileUtils.mkdir_p(File.expand_path("..", logarchive_dst))
|
330
|
-
command = "xcrun simctl spawn
|
344
|
+
command = "xcrun simctl spawn #{device.udid} log collect --output #{logarchive_dst.shellescape} 2>/dev/null"
|
331
345
|
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: true)
|
332
346
|
end
|
333
347
|
end
|
@@ -249,10 +249,11 @@ module FastlaneCore
|
|
249
249
|
def build_upload_command(username, password, source = "/tmp", provider_short_name = "")
|
250
250
|
if Helper.mac? && Helper.xcode_at_least?(11)
|
251
251
|
[
|
252
|
+
"ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}",
|
252
253
|
'xcrun iTMSTransporter',
|
253
254
|
'-m upload',
|
254
255
|
"-u #{username.shellescape}",
|
255
|
-
"-p
|
256
|
+
"-p @env:ITMS_TRANSPORTER_PASSWORD",
|
256
257
|
"-f #{source.shellescape}",
|
257
258
|
additional_upload_parameters, # that's here, because the user might overwrite the -t option
|
258
259
|
'-k 100000',
|
@@ -285,10 +286,11 @@ module FastlaneCore
|
|
285
286
|
def build_download_command(username, password, apple_id, destination = "/tmp", provider_short_name = "")
|
286
287
|
if Helper.mac? && Helper.xcode_at_least?(11)
|
287
288
|
[
|
289
|
+
"ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}",
|
288
290
|
'xcrun iTMSTransporter',
|
289
291
|
'-m lookupMetadata',
|
290
292
|
"-u #{username.shellescape}",
|
291
|
-
"-p
|
293
|
+
"-p @env:ITMS_TRANSPORTER_PASSWORD",
|
292
294
|
"-apple_id #{apple_id.shellescape}",
|
293
295
|
"-destination #{destination.shellescape}",
|
294
296
|
("-itc_provider #{provider_short_name}" unless provider_short_name.to_s.empty?),
|
@@ -319,10 +321,11 @@ module FastlaneCore
|
|
319
321
|
def build_provider_ids_command(username, password)
|
320
322
|
if Helper.mac? && Helper.xcode_at_least?(11)
|
321
323
|
[
|
324
|
+
"ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}",
|
322
325
|
'xcrun iTMSTransporter',
|
323
326
|
'-m provider',
|
324
327
|
"-u #{username.shellescape}",
|
325
|
-
"-p
|
328
|
+
"-p @env:ITMS_TRANSPORTER_PASSWORD",
|
326
329
|
'2>&1' # cause stderr to be written to stdout
|
327
330
|
].compact.join(' ')
|
328
331
|
else
|
@@ -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'])
|
data/match/lib/match/runner.rb
CHANGED
@@ -46,10 +46,10 @@ module Match
|
|
46
46
|
google_cloud_bucket_name: params[:google_cloud_bucket_name].to_s,
|
47
47
|
google_cloud_keys_file: params[:google_cloud_keys_file].to_s,
|
48
48
|
google_cloud_project_id: params[:google_cloud_project_id].to_s,
|
49
|
-
s3_region: params[:s3_region]
|
50
|
-
s3_access_key: params[:s3_access_key]
|
51
|
-
s3_secret_access_key: params[:s3_secret_access_key]
|
52
|
-
s3_bucket: params[:s3_bucket]
|
49
|
+
s3_region: params[:s3_region],
|
50
|
+
s3_access_key: params[:s3_access_key],
|
51
|
+
s3_secret_access_key: params[:s3_secret_access_key],
|
52
|
+
s3_bucket: params[:s3_bucket],
|
53
53
|
s3_object_prefix: params[:s3_object_prefix],
|
54
54
|
readonly: params[:readonly],
|
55
55
|
username: params[:readonly] ? nil : params[:username], # only pass username if not readonly
|
data/pilot/lib/pilot/options.rb
CHANGED
@@ -146,6 +146,12 @@ module Pilot
|
|
146
146
|
default_value: false),
|
147
147
|
|
148
148
|
# distribution
|
149
|
+
FastlaneCore::ConfigItem.new(key: :distribute_only,
|
150
|
+
short_option: "-D",
|
151
|
+
env_name: "PILOT_DISTRIBUTE_ONLY",
|
152
|
+
description: "Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)",
|
153
|
+
default_value: false,
|
154
|
+
type: Boolean),
|
149
155
|
FastlaneCore::ConfigItem.new(key: :uses_non_exempt_encryption,
|
150
156
|
short_option: "-X",
|
151
157
|
env_name: "PILOT_USES_NON_EXEMPT_ENCRYPTION",
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -39,12 +39,7 @@ module Scan
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
# And a correct one is freshly launched. Switching between multiple simulator
|
44
|
-
# in case the user specified multiple targets works with no issues
|
45
|
-
# This way it's okay to just call it for the first simulator we're using for
|
46
|
-
# the first test run
|
47
|
-
FastlaneCore::Simulator.launch(Scan.devices.first) if Scan.devices && Scan.config[:prelaunch_simulator]
|
42
|
+
prelaunch_simulators
|
48
43
|
|
49
44
|
if Scan.config[:reinstall_app]
|
50
45
|
app_identifier = Scan.config[:app_identifier]
|
@@ -165,6 +160,24 @@ module Scan
|
|
165
160
|
File.read(Scan.cache[:temp_junit_report])
|
166
161
|
end
|
167
162
|
|
163
|
+
def prelaunch_simulators
|
164
|
+
return unless Scan.devices.to_a.size > 0 # no devices selected, no sims to launch
|
165
|
+
|
166
|
+
# Return early unless the user wants to prelaunch simulators. Or if the user wants simulator logs
|
167
|
+
# then we must prelaunch simulators because Xcode's headless
|
168
|
+
# mode launches and shutsdown the simulators before we can collect the logs.
|
169
|
+
return unless Scan.config[:prelaunch_simulator] || Scan.config[:include_simulator_logs]
|
170
|
+
|
171
|
+
devices_to_shutdown = []
|
172
|
+
Scan.devices.each do |device|
|
173
|
+
devices_to_shutdown << device if device.state == "Shutdown"
|
174
|
+
device.boot
|
175
|
+
end
|
176
|
+
at_exit do
|
177
|
+
devices_to_shutdown.each(&:shutdown)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
168
181
|
def copy_simulator_logs
|
169
182
|
return unless Scan.config[:include_simulator_logs]
|
170
183
|
|