fastlane 2.171.0 → 2.172.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +72 -72
  3. data/deliver/lib/deliver/commands_generator.rb +1 -1
  4. data/deliver/lib/deliver/setup.rb +8 -3
  5. data/fastlane/lib/fastlane/actions/{.github_api.rb.swp → .update_fastlane.rb.swp} +0 -0
  6. data/fastlane/lib/fastlane/actions/artifactory.rb +36 -3
  7. data/fastlane/lib/fastlane/actions/build_app.rb +3 -1
  8. data/fastlane/lib/fastlane/actions/create_pull_request.rb +16 -1
  9. data/fastlane/lib/fastlane/actions/create_xcframework.rb +118 -0
  10. data/fastlane/lib/fastlane/actions/download_dsyms.rb +0 -1
  11. data/fastlane/lib/fastlane/actions/git_commit.rb +8 -4
  12. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/register_devices.rb +2 -1
  14. data/fastlane/lib/fastlane/actions/swiftlint.rb +4 -4
  15. data/fastlane/lib/fastlane/cli_tools_distributor.rb +3 -0
  16. data/fastlane/lib/fastlane/version.rb +1 -1
  17. data/fastlane/swift/Deliverfile.swift +2 -2
  18. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  19. data/fastlane/swift/Fastlane.swift +125 -18
  20. data/fastlane/swift/Gymfile.swift +2 -2
  21. data/fastlane/swift/GymfileProtocol.swift +11 -3
  22. data/fastlane/swift/Matchfile.swift +2 -2
  23. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  24. data/fastlane/swift/Precheckfile.swift +2 -2
  25. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  26. data/fastlane/swift/Scanfile.swift +2 -2
  27. data/fastlane/swift/ScanfileProtocol.swift +10 -2
  28. data/fastlane/swift/Screengrabfile.swift +2 -2
  29. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  30. data/fastlane/swift/Snapshotfile.swift +2 -2
  31. data/fastlane/swift/SnapshotfileProtocol.swift +14 -2
  32. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  33. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +41 -16
  34. data/fastlane_core/lib/fastlane_core/project.rb +18 -5
  35. data/frameit/lib/frameit/device_types.rb +7 -1
  36. data/gym/lib/gym/generators/build_command_generator.rb +3 -1
  37. data/gym/lib/gym/options.rb +12 -2
  38. data/scan/lib/scan/options.rb +10 -0
  39. data/scan/lib/scan/runner.rb +6 -1
  40. data/scan/lib/scan/slack_poster.rb +3 -1
  41. data/scan/lib/scan/test_command_generator.rb +3 -1
  42. data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
  43. data/snapshot/lib/snapshot/options.rb +16 -1
  44. data/snapshot/lib/snapshot/update.rb +1 -1
  45. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +3 -1
  46. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +9 -0
  47. data/spaceship/lib/spaceship/connect_api/models/device.rb +26 -0
  48. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  49. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +1 -0
  50. metadata +36 -23
  51. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  52. data/fastlane/lib/fastlane/actions/.set_github_release.rb.swp +0 -0
@@ -1,5 +1,5 @@
1
1
  // Gymfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // GymfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol GymfileProtocol: class {
5
5
  /// Path to the workspace file
@@ -41,7 +41,7 @@ public protocol GymfileProtocol: class {
41
41
  /// Should the ipa file include bitcode?
42
42
  var includeBitcode: Bool? { get }
43
43
 
44
- /// Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
44
+ /// Method used to export the archive. Valid values are: app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application
45
45
  var exportMethod: String? { get }
46
46
 
47
47
  /// Path to an export options plist or a hash with export options. Use 'xcodebuild -help' to print the full set of available options
@@ -134,6 +134,12 @@ public protocol GymfileProtocol: class {
134
134
  /// Sets a custom path for Swift Package Manager dependencies
135
135
  var clonedSourcePackagesPath: String? { get }
136
136
 
137
+ /// Skips resolution of Swift Package Manager dependencies
138
+ var skipPackageDependenciesResolution: Bool { get }
139
+
140
+ /// Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
141
+ var disablePackageAutomaticUpdates: Bool { get }
142
+
137
143
  /// Lets xcodebuild use system's scm configuration
138
144
  var useSystemScm: Bool { get }
139
145
  }
@@ -183,9 +189,11 @@ public extension GymfileProtocol {
183
189
  var xcprettyUtf: Bool? { return nil }
184
190
  var skipProfileDetection: Bool { return false }
185
191
  var clonedSourcePackagesPath: String? { return nil }
192
+ var skipPackageDependenciesResolution: Bool { return false }
193
+ var disablePackageAutomaticUpdates: Bool { return false }
186
194
  var useSystemScm: Bool { return false }
187
195
  }
188
196
 
189
197
  // Please don't remove the lines below
190
198
  // They are used to detect outdated files
191
- // FastlaneRunnerAPIVersion [0.9.57]
199
+ // FastlaneRunnerAPIVersion [0.9.58]
@@ -1,5 +1,5 @@
1
1
  // Matchfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // MatchfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol MatchfileProtocol: class {
5
5
  /// Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
@@ -184,4 +184,4 @@ public extension MatchfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.51]
187
+ // FastlaneRunnerAPIVersion [0.9.52]
@@ -1,5 +1,5 @@
1
1
  // Precheckfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // PrecheckfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol PrecheckfileProtocol: class {
5
5
  /// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.50]
55
+ // FastlaneRunnerAPIVersion [0.9.51]
@@ -1,5 +1,5 @@
1
1
  // Scanfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // ScanfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol ScanfileProtocol: class {
5
5
  /// Path to the workspace file
@@ -194,6 +194,12 @@ public protocol ScanfileProtocol: class {
194
194
  /// Sets a custom path for Swift Package Manager dependencies
195
195
  var clonedSourcePackagesPath: String? { get }
196
196
 
197
+ /// Skips resolution of Swift Package Manager dependencies
198
+ var skipPackageDependenciesResolution: Bool { get }
199
+
200
+ /// Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
201
+ var disablePackageAutomaticUpdates: Bool { get }
202
+
197
203
  /// Lets xcodebuild use system's scm configuration
198
204
  var useSystemScm: Bool { get }
199
205
 
@@ -266,10 +272,12 @@ public extension ScanfileProtocol {
266
272
  var customReportFileName: String? { return nil }
267
273
  var xcodebuildCommand: String { return "env NSUnbufferedIO=YES xcodebuild" }
268
274
  var clonedSourcePackagesPath: String? { return nil }
275
+ var skipPackageDependenciesResolution: Bool { return false }
276
+ var disablePackageAutomaticUpdates: Bool { return false }
269
277
  var useSystemScm: Bool { return false }
270
278
  var failBuild: Bool { return true }
271
279
  }
272
280
 
273
281
  // Please don't remove the lines below
274
282
  // They are used to detect outdated files
275
- // FastlaneRunnerAPIVersion [0.9.62]
283
+ // FastlaneRunnerAPIVersion [0.9.63]
@@ -1,5 +1,5 @@
1
1
  // Screengrabfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // ScreengrabfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol ScreengrabfileProtocol: class {
5
5
  /// Path to the root of your Android SDK installation, e.g. ~/tools/android-sdk-macosx
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.52]
99
+ // FastlaneRunnerAPIVersion [0.9.53]
@@ -1,5 +1,5 @@
1
1
  // Snapshotfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.171.0
20
+ // Generated with fastlane 2.172.0
@@ -1,5 +1,5 @@
1
1
  // SnapshotfileProtocol.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  public protocol SnapshotfileProtocol: class {
5
5
  /// Path the workspace file
@@ -119,6 +119,12 @@ public protocol SnapshotfileProtocol: class {
119
119
  /// Sets a custom path for Swift Package Manager dependencies
120
120
  var clonedSourcePackagesPath: String? { get }
121
121
 
122
+ /// Skips resolution of Swift Package Manager dependencies
123
+ var skipPackageDependenciesResolution: Bool { get }
124
+
125
+ /// Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
126
+ var disablePackageAutomaticUpdates: Bool { get }
127
+
122
128
  /// The testplan associated with the scheme that should be used for testing
123
129
  var testplan: String? { get }
124
130
 
@@ -133,6 +139,9 @@ public protocol SnapshotfileProtocol: class {
133
139
 
134
140
  /// Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
135
141
  var suppressXcodeOutput: Bool? { get }
142
+
143
+ /// Lets xcodebuild use system's scm configuration
144
+ var useSystemScm: Bool { get }
136
145
  }
137
146
 
138
147
  public extension SnapshotfileProtocol {
@@ -175,13 +184,16 @@ public extension SnapshotfileProtocol {
175
184
  var concurrentSimulators: Bool { return true }
176
185
  var disableSlideToType: Bool { return false }
177
186
  var clonedSourcePackagesPath: String? { return nil }
187
+ var skipPackageDependenciesResolution: Bool { return false }
188
+ var disablePackageAutomaticUpdates: Bool { return false }
178
189
  var testplan: String? { return nil }
179
190
  var onlyTesting: String? { return nil }
180
191
  var skipTesting: String? { return nil }
181
192
  var disableXcpretty: Bool? { return nil }
182
193
  var suppressXcodeOutput: Bool? { return nil }
194
+ var useSystemScm: Bool { return false }
183
195
  }
184
196
 
185
197
  // Please don't remove the lines below
186
198
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.46]
199
+ // FastlaneRunnerAPIVersion [0.9.47]
@@ -74,7 +74,7 @@ module FastlaneCore
74
74
  return true if self.is_circle_ci?
75
75
 
76
76
  # Check for Jenkins, Travis CI, ... environment variables
77
- ['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CI', 'APPCENTER_BUILD_ID', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS', 'TF_BUILD', 'GITHUB_ACTION', 'GITHUB_ACTIONS', 'BITRISE_IO'].each do |current|
77
+ ['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CI', 'APPCENTER_BUILD_ID', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS', 'TF_BUILD', 'GITHUB_ACTION', 'GITHUB_ACTIONS', 'BITRISE_IO', 'BUDDY'].each do |current|
78
78
  return true if ENV.key?(current)
79
79
  end
80
80
  return false
@@ -1,3 +1,4 @@
1
+ require 'open3'
1
2
  require 'zip'
2
3
 
3
4
  require_relative 'core_ext/cfpropertylist'
@@ -37,27 +38,51 @@ module FastlaneCore
37
38
 
38
39
  def self.fetch_info_plist_file(path)
39
40
  UI.user_error!("Could not find file at path '#{path}'") unless File.exist?(path)
40
- Zip::File.open(path, "rb") do |zipfile|
41
- file = zipfile.glob('**/Payload/*.app/Info.plist').first
42
- return nil unless file
41
+ plist_data = self.fetch_info_plist_with_rubyzip(path)
42
+ if plist_data.nil?
43
+ # Xcode produces invalid zip files for IPAs larger than 4GB. RubyZip
44
+ # can't read them, but the unzip command is able to work around this.
45
+ plist_data = self.fetch_info_plist_with_unzip(path)
46
+ end
47
+ return nil if plist_data.nil?
43
48
 
44
- # Creates a temporary directory with a unique name tagged with 'fastlane'
45
- # The directory is deleted automatically at the end of the block
46
- Dir.mktmpdir("fastlane") do |tmp|
47
- # The XML file has to be properly unpacked first
48
- tmp_path = File.join(tmp, "Info.plist")
49
- File.open(tmp_path, 'wb') do |output|
50
- output.write(zipfile.read(file))
51
- end
52
- result = CFPropertyList.native_types(CFPropertyList::List.new(file: tmp_path).value)
53
-
54
- if result['CFBundleIdentifier'] || result['CFBundleVersion']
55
- return result
56
- end
49
+ # Creates a temporary directory with a unique name tagged with 'fastlane'
50
+ # The directory is deleted automatically at the end of the block
51
+ Dir.mktmpdir("fastlane") do |tmp|
52
+ # The XML file has to be properly unpacked first
53
+ tmp_path = File.join(tmp, "Info.plist")
54
+ File.open(tmp_path, 'wb') do |output|
55
+ output.write(plist_data)
56
+ end
57
+ result = CFPropertyList.native_types(CFPropertyList::List.new(file: tmp_path).value)
58
+
59
+ if result['CFBundleIdentifier'] || result['CFBundleVersion']
60
+ return result
57
61
  end
58
62
  end
59
63
 
60
64
  return nil
61
65
  end
66
+
67
+ def self.fetch_info_plist_with_rubyzip(path)
68
+ Zip::File.open(path, "rb") do |zipfile|
69
+ file = zipfile.glob('**/Payload/*.app/Info.plist').first
70
+ return nil unless file
71
+ zipfile.read(file)
72
+ end
73
+ end
74
+
75
+ def self.fetch_info_plist_with_unzip(path)
76
+ list, error, = Open3.capture3("unzip", "-Z", "-1", path)
77
+ UI.command_output(error) unless error.empty?
78
+ return nil if list.empty?
79
+ entry = list.chomp.split("\n").find do |e|
80
+ File.fnmatch("**/Payload/*.app/Info.plist", e, File::FNM_PATHNAME)
81
+ end
82
+ data, error, = Open3.capture3("unzip", "-p", path, entry)
83
+ UI.command_output(error) unless error.empty?
84
+ return nil if data.empty?
85
+ data
86
+ end
62
87
  end
63
88
  end
@@ -322,11 +322,17 @@ module FastlaneCore
322
322
  proj << "-configuration #{options[:configuration].shellescape}" if options[:configuration]
323
323
  proj << "-derivedDataPath #{options[:derived_data_path].shellescape}" if options[:derived_data_path]
324
324
  proj << "-xcconfig #{options[:xcconfig].shellescape}" if options[:xcconfig]
325
+ proj << "-scmProvider system" if options[:use_system_scm]
325
326
 
326
- if FastlaneCore::Helper.xcode_at_least?('11.0') && options[:cloned_source_packages_path]
327
+ xcode_at_least_11 = FastlaneCore::Helper.xcode_at_least?('11.0')
328
+ if xcode_at_least_11 && options[:cloned_source_packages_path]
327
329
  proj << "-clonedSourcePackagesDirPath #{options[:cloned_source_packages_path].shellescape}"
328
330
  end
329
331
 
332
+ if xcode_at_least_11 && options[:disable_package_automatic_updates]
333
+ proj << "-disableAutomaticPackageResolution"
334
+ end
335
+
330
336
  return proj
331
337
  end
332
338
 
@@ -350,6 +356,7 @@ module FastlaneCore
350
356
  end
351
357
 
352
358
  def build_xcodebuild_resolvepackagedependencies_command
359
+ return nil if options[:skip_package_dependencies_resolution]
353
360
  command = "xcodebuild -resolvePackageDependencies #{xcodebuild_parameters.join(' ')}"
354
361
  command += " 2> /dev/null" if xcodebuild_suppress_stderr
355
362
  command
@@ -369,10 +376,16 @@ module FastlaneCore
369
376
 
370
377
  # SwiftPM support
371
378
  if FastlaneCore::Helper.xcode_at_least?('11.0')
372
- UI.important("Resolving Swift Package Manager dependencies...")
373
- FastlaneCore::CommandExecutor.execute(command: build_xcodebuild_resolvepackagedependencies_command,
374
- print_all: true,
375
- print_command: !self.xcodebuild_list_silent)
379
+ if (command = build_xcodebuild_resolvepackagedependencies_command)
380
+ UI.important("Resolving Swift Package Manager dependencies...")
381
+ FastlaneCore::CommandExecutor.execute(
382
+ command: command,
383
+ print_all: true,
384
+ print_command: !self.xcodebuild_list_silent
385
+ )
386
+ else
387
+ UI.important("Skipped Swift Package Manager dependencies resolution.")
388
+ end
376
389
  end
377
390
 
378
391
  command = build_xcodebuild_showbuildsettings_command
@@ -45,6 +45,8 @@ module Frameit
45
45
  GREEN ||= "Green"
46
46
  PINK ||= "Pink"
47
47
  PURPLE ||= "Purple"
48
+ GRAPHITE ||= "Graphite"
49
+ PACIFIC_BLUE ||= "Pacific Blue"
48
50
 
49
51
  def self.all_colors
50
52
  Color.constants.map { |c| Color.const_get(c).upcase.gsub(' ', '_') }
@@ -110,7 +112,7 @@ module Frameit
110
112
  IPHONE_7 ||= Frameit::Device.new("iphone-7", "Apple iPhone 7", 5, [[750, 1334], [1334, 750]], 326, Color::MATTE_BLACK, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_47, :use_legacy_iphone7)
111
113
  IPHONE_7_PLUS ||= Frameit::Device.new("iphone-7-plus", "Apple iPhone 7 Plus", 5, [[1242, 2208], [2208, 1242]], 401, Color::MATTE_BLACK, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_55, :use_legacy_iphone7)
112
114
  IPHONE_8 ||= Frameit::Device.new("iphone-8", "Apple iPhone 8", 6, [[750, 1334], [1334, 750]], 326, Color::SPACE_GRAY)
113
- IPHONE_8_PLUS ||= Frameit::Device.new("iphone-8-plus", "Apple iPhone 8 Plus", 6, [[1080, 1920], [1920, 1080]], 401, Color::SPACE_GRAY)
115
+ IPHONE_8_PLUS ||= Frameit::Device.new("iphone-8-plus", "Apple iPhone 8 Plus", 6, [[1242, 2208], [2208, 1242]], 401, Color::SPACE_GRAY)
114
116
  IPHONE_X ||= Frameit::Device.new("iphone-X", "Apple iPhone X", 7, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonex)
115
117
  IPHONE_XS ||= Frameit::Device.new("iphone-XS", "Apple iPhone XS", 8, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonexs)
116
118
  IPHONE_XR ||= Frameit::Device.new("iphone-XR", "Apple iPhone XR", 8, [[828, 1792], [1792, 828]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_61, :use_legacy_iphonexr)
@@ -118,6 +120,10 @@ module Frameit
118
120
  IPHONE_11 ||= Frameit::Device.new("iphone-11", "Apple iPhone 11", 9, [[828, 1792], [1792, 828]], 326, Color::BLACK, Platform::IOS)
119
121
  IPHONE_11_PRO ||= Frameit::Device.new("iphone-11-pro", "Apple iPhone 11 Pro", 9, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS)
120
122
  IPHONE_11_PRO_MAX ||= Frameit::Device.new("iphone11-pro-max", "Apple iPhone 11 Pro Max", 9, [[1242, 2688], [2688, 1242]], 458, Color::SPACE_GRAY, Platform::IOS)
123
+ IPHONE_12 ||= Frameit::Device.new("iphone-12", "Apple iPhone 12", 10, [[1170, 2532], [2532, 1170]], 460, Color::BLACK, Platform::IOS)
124
+ IPHONE_12_PRO ||= Frameit::Device.new("iphone-12-pro", "Apple iPhone 12 Pro", 10, [[1170, 2532], [2532, 1170]], 460, Color::SPACE_GRAY, Platform::IOS)
125
+ IPHONE_12_PRO_MAX ||= Frameit::Device.new("iphone12-pro-max", "Apple iPhone 12 Pro Max", 10, [[1284, 2778], [2778, 1284]], 458, Color::GRAPHITE, Platform::IOS)
126
+ IPHONE_12_MINI ||= Frameit::Device.new("iphone-12-mini", "Apple iPhone 12 Mini", 10, [[1125, 2436], [2436, 1125]], 476, Color::BLACK, Platform::IOS)
121
127
  IPAD_10_2 ||= Frameit::Device.new("ipad-10-2", "Apple iPad 10.2", 1, [[1620, 2160], [2160, 1620]], 264, Color::SPACE_GRAY, Platform::IOS)
122
128
  IPAD_AIR_2 ||= Frameit::Device.new("ipad-air-2", "Apple iPad Air 2", 1, [[1536, 2048], [2048, 1536]], 264, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD)
123
129
  IPAD_AIR_2019 ||= Frameit::Device.new("ipad-air-2019", "Apple iPad Air (2019)", 2, [[1668, 2224], [2224, 1668]], 265, Color::SPACE_GRAY, Platform::IOS)
@@ -39,7 +39,9 @@ module Gym
39
39
  options << "-destination '#{config[:destination]}'" if config[:destination]
40
40
  options << "-archivePath #{archive_path.shellescape}" unless config[:skip_archive]
41
41
  options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
42
- options << "-scmProvider system" if config[:use_system_scm]
42
+ if config[:use_system_scm] && !options.include?("-scmProvider system")
43
+ options << "-scmProvider system"
44
+ end
43
45
  options << config[:xcargs] if config[:xcargs]
44
46
  options << "OTHER_SWIFT_FLAGS=\"-Xfrontend -debug-time-function-bodies\"" if config[:analyze_build_time]
45
47
 
@@ -105,11 +105,11 @@ module Gym
105
105
  FastlaneCore::ConfigItem.new(key: :export_method,
106
106
  short_option: "-j",
107
107
  env_name: "GYM_EXPORT_METHOD",
108
- description: "Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id",
108
+ description: "Method used to export the archive. Valid values are: app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application",
109
109
  type: String,
110
110
  optional: true,
111
111
  verify_block: proc do |value|
112
- av = %w(app-store ad-hoc package enterprise development developer-id)
112
+ av = %w(app-store validation ad-hoc package enterprise development developer-id mac-application)
113
113
  UI.user_error!("Unsupported export_method '#{value}', must be: #{av}") unless av.include?(value)
114
114
  end),
115
115
  FastlaneCore::ConfigItem.new(key: :export_options,
@@ -280,6 +280,16 @@ module Gym
280
280
  description: "Sets a custom path for Swift Package Manager dependencies",
281
281
  type: String,
282
282
  optional: true),
283
+ FastlaneCore::ConfigItem.new(key: :skip_package_dependencies_resolution,
284
+ env_name: "GYM_SKIP_PACKAGE_DEPENDENCIES_RESOLUTION",
285
+ description: "Skips resolution of Swift Package Manager dependencies",
286
+ type: Boolean,
287
+ default_value: false),
288
+ FastlaneCore::ConfigItem.new(key: :disable_package_automatic_updates,
289
+ env_name: "GYM_DISABLE_PACKAGE_AUTOMATIC_UPDATES",
290
+ description: "Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file",
291
+ type: Boolean,
292
+ default_value: false),
283
293
  FastlaneCore::ConfigItem.new(key: :use_system_scm,
284
294
  env_name: "GYM_USE_SYSTEM_SCM",
285
295
  description: "Lets xcodebuild use system's scm configuration",
@@ -451,6 +451,16 @@ module Scan
451
451
  description: "Sets a custom path for Swift Package Manager dependencies",
452
452
  type: String,
453
453
  optional: true),
454
+ FastlaneCore::ConfigItem.new(key: :skip_package_dependencies_resolution,
455
+ env_name: "SCAN_SKIP_PACKAGE_DEPENDENCIES_RESOLUTION",
456
+ description: "Skips resolution of Swift Package Manager dependencies",
457
+ type: Boolean,
458
+ default_value: false),
459
+ FastlaneCore::ConfigItem.new(key: :disable_package_automatic_updates,
460
+ env_name: "SCAN_DISABLE_PACKAGE_AUTOMATIC_UPDATES",
461
+ description: "Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file",
462
+ type: Boolean,
463
+ default_value: false),
454
464
  FastlaneCore::ConfigItem.new(key: :use_system_scm,
455
465
  env_name: "SCAN_USE_SYSTEM_SCM",
456
466
  description: "Lets xcodebuild use system's scm configuration",