fastlane 2.210.1 → 2.211.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 +84 -84
- data/deliver/lib/deliver/app_screenshot.rb +17 -0
- data/fastlane/lib/fastlane/actions/docs/build_app.md +5 -5
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +1 -1
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +14 -4
- data/fastlane/lib/fastlane/actions/xcode_install.rb +5 -1
- data/fastlane/lib/fastlane/actions/xcode_select.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcodes.rb +137 -0
- data/fastlane/lib/fastlane/actions/xcversion.rb +10 -15
- data/fastlane/lib/fastlane/helper/xcodes_helper.rb +28 -0
- data/fastlane/lib/fastlane/helper/xcversion_helper.rb +0 -9
- 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 +66 -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 +5 -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/swift/formatting/Brewfile.lock.json +20 -15
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +2 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +1 -1
- data/frameit/lib/frameit/device.rb +1 -1
- data/match/lib/match/change_password.rb +2 -0
- data/match/lib/match/commands_generator.rb +2 -1
- data/match/lib/match/generator.rb +1 -0
- data/match/lib/match/importer.rb +2 -0
- data/match/lib/match/migrate.rb +4 -3
- data/match/lib/match/nuke.rb +2 -0
- data/match/lib/match/options.rb +5 -0
- data/match/lib/match/runner.rb +5 -2
- data/sigh/lib/sigh/options.rb +5 -0
- data/sigh/lib/sigh/runner.rb +3 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +2 -2
- data/spaceship/lib/spaceship/connect_api/models/actor.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +10 -10
- data/spaceship/lib/spaceship/connect_api/models/device.rb +3 -0
- data/spaceship/lib/spaceship/connect_api/models/resolution_center_message.rb +29 -0
- data/spaceship/lib/spaceship/connect_api/models/resolution_center_thread.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/models/review_rejection.rb +19 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +23 -0
- data/spaceship/lib/spaceship/connect_api.rb +5 -0
- metadata +28 -22
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Helper
|
3
|
+
class XcodesHelper
|
4
|
+
def self.read_xcode_version_file
|
5
|
+
xcode_version_paths = Dir.glob(".xcode-version")
|
6
|
+
|
7
|
+
if xcode_version_paths.first
|
8
|
+
return File.read(xcode_version_paths.first).strip
|
9
|
+
end
|
10
|
+
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.find_xcodes_binary_path
|
15
|
+
`which xcodes`.strip
|
16
|
+
end
|
17
|
+
|
18
|
+
module Verify
|
19
|
+
def self.requirement(req)
|
20
|
+
UI.user_error!("Version must be specified") if req.nil? || req.to_s.strip.size == 0
|
21
|
+
Gem::Requirement.new(req.to_s)
|
22
|
+
rescue Gem::Requirement::BadRequirementError
|
23
|
+
UI.user_error!("The requirement '#{req}' is not a valid RubyGems style requirement")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -11,15 +11,6 @@ module Fastlane
|
|
11
11
|
req.satisfied_by?(Gem::Version.new(xcode.version))
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
15
|
-
module Verify
|
16
|
-
def self.requirement(req)
|
17
|
-
UI.user_error!("Version must be specified") if req.nil? || req.to_s.strip.size == 0
|
18
|
-
Gem::Requirement.new(req.to_s)
|
19
|
-
rescue Gem::Requirement::BadRequirementError
|
20
|
-
UI.user_error!("The requirement '#{req}' is not a valid RubyGems style requirement")
|
21
|
-
end
|
22
|
-
end
|
23
14
|
end
|
24
15
|
end
|
25
16
|
end
|
@@ -4933,6 +4933,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
4933
4933
|
- development: Renew the development certificate instead of the production one
|
4934
4934
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
4935
4935
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
4936
|
+
- includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
4936
4937
|
- appIdentifier: The bundle identifier of your app
|
4937
4938
|
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
4938
4939
|
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
|
@@ -4962,6 +4963,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
4962
4963
|
development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4963
4964
|
skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4964
4965
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4966
|
+
includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4965
4967
|
appIdentifier: String,
|
4966
4968
|
apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4967
4969
|
apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
|
@@ -4987,6 +4989,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
4987
4989
|
let developmentArg = development.asRubyArgument(name: "development", type: nil)
|
4988
4990
|
let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
|
4989
4991
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
4992
|
+
let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
|
4990
4993
|
let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
|
4991
4994
|
let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
|
4992
4995
|
let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
|
@@ -5011,6 +5014,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
|
|
5011
5014
|
developmentArg,
|
5012
5015
|
skipInstallArg,
|
5013
5016
|
forceArg,
|
5017
|
+
includeMacInProfilesArg,
|
5014
5018
|
appIdentifierArg,
|
5015
5019
|
apiKeyPathArg,
|
5016
5020
|
apiKeyArg,
|
@@ -6660,6 +6664,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
6660
6664
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
6661
6665
|
- force: Renew the provisioning profiles every time you run match
|
6662
6666
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
|
6667
|
+
- includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
6663
6668
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
6664
6669
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
6665
6670
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
@@ -6712,6 +6717,7 @@ public func match(type: String = matchfile.type,
|
|
6712
6717
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.keychainPassword),
|
6713
6718
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.force),
|
6714
6719
|
forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewDevices),
|
6720
|
+
includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeMacInProfiles),
|
6715
6721
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeAllCertificates),
|
6716
6722
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewCertificates),
|
6717
6723
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipConfirmation),
|
@@ -6762,6 +6768,7 @@ public func match(type: String = matchfile.type,
|
|
6762
6768
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
6763
6769
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
6764
6770
|
let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
|
6771
|
+
let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
|
6765
6772
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
6766
6773
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
6767
6774
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
@@ -6811,6 +6818,7 @@ public func match(type: String = matchfile.type,
|
|
6811
6818
|
keychainPasswordArg,
|
6812
6819
|
forceArg,
|
6813
6820
|
forceForNewDevicesArg,
|
6821
|
+
includeMacInProfilesArg,
|
6814
6822
|
includeAllCertificatesArg,
|
6815
6823
|
forceForNewCertificatesArg,
|
6816
6824
|
skipConfirmationArg,
|
@@ -6871,6 +6879,7 @@ public func match(type: String = matchfile.type,
|
|
6871
6879
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
6872
6880
|
- force: Renew the provisioning profiles every time you run match
|
6873
6881
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
|
6882
|
+
- includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
6874
6883
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
6875
6884
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
6876
6885
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
@@ -6927,6 +6936,7 @@ public func matchNuke(type: String = "development",
|
|
6927
6936
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6928
6937
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6929
6938
|
forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6939
|
+
includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6930
6940
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6931
6941
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6932
6942
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -6977,6 +6987,7 @@ public func matchNuke(type: String = "development",
|
|
6977
6987
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
6978
6988
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
6979
6989
|
let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
|
6990
|
+
let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
|
6980
6991
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
6981
6992
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
6982
6993
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
@@ -7026,6 +7037,7 @@ public func matchNuke(type: String = "development",
|
|
7026
7037
|
keychainPasswordArg,
|
7027
7038
|
forceArg,
|
7028
7039
|
forceForNewDevicesArg,
|
7040
|
+
includeMacInProfilesArg,
|
7029
7041
|
includeAllCertificatesArg,
|
7030
7042
|
forceForNewCertificatesArg,
|
7031
7043
|
skipConfirmationArg,
|
@@ -9876,6 +9888,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
|
|
9876
9888
|
- development: Renew the development certificate instead of the production one
|
9877
9889
|
- skipInstall: By default, the certificate will be added to your local machine. Setting this flag will skip this action
|
9878
9890
|
- force: Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles
|
9891
|
+
- includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
9879
9892
|
- appIdentifier: The bundle identifier of your app
|
9880
9893
|
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
9881
9894
|
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
|
@@ -9905,6 +9918,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
|
|
9905
9918
|
development: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9906
9919
|
skipInstall: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9907
9920
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9921
|
+
includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
9908
9922
|
appIdentifier: String,
|
9909
9923
|
apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
9910
9924
|
apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
|
@@ -9930,6 +9944,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
|
|
9930
9944
|
let developmentArg = development.asRubyArgument(name: "development", type: nil)
|
9931
9945
|
let skipInstallArg = skipInstall.asRubyArgument(name: "skip_install", type: nil)
|
9932
9946
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
9947
|
+
let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
|
9933
9948
|
let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
|
9934
9949
|
let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
|
9935
9950
|
let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
|
@@ -9954,6 +9969,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
|
|
9954
9969
|
developmentArg,
|
9955
9970
|
skipInstallArg,
|
9956
9971
|
forceArg,
|
9972
|
+
includeMacInProfilesArg,
|
9957
9973
|
appIdentifierArg,
|
9958
9974
|
apiKeyPathArg,
|
9959
9975
|
apiKeyArg,
|
@@ -11081,6 +11097,7 @@ public func swiftlint(mode: String = "lint",
|
|
11081
11097
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
11082
11098
|
- force: Renew the provisioning profiles every time you run match
|
11083
11099
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
|
11100
|
+
- includeMacInProfiles: Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
11084
11101
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
11085
11102
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
11086
11103
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
@@ -11133,6 +11150,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11133
11150
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11134
11151
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11135
11152
|
forceForNewDevices: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11153
|
+
includeMacInProfiles: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11136
11154
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11137
11155
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11138
11156
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -11183,6 +11201,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11183
11201
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
11184
11202
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
11185
11203
|
let forceForNewDevicesArg = forceForNewDevices.asRubyArgument(name: "force_for_new_devices", type: nil)
|
11204
|
+
let includeMacInProfilesArg = includeMacInProfiles.asRubyArgument(name: "include_mac_in_profiles", type: nil)
|
11186
11205
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
11187
11206
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
11188
11207
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
@@ -11232,6 +11251,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11232
11251
|
keychainPasswordArg,
|
11233
11252
|
forceArg,
|
11234
11253
|
forceForNewDevicesArg,
|
11254
|
+
includeMacInProfilesArg,
|
11235
11255
|
includeAllCertificatesArg,
|
11236
11256
|
forceForNewCertificatesArg,
|
11237
11257
|
skipConfirmationArg,
|
@@ -11732,6 +11752,7 @@ public func updateAppIdentifier(xcodeproj: String,
|
|
11732
11752
|
- parameters:
|
11733
11753
|
- path: Path to your Xcode project
|
11734
11754
|
- useAutomaticSigning: Defines if project should use automatic signing
|
11755
|
+
- sdk: Build target SDKs (iphoneos*, macosx*, iphonesimulator*)
|
11735
11756
|
- teamId: Team ID, is used when upgrading project
|
11736
11757
|
- targets: Specify targets you want to toggle the signing mech. (default to all targets)
|
11737
11758
|
- buildConfigurations: Specify build_configurations you want to toggle the signing mech. (default to all configurations)
|
@@ -11747,6 +11768,7 @@ public func updateAppIdentifier(xcodeproj: String,
|
|
11747
11768
|
*/
|
11748
11769
|
public func updateCodeSigningSettings(path: String,
|
11749
11770
|
useAutomaticSigning: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11771
|
+
sdk: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11750
11772
|
teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11751
11773
|
targets: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
|
11752
11774
|
buildConfigurations: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
|
@@ -11758,6 +11780,7 @@ public func updateCodeSigningSettings(path: String,
|
|
11758
11780
|
{
|
11759
11781
|
let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
|
11760
11782
|
let useAutomaticSigningArg = useAutomaticSigning.asRubyArgument(name: "use_automatic_signing", type: nil)
|
11783
|
+
let sdkArg = sdk.asRubyArgument(name: "sdk", type: nil)
|
11761
11784
|
let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
|
11762
11785
|
let targetsArg = targets.asRubyArgument(name: "targets", type: nil)
|
11763
11786
|
let buildConfigurationsArg = buildConfigurations.asRubyArgument(name: "build_configurations", type: nil)
|
@@ -11768,6 +11791,7 @@ public func updateCodeSigningSettings(path: String,
|
|
11768
11791
|
let bundleIdentifierArg = bundleIdentifier.asRubyArgument(name: "bundle_identifier", type: nil)
|
11769
11792
|
let array: [RubyCommand.Argument?] = [pathArg,
|
11770
11793
|
useAutomaticSigningArg,
|
11794
|
+
sdkArg,
|
11771
11795
|
teamIdArg,
|
11772
11796
|
targetsArg,
|
11773
11797
|
buildConfigurationsArg,
|
@@ -13151,7 +13175,7 @@ public func xcexport() {
|
|
13151
13175
|
Change the xcode-path to use. Useful for beta versions of Xcode
|
13152
13176
|
|
13153
13177
|
Select and build with the Xcode installed at the provided path.
|
13154
|
-
Use the `
|
13178
|
+
Use the `xcodes` action if you want to select an Xcode:
|
13155
13179
|
- Based on a version specifier or
|
13156
13180
|
- You don't have known, stable paths, as may happen in a CI environment.
|
13157
13181
|
*/
|
@@ -13221,6 +13245,45 @@ public func xcodebuild() {
|
|
13221
13245
|
_ = runner.executeCommand(command)
|
13222
13246
|
}
|
13223
13247
|
|
13248
|
+
/**
|
13249
|
+
Make sure a certain version of Xcode is installed, installing it only if needed
|
13250
|
+
|
13251
|
+
- parameters:
|
13252
|
+
- version: The version number of the version of Xcode to install. Defaults to the value specified in the .xcode-version file
|
13253
|
+
- updateList: Whether the list of available Xcode versions should be updated before running the install command
|
13254
|
+
- selectForCurrentBuildOnly: When true, it won't attempt to install an Xcode version, just find the installed Xcode version that best matches the passed version argument, and select it for the current build steps. It doesn't change the global Xcode version (e.g. via 'xcrun xcode-select'), which would require sudo permissions — when this option is true, this action doesn't require sudo permissions
|
13255
|
+
- binaryPath: Where the xcodes binary lives on your system (full path)
|
13256
|
+
- xcodesArgs: Pass in xcodes command line arguments directly. When present, other parameters are ignored and only this parameter is used to build the command to be executed
|
13257
|
+
|
13258
|
+
- returns: The path to the newly installed Xcode version
|
13259
|
+
|
13260
|
+
Makes sure a specific version of Xcode is installed. If that's not the case, it will automatically be downloaded by [xcodes](https://github.com/RobotsAndPencils/xcodes).
|
13261
|
+
This will make sure to use the correct Xcode version for later actions.
|
13262
|
+
Note that this action depends on [xcodes](https://github.com/RobotsAndPencils/xcodes) CLI, so make sure you have it installed in your environment. For the installation guide, see: https://github.com/RobotsAndPencils/xcodes#installation
|
13263
|
+
*/
|
13264
|
+
@discardableResult public func xcodes(version: String,
|
13265
|
+
updateList: OptionalConfigValue<Bool> = .fastlaneDefault(true),
|
13266
|
+
selectForCurrentBuildOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
13267
|
+
binaryPath: String = "/opt/homebrew/bin/xcodes",
|
13268
|
+
xcodesArgs: OptionalConfigValue<String?> = .fastlaneDefault(nil)) -> String
|
13269
|
+
{
|
13270
|
+
let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
|
13271
|
+
let updateListArg = updateList.asRubyArgument(name: "update_list", type: nil)
|
13272
|
+
let selectForCurrentBuildOnlyArg = selectForCurrentBuildOnly.asRubyArgument(name: "select_for_current_build_only", type: nil)
|
13273
|
+
let binaryPathArg = RubyCommand.Argument(name: "binary_path", value: binaryPath, type: nil)
|
13274
|
+
let xcodesArgsArg = xcodesArgs.asRubyArgument(name: "xcodes_args", type: nil)
|
13275
|
+
let array: [RubyCommand.Argument?] = [versionArg,
|
13276
|
+
updateListArg,
|
13277
|
+
selectForCurrentBuildOnlyArg,
|
13278
|
+
binaryPathArg,
|
13279
|
+
xcodesArgsArg]
|
13280
|
+
let args: [RubyCommand.Argument] = array
|
13281
|
+
.filter { $0?.value != nil }
|
13282
|
+
.compactMap { $0 }
|
13283
|
+
let command = RubyCommand(commandID: "", methodName: "xcodes", className: nil, args: args)
|
13284
|
+
return runner.executeCommand(command)
|
13285
|
+
}
|
13286
|
+
|
13224
13287
|
/**
|
13225
13288
|
Nice code coverage reports without hassle
|
13226
13289
|
|
@@ -13374,7 +13437,7 @@ public func xctool() {
|
|
13374
13437
|
/**
|
13375
13438
|
Select an Xcode to use by version specifier
|
13376
13439
|
|
13377
|
-
- parameter version: The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')
|
13440
|
+
- parameter version: The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0'). Defaults to the value specified in the .xcode-version file
|
13378
13441
|
|
13379
13442
|
Finds and selects a version of an installed Xcode that best matches the provided [`Gem::Version` requirement specifier](http://www.rubydoc.info/github/rubygems/rubygems/Gem/Version)
|
13380
13443
|
You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.
|
@@ -13486,4 +13549,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
13486
13549
|
|
13487
13550
|
// Please don't remove the lines below
|
13488
13551
|
// They are used to detect outdated files
|
13489
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13552
|
+
// FastlaneRunnerAPIVersion [0.9.165]
|
@@ -107,6 +107,9 @@ public protocol MatchfileProtocol: AnyObject {
|
|
107
107
|
/// Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile types 'appstore' and 'developer_id'
|
108
108
|
var forceForNewDevices: Bool { get }
|
109
109
|
|
110
|
+
/// Include Apple Silicon Mac devices in provisioning profiles for iOS/iPadOS apps
|
111
|
+
var includeMacInProfiles: Bool { get }
|
112
|
+
|
110
113
|
/// Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
111
114
|
var includeAllCertificates: Bool { get }
|
112
115
|
|
@@ -186,6 +189,7 @@ public extension MatchfileProtocol {
|
|
186
189
|
var keychainPassword: String? { return nil }
|
187
190
|
var force: Bool { return false }
|
188
191
|
var forceForNewDevices: Bool { return false }
|
192
|
+
var includeMacInProfiles: Bool { return false }
|
189
193
|
var includeAllCertificates: Bool { return false }
|
190
194
|
var forceForNewCertificates: Bool { return false }
|
191
195
|
var skipConfirmation: Bool { return false }
|
@@ -204,4 +208,4 @@ public extension MatchfileProtocol {
|
|
204
208
|
|
205
209
|
// Please don't remove the lines below
|
206
210
|
// They are used to detect outdated files
|
207
|
-
// FastlaneRunnerAPIVersion [0.9.
|
211
|
+
// FastlaneRunnerAPIVersion [0.9.109]
|
@@ -2,40 +2,45 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.
|
5
|
+
"version": "0.50.3",
|
6
6
|
"bottle": {
|
7
7
|
"rebuild": 0,
|
8
8
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
9
9
|
"files": {
|
10
|
+
"arm64_ventura": {
|
11
|
+
"cellar": ":any_skip_relocation",
|
12
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:fca75bfe7fda2151c2972e7e9262e9ca6ce2f50e3fc562e0688dd817550813c2",
|
13
|
+
"sha256": "fca75bfe7fda2151c2972e7e9262e9ca6ce2f50e3fc562e0688dd817550813c2"
|
14
|
+
},
|
10
15
|
"arm64_monterey": {
|
11
16
|
"cellar": ":any_skip_relocation",
|
12
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
13
|
-
"sha256": "
|
17
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:f03398746b42c97a4057eb74c740a842b96b7fbb49b003057daf114d72db74b4",
|
18
|
+
"sha256": "f03398746b42c97a4057eb74c740a842b96b7fbb49b003057daf114d72db74b4"
|
14
19
|
},
|
15
20
|
"arm64_big_sur": {
|
16
21
|
"cellar": ":any_skip_relocation",
|
17
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
18
|
-
"sha256": "
|
22
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:ff1b0f20ebaaa03a580817e8f4c670e54227c86c3c53d813899c276d03415461",
|
23
|
+
"sha256": "ff1b0f20ebaaa03a580817e8f4c670e54227c86c3c53d813899c276d03415461"
|
19
24
|
},
|
20
25
|
"monterey": {
|
21
26
|
"cellar": ":any_skip_relocation",
|
22
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
23
|
-
"sha256": "
|
27
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:5dddca5459af2ad28f1a9ef1e664da40ed664ae907c0351dc92b3cd0af52c29e",
|
28
|
+
"sha256": "5dddca5459af2ad28f1a9ef1e664da40ed664ae907c0351dc92b3cd0af52c29e"
|
24
29
|
},
|
25
30
|
"big_sur": {
|
26
31
|
"cellar": ":any_skip_relocation",
|
27
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
28
|
-
"sha256": "
|
32
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:7427e072a246141371df90135c5cea00c832bf2c511b62ef1cf49c1148b5bf23",
|
33
|
+
"sha256": "7427e072a246141371df90135c5cea00c832bf2c511b62ef1cf49c1148b5bf23"
|
29
34
|
},
|
30
35
|
"catalina": {
|
31
36
|
"cellar": ":any_skip_relocation",
|
32
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
33
|
-
"sha256": "
|
37
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a3de195f76316795eb6a56e240265a8fd41c042c7d515ae1df254aa3f577b540",
|
38
|
+
"sha256": "a3de195f76316795eb6a56e240265a8fd41c042c7d515ae1df254aa3f577b540"
|
34
39
|
},
|
35
40
|
"x86_64_linux": {
|
36
41
|
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
37
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
38
|
-
"sha256": "
|
42
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:8557726207a8ce0871b950bf44ae9f2b8e95973ba026a77cf728d31cefc3ac00",
|
43
|
+
"sha256": "8557726207a8ce0871b950bf44ae9f2b8e95973ba026a77cf728d31cefc3ac00"
|
39
44
|
}
|
40
45
|
}
|
41
46
|
}
|
@@ -61,9 +66,9 @@
|
|
61
66
|
"macOS": "11.0.1"
|
62
67
|
},
|
63
68
|
"monterey": {
|
64
|
-
"HOMEBREW_VERSION": "3.6.
|
69
|
+
"HOMEBREW_VERSION": "3.6.10-11-gb683beb",
|
65
70
|
"HOMEBREW_PREFIX": "/opt/homebrew",
|
66
|
-
"Homebrew/homebrew-core": "
|
71
|
+
"Homebrew/homebrew-core": "0bc04af3657134103a6f2b48b31e278e2537e85f",
|
67
72
|
"CLT": "13.4.0.0.1.1651278267",
|
68
73
|
"Xcode": "13.4.1",
|
69
74
|
"macOS": "12.5"
|
@@ -160,13 +160,13 @@ module FastlaneCore
|
|
160
160
|
import_command = "curl -f -o #{filename} #{url} && security import #{filename} #{keychain}"
|
161
161
|
UI.verbose("Installing WWDR Cert: #{import_command}")
|
162
162
|
|
163
|
-
stdout, stderr,
|
163
|
+
stdout, stderr, status = Open3.capture3(import_command)
|
164
164
|
if FastlaneCore::Globals.verbose?
|
165
165
|
UI.command_output(stdout)
|
166
166
|
UI.command_output(stderr)
|
167
167
|
end
|
168
168
|
|
169
|
-
unless
|
169
|
+
unless status.success?
|
170
170
|
UI.verbose("Failed to install WWDR Certificate, checking output to see why")
|
171
171
|
# Check the command output, WWDR might already exist
|
172
172
|
unless /The specified item already exists in the keychain./ =~ stderr
|
@@ -873,7 +873,7 @@ module FastlaneCore
|
|
873
873
|
|
874
874
|
# Create .p8 file from api_key and provide api key info which contains .p8 file path
|
875
875
|
def api_key_with_p8_file_path(original_api_key)
|
876
|
-
api_key = original_api_key.
|
876
|
+
api_key = original_api_key.dup
|
877
877
|
api_key[:key_dir] = Dir.mktmpdir("deliver-")
|
878
878
|
# Specified p8 needs to be generated to call altool
|
879
879
|
File.open(File.join(api_key[:key_dir], "AuthKey_#{api_key[:key_id]}.p8"), "wb") do |p8|
|
@@ -51,7 +51,7 @@ module Frameit
|
|
51
51
|
found_device = nil
|
52
52
|
filename_device = nil
|
53
53
|
filename = Pathname.new(path).basename.to_s
|
54
|
-
Devices.constants.
|
54
|
+
Devices.constants.sort_by(&:length).reverse_each do |c|
|
55
55
|
device = Devices.const_get(c)
|
56
56
|
next unless device.resolutions.include?(size)
|
57
57
|
# assign to filename_device if the filename contains the formatted name / id and its priority is higher than the current filename_device
|
@@ -42,6 +42,8 @@ module Match
|
|
42
42
|
message = "[fastlane] Changed passphrase"
|
43
43
|
files_to_commit = encryption.encrypt_files(password: new_password)
|
44
44
|
storage.save_changes!(files_to_commit: files_to_commit, custom_message: message)
|
45
|
+
ensure
|
46
|
+
storage.clear_changes if storage
|
45
47
|
end
|
46
48
|
|
47
49
|
def self.ensure_ui_interactive
|
@@ -155,7 +155,8 @@ module Match
|
|
155
155
|
FastlaneCore::CommanderGenerator.new.generate(Match::Options.available_options, command: c)
|
156
156
|
|
157
157
|
c.action do |args, options|
|
158
|
-
Match::
|
158
|
+
params = FastlaneCore::Configuration.create(Match::Options.available_options, options.__hash__)
|
159
|
+
Match::Migrate.new.migrate(params)
|
159
160
|
end
|
160
161
|
end
|
161
162
|
|
@@ -90,6 +90,7 @@ module Match
|
|
90
90
|
template_name: params[:template_name],
|
91
91
|
fail_on_name_taken: params[:fail_on_name_taken],
|
92
92
|
include_all_certificates: params[:include_all_certificates],
|
93
|
+
include_mac_in_profiles: params[:include_mac_in_profiles],
|
93
94
|
}
|
94
95
|
|
95
96
|
values[:platform] = params[:platform]
|
data/match/lib/match/importer.rb
CHANGED
@@ -144,6 +144,8 @@ module Match
|
|
144
144
|
# Encrypt and commit
|
145
145
|
encryption.encrypt_files if encryption
|
146
146
|
storage.save_changes!(files_to_commit: files_to_commit)
|
147
|
+
ensure
|
148
|
+
storage.clear_changes if storage
|
147
149
|
end
|
148
150
|
|
149
151
|
def ensure_valid_file_path(file_path, file_description, file_extension, optional: false)
|
data/match/lib/match/migrate.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require_relative 'options'
|
2
1
|
require_relative 'spaceship_ensure'
|
3
2
|
require_relative 'encryption'
|
4
3
|
require_relative 'storage'
|
@@ -7,8 +6,7 @@ require 'fileutils'
|
|
7
6
|
|
8
7
|
module Match
|
9
8
|
class Migrate
|
10
|
-
def migrate(
|
11
|
-
params = FastlaneCore::Configuration.create(Match::Options.available_options, options.__hash__)
|
9
|
+
def migrate(params)
|
12
10
|
loaded_matchfile = params.load_configuration_file("Matchfile")
|
13
11
|
|
14
12
|
ensure_parameters_are_valid(params)
|
@@ -88,6 +86,9 @@ module Match
|
|
88
86
|
UI.success("You can also remove the `git_url`, as well as any other git related configurations from your Fastfile and Matchfile")
|
89
87
|
UI.message("")
|
90
88
|
UI.input("Please make sure to read the above and confirm with enter")
|
89
|
+
ensure
|
90
|
+
google_cloud_storage.clear_changes if google_cloud_storage
|
91
|
+
git_storage.clear_changes if git_storage
|
91
92
|
end
|
92
93
|
|
93
94
|
def api_token(params)
|
data/match/lib/match/nuke.rb
CHANGED