fastlane 2.233.0 → 2.234.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +99 -98
- data/deliver/lib/deliver/detect_values.rb +0 -2
- data/deliver/lib/deliver/languages.rb +1 -1
- data/deliver/lib/deliver/upload_price_tier.rb +4 -2
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +2 -2
- data/fastlane/lib/fastlane/actions/appium.rb +1 -1
- data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_app_on_managed_play_store.rb +2 -2
- data/fastlane/lib/fastlane/actions/gcovr.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +5 -0
- data/fastlane/lib/fastlane/actions/install_on_device.rb +1 -1
- data/fastlane/lib/fastlane/actions/lcov.rb +1 -1
- data/fastlane/lib/fastlane/actions/oclint.rb +1 -1
- data/fastlane/lib/fastlane/actions/sonar.rb +1 -1
- data/fastlane/lib/fastlane/actions/sourcedocs.rb +1 -1
- data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
- data/fastlane/lib/fastlane/actions/validate_play_store_json_key.rb +4 -4
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +1 -1
- data/fastlane/lib/fastlane/actions/xctool.rb +1 -1
- data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +1 -1
- data/fastlane/lib/fastlane/helper/xcodes_helper.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +2 -2
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +21 -21
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +4 -4
- 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/clipboard.rb +1 -1
- data/fastlane_core/lib/fastlane_core/helper.rb +14 -1
- data/fastlane_core/lib/fastlane_core/languages.rb +1 -1
- data/frameit/lib/frameit/dependency_checker.rb +1 -1
- data/frameit/lib/frameit/device_types.rb +18 -0
- data/frameit/lib/frameit/editor.rb +2 -2
- data/match/lib/match/nuke.rb +58 -38
- data/match/lib/match/storage/git_storage.rb +1 -1
- data/produce/lib/produce/available_default_languages.rb +12 -1
- data/scan/lib/scan/detect_values.rb +5 -0
- data/sigh/lib/assets/resign.sh +6 -10
- data/snapshot/lib/snapshot/reports_generator.rb +7 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
- data/spaceship/lib/assets/languageMapping.json +66 -0
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +63 -25
- data/supply/lib/supply/client.rb +61 -43
- data/supply/lib/supply/options.rb +2 -2
- metadata +31 -31
|
@@ -3331,8 +3331,8 @@ public func copyArtifacts(keepOriginal: OptionalConfigValue<Bool> = .fastlaneDef
|
|
|
3331
3331
|
Create Managed Google Play Apps
|
|
3332
3332
|
|
|
3333
3333
|
- parameters:
|
|
3334
|
-
- jsonKey: The path to a file
|
|
3335
|
-
- jsonKeyData: The raw
|
|
3334
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
3335
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account) used to authenticate with Google
|
|
3336
3336
|
- developerAccountId: The ID of your Google Play Console account. Can be obtained from the URL when you log in (`https://play.google.com/apps/publish/?account=...` or when you 'Obtain private app publishing rights' (https://developers.google.com/android/work/play/custom-app-api/get-started#retrieve_the_developer_account_id)
|
|
3337
3337
|
- apk: Path to the APK file to upload
|
|
3338
3338
|
- appTitle: App Title
|
|
@@ -4287,8 +4287,8 @@ public func downloadDsyms(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDe
|
|
|
4287
4287
|
- metadataPath: Path to the directory containing the metadata files
|
|
4288
4288
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
|
4289
4289
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
|
4290
|
-
- jsonKey: The path to a file
|
|
4291
|
-
- jsonKeyData: The raw
|
|
4290
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
4291
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
4292
4292
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
|
4293
4293
|
- timeout: Timeout for read, open, and send (in seconds)
|
|
4294
4294
|
|
|
@@ -4338,8 +4338,8 @@ public func downloadFromPlayStore(packageName: String,
|
|
|
4338
4338
|
- parameters:
|
|
4339
4339
|
- packageName: The package name of the application to use
|
|
4340
4340
|
- versionCode: The versionCode for which to download the generated APK
|
|
4341
|
-
- jsonKey: The path to a file
|
|
4342
|
-
- jsonKeyData: The raw
|
|
4341
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
4342
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
4343
4343
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
|
4344
4344
|
- timeout: Timeout for read, open, and send (in seconds)
|
|
4345
4345
|
- destination: The path on disk where to download the Generated Universal APK
|
|
@@ -5594,8 +5594,8 @@ public func githubApi(serverUrl: String = "https://api.github.com",
|
|
|
5594
5594
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
|
5595
5595
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
|
5596
5596
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
|
5597
|
-
- jsonKey: The path to a file
|
|
5598
|
-
- jsonKeyData: The raw
|
|
5597
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
5598
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
5599
5599
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
|
5600
5600
|
- timeout: Timeout for read, open, and send (in seconds)
|
|
5601
5601
|
|
|
@@ -5643,8 +5643,8 @@ public func googlePlayTrackReleaseNames(packageName: String,
|
|
|
5643
5643
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
|
5644
5644
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
|
5645
5645
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
|
5646
|
-
- jsonKey: The path to a file
|
|
5647
|
-
- jsonKeyData: The raw
|
|
5646
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
5647
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
5648
5648
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
|
5649
5649
|
- timeout: Timeout for read, open, and send (in seconds)
|
|
5650
5650
|
|
|
@@ -11142,8 +11142,8 @@ public func ssh(username: String,
|
|
|
11142
11142
|
- metadataPath: Path to the directory containing the metadata files
|
|
11143
11143
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
|
11144
11144
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
|
11145
|
-
- jsonKey: The path to a file
|
|
11146
|
-
- jsonKeyData: The raw
|
|
11145
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
11146
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
11147
11147
|
- apk: Path to the APK file to upload
|
|
11148
11148
|
- apkPaths: An array of paths to APK files to upload
|
|
11149
11149
|
- aab: Path to the AAB file to upload
|
|
@@ -12955,8 +12955,8 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
|
12955
12955
|
- metadataPath: Path to the directory containing the metadata files
|
|
12956
12956
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
|
12957
12957
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
|
12958
|
-
- jsonKey: The path to a file
|
|
12959
|
-
- jsonKeyData: The raw
|
|
12958
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
12959
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
12960
12960
|
- apk: Path to the APK file to upload
|
|
12961
12961
|
- apkPaths: An array of paths to APK files to upload
|
|
12962
12962
|
- aab: Path to the AAB file to upload
|
|
@@ -13122,8 +13122,8 @@ public func uploadToPlayStore(packageName: String,
|
|
|
13122
13122
|
|
|
13123
13123
|
- parameters:
|
|
13124
13124
|
- packageName: The package name of the application to use
|
|
13125
|
-
- jsonKey: The path to a file
|
|
13126
|
-
- jsonKeyData: The raw
|
|
13125
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
13126
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
13127
13127
|
- apk: Path to the APK file to upload
|
|
13128
13128
|
- apkPaths: An array of paths to APK files to upload
|
|
13129
13129
|
- aab: Path to the AAB file to upload
|
|
@@ -13347,15 +13347,15 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
|
|
|
13347
13347
|
}
|
|
13348
13348
|
|
|
13349
13349
|
/**
|
|
13350
|
-
Validate
|
|
13350
|
+
Validate Google credentials JSON for the Google Play Store
|
|
13351
13351
|
|
|
13352
13352
|
- parameters:
|
|
13353
|
-
- jsonKey: The path to a file
|
|
13354
|
-
- jsonKeyData: The raw
|
|
13353
|
+
- jsonKey: The path to a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
13354
|
+
- jsonKeyData: The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google
|
|
13355
13355
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
|
13356
13356
|
- timeout: Timeout for read, open, and send (in seconds)
|
|
13357
13357
|
|
|
13358
|
-
Use this action to test and validate your
|
|
13358
|
+
Use this action to test and validate your Google credentials JSON file (of type authorized_user, external_account, service_account) used to connect and authenticate with the Google Play API
|
|
13359
13359
|
*/
|
|
13360
13360
|
public func validatePlayStoreJsonKey(jsonKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
13361
13361
|
jsonKeyData: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
@@ -13976,4 +13976,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
|
13976
13976
|
|
|
13977
13977
|
// Please don't remove the lines below
|
|
13978
13978
|
// They are used to detect outdated files
|
|
13979
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
13979
|
+
// FastlaneRunnerAPIVersion [0.9.200]
|
|
@@ -337,7 +337,7 @@
|
|
|
337
337
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
338
338
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
339
339
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
340
|
-
MACOSX_DEPLOYMENT_TARGET =
|
|
340
|
+
MACOSX_DEPLOYMENT_TARGET = 14.6;
|
|
341
341
|
MTL_ENABLE_DEBUG_INFO = YES;
|
|
342
342
|
ONLY_ACTIVE_ARCH = YES;
|
|
343
343
|
SDKROOT = macosx;
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
391
391
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
392
392
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
393
|
-
MACOSX_DEPLOYMENT_TARGET =
|
|
393
|
+
MACOSX_DEPLOYMENT_TARGET = 14.6;
|
|
394
394
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
395
395
|
SDKROOT = macosx;
|
|
396
396
|
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
|
@@ -404,7 +404,7 @@
|
|
|
404
404
|
CLANG_ENABLE_MODULES = YES;
|
|
405
405
|
CODE_SIGN_IDENTITY = "-";
|
|
406
406
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
|
407
|
-
MACOSX_DEPLOYMENT_TARGET =
|
|
407
|
+
MACOSX_DEPLOYMENT_TARGET = 14.6;
|
|
408
408
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
409
409
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
410
410
|
SWIFT_VERSION = 4.0;
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
CLANG_ENABLE_MODULES = YES;
|
|
418
418
|
CODE_SIGN_IDENTITY = "-";
|
|
419
419
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
|
420
|
-
MACOSX_DEPLOYMENT_TARGET =
|
|
420
|
+
MACOSX_DEPLOYMENT_TARGET = 14.6;
|
|
421
421
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
422
422
|
SWIFT_VERSION = 4.0;
|
|
423
423
|
};
|
|
@@ -3,6 +3,7 @@ require 'colored'
|
|
|
3
3
|
require 'tty-spinner'
|
|
4
4
|
require 'pathname'
|
|
5
5
|
|
|
6
|
+
require_relative 'command_executor'
|
|
6
7
|
require_relative 'fastlane_folder'
|
|
7
8
|
require_relative 'ui/ui'
|
|
8
9
|
require_relative 'env'
|
|
@@ -184,7 +185,7 @@ module FastlaneCore
|
|
|
184
185
|
|
|
185
186
|
# @return Swift version
|
|
186
187
|
def self.swift_version
|
|
187
|
-
if
|
|
188
|
+
if self.which('swift')
|
|
188
189
|
output = `swift --version 2> /dev/null`
|
|
189
190
|
return output.split("\n").first.match(/version ([0-9.]+)/).captures.first
|
|
190
191
|
end
|
|
@@ -301,6 +302,18 @@ module FastlaneCore
|
|
|
301
302
|
# helper methods
|
|
302
303
|
#
|
|
303
304
|
|
|
305
|
+
# Cross-platform way of finding an executable in the $PATH.
|
|
306
|
+
# Returns the full path to the executable, or nil if not found.
|
|
307
|
+
# Unlike shelling out to `which`, this produces no output, making
|
|
308
|
+
# it suitable for CI environments.
|
|
309
|
+
#
|
|
310
|
+
# Helper.which('ruby') #=> "/usr/bin/ruby"
|
|
311
|
+
# Helper.which('not_real') #=> nil
|
|
312
|
+
#
|
|
313
|
+
def self.which(cmd)
|
|
314
|
+
FastlaneCore::CommandExecutor.which(cmd)
|
|
315
|
+
end
|
|
316
|
+
|
|
304
317
|
# Runs a given command using backticks (`)
|
|
305
318
|
# and prints them out using the UI.command method
|
|
306
319
|
def self.backticks(command, print: true)
|
|
@@ -11,6 +11,6 @@ module FastlaneCore
|
|
|
11
11
|
# - produce/lib/produce/available_default_languages.rb
|
|
12
12
|
# - spaceship/lib/assets/languageMapping.json
|
|
13
13
|
# See pull request for example: https://github.com/fastlane/fastlane/pull/14110
|
|
14
|
-
ALL_LANGUAGES = %w[ar-SA ca cs da de-DE el en-AU en-CA en-GB en-US es-ES es-MX fi fr-CA fr-FR he hi hr hu id it ja ko ms nl-NL no pl pt-BR pt-PT ro ru sk sv th tr uk vi zh-Hans zh-Hant]
|
|
14
|
+
ALL_LANGUAGES = %w[ar-SA bn-BD ca cs da de-DE el en-AU en-CA en-GB en-US es-ES es-MX fi fr-CA fr-FR gu-IN he hi hr hu id it ja kn-IN ko ml-IN mr-IN ms nl-NL no or-IN pa-IN pl pt-BR pt-PT ro ru sk sl-SI sv ta-IN te-IN th tr uk ur-PK vi zh-Hans zh-Hant]
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -9,7 +9,7 @@ module Frameit
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def self.check_image_magick
|
|
12
|
-
unless
|
|
12
|
+
unless FastlaneCore::Helper.which('convert')
|
|
13
13
|
UI.error('#############################################################')
|
|
14
14
|
UI.error("# You have to install the ImageMagick to use FrameIt")
|
|
15
15
|
UI.error("# Install it using 'brew update && brew install imagemagick'")
|
|
@@ -89,6 +89,17 @@ module Frameit
|
|
|
89
89
|
STARLIGHT ||= "Starlight"
|
|
90
90
|
SIERRA ||= "Sierra"
|
|
91
91
|
SORTA_SAGE ||= "Sorta Sage"
|
|
92
|
+
TEAL ||= "Teal"
|
|
93
|
+
ULTRAMARINE ||= "Ultramarine"
|
|
94
|
+
BLACK_TITANIUM ||= "Black Titanium"
|
|
95
|
+
DESERT_TITANIUM ||= "Desert Titanium"
|
|
96
|
+
NATURAL_TITANIUM ||= "Natural Titanium"
|
|
97
|
+
WHITE_TITANIUM ||= "White Titanium"
|
|
98
|
+
COSMIC_ORANGE ||= "Cosmic Orange"
|
|
99
|
+
DEEP_BLUE ||= "Deep Blue"
|
|
100
|
+
MIST_BLUE ||= "Mist Blue"
|
|
101
|
+
SAGE ||= "Sage"
|
|
102
|
+
LAVENDER ||= "Lavender"
|
|
92
103
|
|
|
93
104
|
def self.all_colors
|
|
94
105
|
Color.constants.map { |c| Color.const_get(c).upcase.gsub(' ', '_') }
|
|
@@ -175,6 +186,13 @@ module Frameit
|
|
|
175
186
|
IPHONE_14_PLUS ||= Device.new("iphone-14-plus", "Apple iPhone 14 Plus", 12, [[1284, 2778], [2778, 1284]], 458, Color::MIDNIGHT, Platform::IOS)
|
|
176
187
|
IPHONE_14_PRO ||= Device.new("iphone-14-pro", "Apple iPhone 14 Pro", 12, [[1179, 2556], [2556, 1179]], 460, Color::BLACK, Platform::IOS)
|
|
177
188
|
IPHONE_14_PRO_MAX ||= Device.new("iphone14-pro-max", "Apple iPhone 14 Pro Max", 12, [[1290, 2796], [2796, 1290]], 458, Color::BLACK, Platform::IOS)
|
|
189
|
+
IPHONE_16 ||= Device.new("iphone-16", "Apple iPhone 16", 13, [[1179, 2556], [2556, 1179]], 460, Color::BLACK, Platform::IOS)
|
|
190
|
+
IPHONE_16_PLUS ||= Device.new("iphone-16-plus", "Apple iPhone 16 Plus", 13, [[1290, 2796], [2796, 1290]], 460, Color::BLACK, Platform::IOS)
|
|
191
|
+
IPHONE_16_PRO ||= Device.new("iphone-16-pro", "Apple iPhone 16 Pro", 13, [[1206, 2622], [2622, 1206]], 460, Color::NATURAL_TITANIUM, Platform::IOS, DEVICE_SCREEN_IDS[DisplayType::APP_IPHONE_61])
|
|
192
|
+
IPHONE_16_PRO_MAX ||= Device.new("iphone16-pro-max", "Apple iPhone 16 Pro Max", 13, [[1320, 2868], [2868, 1320]], 460, Color::NATURAL_TITANIUM, Platform::IOS, DEVICE_SCREEN_IDS[DisplayType::APP_IPHONE_67])
|
|
193
|
+
IPHONE_17 ||= Device.new("iphone-17", "Apple iPhone 17", 14, [[1206, 2622], [2622, 1206]], 460, Color::BLACK, Platform::IOS)
|
|
194
|
+
IPHONE_17_PRO ||= Device.new("iphone-17-pro", "Apple iPhone 17 Pro", 14, [[1206, 2622], [2622, 1206]], 460, Color::SILVER, Platform::IOS, DEVICE_SCREEN_IDS[DisplayType::APP_IPHONE_61])
|
|
195
|
+
IPHONE_17_PRO_MAX ||= Device.new("iphone17-pro-max", "Apple iPhone 17 Pro Max", 14, [[1320, 2868], [2868, 1320]], 460, Color::SILVER, Platform::IOS, DEVICE_SCREEN_IDS[DisplayType::APP_IPHONE_67])
|
|
178
196
|
IPAD_10_2 ||= Device.new("ipad-10-2", "Apple iPad 10.2", 1, [[1620, 2160], [2160, 1620]], 264, Color::SPACE_GRAY, Platform::IOS)
|
|
179
197
|
IPAD_AIR_2 ||= Device.new("ipad-air-2", "Apple iPad Air 2", 1, [[1536, 2048], [2048, 1536]], 264, Color::SPACE_GRAY, Platform::IOS, DEVICE_SCREEN_IDS[DisplayType::APP_IPAD_97])
|
|
180
198
|
IPAD_AIR_2019 ||= Device.new("ipad-air-2019", "Apple iPad Air (2019)", 2, [[1668, 2224], [2224, 1668]], 265, Color::SPACE_GRAY, Platform::IOS)
|
|
@@ -109,8 +109,8 @@ module Frameit
|
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
# Apply rounded corners for
|
|
113
|
-
if
|
|
112
|
+
# Apply rounded corners for the specifically matched iPhone 14, 16, and 17 device identifiers
|
|
113
|
+
if ["iphone-14", "iphone14", "iphone-16", "iphone16", "iphone-17", "iphone17"].any? { |id| screenshot.device.id.to_s.include?(id) }
|
|
114
114
|
|
|
115
115
|
maskData = MiniMagick::Tool::Convert.new do |img|
|
|
116
116
|
img.size("#{screenshot.size[0]}x#{screenshot.size[1]}")
|
data/match/lib/match/nuke.rb
CHANGED
|
@@ -168,6 +168,12 @@ module Match
|
|
|
168
168
|
end
|
|
169
169
|
|
|
170
170
|
def filter_by_cert
|
|
171
|
+
certificate_id = self.params[:certificate_id].to_s.strip
|
|
172
|
+
unless certificate_id.empty?
|
|
173
|
+
filter_by_certificate_ids([certificate_id], missing_error_message: "No certificate found for certificate_id '#{certificate_id}'")
|
|
174
|
+
return
|
|
175
|
+
end
|
|
176
|
+
|
|
171
177
|
# Force will continue to revoke and delete all certificates and profiles
|
|
172
178
|
return if self.params[:force] || !UI.interactive?
|
|
173
179
|
return if self.certs.count < 2
|
|
@@ -198,44 +204,7 @@ module Match
|
|
|
198
204
|
UI.user_error!("No certificates were selected based on option number(s) entered")
|
|
199
205
|
end
|
|
200
206
|
|
|
201
|
-
|
|
202
|
-
cert_ids = self.certs.map(&:id)
|
|
203
|
-
self.profiles = self.profiles.select do |profile|
|
|
204
|
-
profile_cert_ids = profile.certificates.map(&:id)
|
|
205
|
-
(cert_ids & profile_cert_ids).any?
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
# Do file selection logic
|
|
209
|
-
self.files = self.files.select do |f|
|
|
210
|
-
found = false
|
|
211
|
-
|
|
212
|
-
ext = File.extname(f)
|
|
213
|
-
filename = File.basename(f, ".*")
|
|
214
|
-
|
|
215
|
-
# Attempt to find cert based on filename
|
|
216
|
-
if ext == ".cer" || ext == ".p12"
|
|
217
|
-
found ||= self.certs.any? do |cert|
|
|
218
|
-
filename == cert.id.to_s
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
# Attempt to find profile matched on UUIDs in profile
|
|
223
|
-
if ext == ".mobileprovision" || ext == ".provisionprofile"
|
|
224
|
-
storage_uuid = FastlaneCore::ProvisioningProfile.uuid(f)
|
|
225
|
-
|
|
226
|
-
found ||= self.profiles.any? do |profile|
|
|
227
|
-
tmp_file = Tempfile.new
|
|
228
|
-
tmp_file.write(Base64.decode64(profile.profile_content))
|
|
229
|
-
tmp_file.close
|
|
230
|
-
|
|
231
|
-
# Compare profile uuid in storage to profile uuid on developer portal
|
|
232
|
-
portal_uuid = FastlaneCore::ProvisioningProfile.uuid(tmp_file.path)
|
|
233
|
-
storage_uuid == portal_uuid
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
found
|
|
238
|
-
end
|
|
207
|
+
filter_profiles_and_files_by_selected_certificates
|
|
239
208
|
end
|
|
240
209
|
end
|
|
241
210
|
|
|
@@ -358,6 +327,57 @@ module Match
|
|
|
358
327
|
end
|
|
359
328
|
end
|
|
360
329
|
|
|
330
|
+
def filter_by_certificate_ids(certificate_ids, missing_error_message: nil)
|
|
331
|
+
certificate_ids = certificate_ids.map { |id| id.to_s.strip }.reject(&:empty?)
|
|
332
|
+
self.certs = self.certs.select do |cert|
|
|
333
|
+
certificate_ids.include?(cert.id.to_s)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
UI.user_error!(missing_error_message || "No certificates were selected") if self.certs.empty?
|
|
337
|
+
|
|
338
|
+
filter_profiles_and_files_by_selected_certificates
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def filter_profiles_and_files_by_selected_certificates
|
|
342
|
+
# Do profile selection logic
|
|
343
|
+
cert_ids = self.certs.map { |cert| cert.id.to_s }
|
|
344
|
+
self.profiles = self.profiles.reject do |profile|
|
|
345
|
+
profile_cert_ids = profile.certificates.map { |cert| cert.id.to_s }
|
|
346
|
+
(cert_ids & profile_cert_ids).empty?
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
profile_uuids = self.profiles.map do |profile|
|
|
350
|
+
Tempfile.create("profile") do |tmp_file|
|
|
351
|
+
tmp_file.binmode
|
|
352
|
+
tmp_file.write(Base64.decode64(profile.profile_content))
|
|
353
|
+
tmp_file.flush
|
|
354
|
+
|
|
355
|
+
FastlaneCore::ProvisioningProfile.uuid(tmp_file.path)
|
|
356
|
+
end
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
# Do file selection logic
|
|
360
|
+
self.files = self.files.select do |f|
|
|
361
|
+
found = false
|
|
362
|
+
|
|
363
|
+
ext = File.extname(f)
|
|
364
|
+
filename = File.basename(f, ".*")
|
|
365
|
+
|
|
366
|
+
# Attempt to find cert based on filename
|
|
367
|
+
if ext == ".cer" || ext == ".p12"
|
|
368
|
+
found ||= cert_ids.include?(filename)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
# Attempt to find profile matched on UUIDs in profile
|
|
372
|
+
if ext == ".mobileprovision" || ext == ".provisionprofile"
|
|
373
|
+
storage_uuid = FastlaneCore::ProvisioningProfile.uuid(f)
|
|
374
|
+
found ||= profile_uuids.include?(storage_uuid)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
found
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
361
381
|
# The kind of certificate we're interested in
|
|
362
382
|
def certificate_type(type)
|
|
363
383
|
case type.to_sym
|
|
@@ -141,7 +141,7 @@ module Match
|
|
|
141
141
|
|
|
142
142
|
def delete_files(files_to_delete: [], custom_message: nil)
|
|
143
143
|
if files_to_delete.count > 0
|
|
144
|
-
commands = files_to_delete.map { |filename| "git rm #{filename.shellescape}" }
|
|
144
|
+
commands = files_to_delete.map { |filename| "git --literal-pathspecs rm -- #{filename.shellescape}" }
|
|
145
145
|
git_push(commands: commands, commit_message: custom_message)
|
|
146
146
|
end
|
|
147
147
|
end
|
|
@@ -7,6 +7,7 @@ module Produce
|
|
|
7
7
|
def self.all_languages
|
|
8
8
|
[
|
|
9
9
|
"Arabic",
|
|
10
|
+
"Bangla",
|
|
10
11
|
"Catalan",
|
|
11
12
|
"Croatian",
|
|
12
13
|
"Czech",
|
|
@@ -22,28 +23,38 @@ module Produce
|
|
|
22
23
|
"French_CA",
|
|
23
24
|
"German",
|
|
24
25
|
"Greek",
|
|
26
|
+
"Gujarati",
|
|
25
27
|
"Hebrew",
|
|
26
28
|
"Hindi",
|
|
27
29
|
"Hungarian",
|
|
28
30
|
"Indonesian",
|
|
29
31
|
"Italian",
|
|
30
32
|
"Japanese",
|
|
33
|
+
"Kannada",
|
|
31
34
|
"Korean",
|
|
35
|
+
"Malayalam",
|
|
32
36
|
"Malay",
|
|
37
|
+
"Marathi",
|
|
33
38
|
"Norwegian",
|
|
39
|
+
"Odia",
|
|
34
40
|
"Polish",
|
|
35
41
|
"Portuguese",
|
|
42
|
+
"Punjabi",
|
|
36
43
|
"Romanian",
|
|
37
44
|
"Russian",
|
|
38
45
|
"Simplified Chinese",
|
|
39
46
|
"Slovak",
|
|
47
|
+
"Slovenian",
|
|
40
48
|
"Spanish",
|
|
41
49
|
"Spanish_MX",
|
|
42
50
|
"Swedish",
|
|
43
|
-
"
|
|
51
|
+
"Tamil",
|
|
52
|
+
"Telugu",
|
|
44
53
|
"Thai",
|
|
45
54
|
"Traditional Chinese",
|
|
46
55
|
"Turkish",
|
|
56
|
+
"Ukrainian",
|
|
57
|
+
"Urdu",
|
|
47
58
|
"Vietnamese"
|
|
48
59
|
]
|
|
49
60
|
end
|
|
@@ -90,6 +90,11 @@ module Scan
|
|
|
90
90
|
default_path = Scan.project.build_settings(key: "BUILT_PRODUCTS_DIR")
|
|
91
91
|
# => /Users/.../Library/Developer/Xcode/DerivedData/app-bqrfaojicpsqnoglloisfftjhksc/Build/Products/Release-iphoneos
|
|
92
92
|
# We got 3 folders up to point to ".../DerivedData/app-[random_chars]/"
|
|
93
|
+
if default_path.nil?
|
|
94
|
+
UI.error("Can't retrieve BUILT_PRODUCTS_DIR from the project to detect derived data path.")
|
|
95
|
+
UI.error("Either set `derived_data_path` explicitly in `scan`, or enable build for running in the scheme.")
|
|
96
|
+
return
|
|
97
|
+
end
|
|
93
98
|
default_path = File.expand_path("../../..", default_path)
|
|
94
99
|
UI.verbose("Detected derived data path '#{default_path}'")
|
|
95
100
|
Scan.config[:derived_data_path] = default_path
|
data/sigh/lib/assets/resign.sh
CHANGED
|
@@ -249,9 +249,9 @@ while [ "$1" != "" ]; do
|
|
|
249
249
|
shift
|
|
250
250
|
done
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
KEYCHAIN_ARGS=()
|
|
253
253
|
if [ -n "$KEYCHAIN_PATH" ]; then
|
|
254
|
-
|
|
254
|
+
KEYCHAIN_ARGS=(--keychain "$KEYCHAIN_PATH")
|
|
255
255
|
fi
|
|
256
256
|
|
|
257
257
|
PAGESIZE_ARGS=()
|
|
@@ -277,7 +277,7 @@ log "Certificate: '$CERTIFICATE'"
|
|
|
277
277
|
[[ -n "${VERSION_NUMBER}" ]] && log "Specified version number to use: '$VERSION_NUMBER'"
|
|
278
278
|
[[ -n "${SHORT_VERSION}" ]] && log "Specified short version to use: '$SHORT_VERSION'"
|
|
279
279
|
[[ -n "${BUNDLE_VERSION}" ]] && log "Specified bundle version to use: '$BUNDLE_VERSION'"
|
|
280
|
-
[[
|
|
280
|
+
[[ ${#KEYCHAIN_ARGS[@]} -gt 0 ]] && log "Specified keychain to use: '$KEYCHAIN_PATH'"
|
|
281
281
|
[[ -n "${PAGESIZE}" ]] && log "Specified page size: '$PAGESIZE'"
|
|
282
282
|
[[ -n "${NEW_FILE}" ]] && log "Output file name: '$NEW_FILE'"
|
|
283
283
|
[[ -n "${USE_APP_ENTITLEMENTS}" ]] && log "Extract app entitlements: YES"
|
|
@@ -562,7 +562,7 @@ function resign {
|
|
|
562
562
|
do
|
|
563
563
|
if [[ "$assetpack" == *.assetpack ]]; then
|
|
564
564
|
rm -rf "$assetpack"/_CodeSignature
|
|
565
|
-
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der "${
|
|
565
|
+
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der "${KEYCHAIN_ARGS[@]}" -f -s "$CERTIFICATE" "$assetpack"
|
|
566
566
|
checkStatus
|
|
567
567
|
else
|
|
568
568
|
log "Ignoring non-assetpack: $assetpack"
|
|
@@ -582,9 +582,7 @@ function resign {
|
|
|
582
582
|
do
|
|
583
583
|
if [[ "$framework" == *.framework || "$framework" == *.dylib ]]; then
|
|
584
584
|
log "Resigning '$framework'"
|
|
585
|
-
|
|
586
|
-
# shellcheck disable=SC2086
|
|
587
|
-
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
|
|
585
|
+
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der "${KEYCHAIN_ARGS[@]}" -f -s "$CERTIFICATE" "$framework"
|
|
588
586
|
checkStatus
|
|
589
587
|
else
|
|
590
588
|
log "Ignoring non-framework: $framework"
|
|
@@ -895,9 +893,7 @@ function resign {
|
|
|
895
893
|
log "Creating an archived-expanded-entitlements.xcent file for Xcode 9 builds or earlier"
|
|
896
894
|
cp -- "$TEMP_DIR/newEntitlements" "$APP_PATH/archived-expanded-entitlements.xcent"
|
|
897
895
|
fi
|
|
898
|
-
|
|
899
|
-
# shellcheck disable=SC2086
|
|
900
|
-
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" --entitlements "$TEMP_DIR/newEntitlements" "$APP_PATH"
|
|
896
|
+
/usr/bin/codesign ${VERBOSE} "${PAGESIZE_ARGS[@]}" --generate-entitlement-der "${KEYCHAIN_ARGS[@]}" -f -s "$CERTIFICATE" --entitlements "$TEMP_DIR/newEntitlements" "$APP_PATH"
|
|
901
897
|
checkStatus
|
|
902
898
|
fi
|
|
903
899
|
|
|
@@ -84,6 +84,13 @@ module Snapshot
|
|
|
84
84
|
{
|
|
85
85
|
# snapshot in Xcode 9 saves screenshots with the SIMULATOR_DEVICE_NAME
|
|
86
86
|
# which includes spaces
|
|
87
|
+
'iPhone 17 Pro Max' => "iPhone 17 Pro Max",
|
|
88
|
+
'iPhone 17 Pro' => "iPhone 17 Pro",
|
|
89
|
+
'iPhone 17' => "iPhone 17",
|
|
90
|
+
'iPhone 16 Pro Max' => "iPhone 16 Pro Max",
|
|
91
|
+
'iPhone 16 Pro' => "iPhone 16 Pro",
|
|
92
|
+
'iPhone 16 Plus' => "iPhone 16 Plus",
|
|
93
|
+
'iPhone 16' => "iPhone 16",
|
|
87
94
|
'iPhone 15 Pro Max' => "iPhone 15 Pro Max",
|
|
88
95
|
'iPhone 15 Pro' => "iPhone 15 Pro",
|
|
89
96
|
'iPhone 15 Plus' => "iPhone 15 Plus",
|