fastlane 2.189.0 → 2.193.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -92
  3. data/deliver/lib/deliver/app_screenshot.rb +2 -1
  4. data/deliver/lib/deliver/app_screenshot_iterator.rb +2 -2
  5. data/deliver/lib/deliver/loader.rb +1 -1
  6. data/deliver/lib/deliver/options.rb +6 -0
  7. data/deliver/lib/deliver/runner.rb +9 -1
  8. data/deliver/lib/deliver/screenshot_comparable.rb +62 -0
  9. data/deliver/lib/deliver/sync_screenshots.rb +200 -0
  10. data/fastlane/lib/assets/completions/completion.bash +4 -1
  11. data/fastlane/lib/assets/completions/completion.zsh +6 -5
  12. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/bundle_install.rb +13 -1
  14. data/fastlane/lib/fastlane/actions/clean_cocoapods_cache.rb +25 -1
  15. data/fastlane/lib/fastlane/actions/create_xcframework.rb +97 -17
  16. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +2 -2
  17. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +2 -2
  18. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/notarize.rb +77 -1
  20. data/fastlane/lib/fastlane/actions/push_git_tags.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +3 -1
  23. data/fastlane/lib/fastlane/actions/zip.rb +86 -21
  24. data/fastlane/lib/fastlane/features.rb +3 -0
  25. data/fastlane/lib/fastlane/version.rb +1 -1
  26. data/fastlane/swift/Deliverfile.swift +1 -1
  27. data/fastlane/swift/DeliverfileProtocol.swift +5 -1
  28. data/fastlane/swift/Fastlane.swift +121 -25
  29. data/fastlane/swift/Gymfile.swift +1 -1
  30. data/fastlane/swift/GymfileProtocol.swift +1 -1
  31. data/fastlane/swift/Matchfile.swift +1 -1
  32. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  33. data/fastlane/swift/Precheckfile.swift +1 -1
  34. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  35. data/fastlane/swift/Scanfile.swift +1 -1
  36. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  37. data/fastlane/swift/Screengrabfile.swift +1 -1
  38. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  39. data/fastlane/swift/Snapshotfile.swift +1 -1
  40. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  41. data/fastlane/swift/formatting/Brewfile.lock.json +9 -9
  42. data/fastlane_core/lib/fastlane_core/build_watcher.rb +25 -6
  43. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +11 -4
  44. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +1 -0
  45. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +41 -0
  46. data/match/lib/match/runner.rb +5 -5
  47. data/match/lib/match/storage/.git_storage.rb.swp +0 -0
  48. data/match/lib/match/storage/.interface.rb.swp +0 -0
  49. data/pilot/lib/pilot/build_manager.rb +14 -4
  50. data/pilot/lib/pilot/manager.rb +3 -1
  51. data/pilot/lib/pilot/options.rb +20 -1
  52. data/produce/lib/produce/commands_generator.rb +28 -0
  53. data/produce/lib/produce/service.rb +16 -1
  54. data/scan/lib/scan/xcpretty_reporter_options_generator.rb +1 -1
  55. data/sigh/lib/sigh/options.rb +2 -1
  56. data/spaceship/lib/spaceship/client.rb +6 -0
  57. data/spaceship/lib/spaceship/connect_api/api_client.rb +15 -1
  58. data/spaceship/lib/spaceship/connect_api/models/app.rb +9 -1
  59. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
  60. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
  61. data/spaceship/lib/spaceship/connect_api/models/capabilities.rb +27 -0
  62. data/spaceship/lib/spaceship/connect_api/models/user.rb +17 -3
  63. data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +26 -5
  64. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +5 -0
  65. data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
  66. data/spaceship/lib/spaceship/connect_api/testflight/client.rb +3 -0
  67. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +46 -5
  68. data/spaceship/lib/spaceship/connect_api/token.rb +4 -1
  69. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +3 -0
  70. data/spaceship/lib/spaceship/connect_api/users/client.rb +3 -0
  71. data/spaceship/lib/spaceship/connect_api/users/users.rb +58 -3
  72. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  73. data/spaceship/lib/spaceship/tunes/tunes_client.rb +3 -0
  74. data/supply/lib/supply/client.rb +38 -5
  75. data/supply/lib/supply/options.rb +7 -0
  76. data/supply/lib/supply/uploader.rb +1 -1
  77. metadata +39 -19
@@ -82,7 +82,7 @@ module Fastlane
82
82
  def self.output
83
83
  [
84
84
  ['MATCH_PROVISIONING_PROFILE_MAPPING', 'The match provisioning profile mapping'],
85
- ['SIGH_PROFILE_TYPE', 'The profile type, can be appstore, adhoc, development, enterprise']
85
+ ['SIGH_PROFILE_TYPE', 'The profile type, can be app-store, ad-hoc, development, enterprise, can be used in `build_app` as a default value for `export_method`']
86
86
  ]
87
87
  end
88
88
 
@@ -13,6 +13,8 @@ module Fastlane
13
13
  unless distribute_only
14
14
  values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
15
15
  values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
16
+ values[:pkg] ||= Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
17
+ values[:pkg] = File.expand_path(values[:pkg]) if values[:pkg]
16
18
  end
17
19
 
18
20
  # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
@@ -117,7 +119,7 @@ module Fastlane
117
119
  end
118
120
 
119
121
  def self.is_supported?(platform)
120
- [:ios].include?(platform)
122
+ [:ios, :mac, :tvos].include?(platform)
121
123
  end
122
124
  end
123
125
  end
@@ -1,35 +1,76 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  class ZipAction < Action
4
- def self.run(params)
5
- UI.message("Compressing #{params[:path]}...")
4
+ class Runner
5
+ attr_reader :output_path, :path, :verbose, :password, :symlinks, :include, :exclude
6
+
7
+ def initialize(params)
8
+ @output_path = File.expand_path(params[:output_path] || params[:path])
9
+ @path = params[:path]
10
+ @verbose = params[:verbose]
11
+ @password = params[:password]
12
+ @symlinks = params[:symlinks]
13
+ @include = params[:include] || []
14
+ @exclude = params[:exclude] || []
15
+
16
+ @output_path += ".zip" unless @output_path.end_with?(".zip")
17
+ end
18
+
19
+ def run
20
+ UI.message("Compressing #{path}...")
6
21
 
7
- params[:output_path] ||= params[:path]
22
+ create_output_dir
23
+ run_zip_command
8
24
 
9
- absolute_output_path = File.expand_path(params[:output_path])
25
+ UI.success("Successfully generated zip file at path '#{output_path}'")
26
+ output_path
27
+ end
10
28
 
11
- # Appends ".zip" if path does not end in ".zip"
12
- unless absolute_output_path.end_with?(".zip")
13
- absolute_output_path += ".zip"
29
+ def create_output_dir
30
+ output_dir = File.expand_path("..", output_path)
31
+ FileUtils.mkdir_p(output_dir)
14
32
  end
15
33
 
16
- absolute_output_dir = File.expand_path("..", absolute_output_path)
17
- FileUtils.mkdir_p(absolute_output_dir)
34
+ def run_zip_command
35
+ # The 'zip' command archives relative to the working directory, chdir to produce expected results relative to `path`
36
+ Dir.chdir(File.expand_path("..", path)) do
37
+ Actions.sh(*zip_command)
38
+ end
39
+ end
40
+
41
+ def zip_command
42
+ zip_options = verbose ? "r" : "rq"
43
+ zip_options += "y" if symlinks
44
+
45
+ command = ["zip", "-#{zip_options}"]
46
+
47
+ if password
48
+ command << "-P"
49
+ command << password
50
+ end
51
+
52
+ # The zip command is executed from the paths **parent** directory, as a result we use just the basename, which is the file or folder within
53
+ basename = File.basename(path)
18
54
 
19
- Dir.chdir(File.expand_path("..", params[:path])) do # required to properly zip
20
- zip_options = params[:verbose] ? "r" : "rq"
21
- zip_options += "y" if params[:symlinks]
55
+ command << output_path
56
+ command << basename
22
57
 
23
- if params[:password]
24
- password_option = "-P '#{params[:password]}'"
25
- Actions.sh("zip -#{zip_options} #{password_option} #{absolute_output_path.shellescape} #{File.basename(params[:path]).shellescape}")
26
- else
27
- Actions.sh("zip -#{zip_options} #{absolute_output_path.shellescape} #{File.basename(params[:path]).shellescape}")
58
+ unless include.empty?
59
+ command << "-i"
60
+ command += include.map { |path| File.join(basename, path) }
28
61
  end
62
+
63
+ unless exclude.empty?
64
+ command << "-x"
65
+ command += exclude.map { |path| File.join(basename, path) }
66
+ end
67
+
68
+ command
29
69
  end
70
+ end
30
71
 
31
- UI.success("Successfully generated zip file at path '#{File.expand_path(absolute_output_path)}'")
32
- return File.expand_path(absolute_output_path)
72
+ def self.run(params)
73
+ Runner.new(params).run
33
74
  end
34
75
 
35
76
  #####################################################
@@ -46,7 +87,8 @@ module Fastlane
46
87
  env_name: "FL_ZIP_PATH",
47
88
  description: "Path to the directory or file to be zipped",
48
89
  verify_block: proc do |value|
49
- UI.user_error!("Couldn't find file/folder at path '#{File.expand_path(value)}'") unless File.exist?(value)
90
+ path = File.expand_path(value)
91
+ UI.user_error!("Couldn't find file/folder at path '#{path}'") unless File.exist?(path)
50
92
  end),
51
93
  FastlaneCore::ConfigItem.new(key: :output_path,
52
94
  env_name: "FL_ZIP_OUTPUT_NAME",
@@ -67,7 +109,19 @@ module Fastlane
67
109
  description: "Store symbolic links as such in the zip archive",
68
110
  optional: true,
69
111
  type: Boolean,
70
- default_value: false)
112
+ default_value: false),
113
+ FastlaneCore::ConfigItem.new(key: :include,
114
+ env_name: "FL_ZIP_INCLUDE",
115
+ description: "Array of paths or patterns to include",
116
+ optional: true,
117
+ type: Array,
118
+ default_value: []),
119
+ FastlaneCore::ConfigItem.new(key: :exclude,
120
+ env_name: "FL_ZIP_EXCLUDE",
121
+ description: "Array of paths or patterns to exclude",
122
+ optional: true,
123
+ type: Array,
124
+ default_value: [])
71
125
  ]
72
126
  end
73
127
 
@@ -88,6 +142,17 @@ module Fastlane
88
142
  output_path: "Latest.app.zip",
89
143
  verbose: false,
90
144
  symlinks: true
145
+ )',
146
+ 'zip(
147
+ path: "./",
148
+ output_path: "Source Code.zip",
149
+ exclude: [".git/*"]
150
+ )',
151
+ 'zip(
152
+ path: "./",
153
+ output_path: "Swift Code.zip",
154
+ include: ["**/*.swift"],
155
+ exclude: ["Package.swift", "vendor/*", "Pods/*"]
91
156
  )'
92
157
  ]
93
158
  end
@@ -2,3 +2,6 @@
2
2
 
3
3
  # FastlaneCore::Feature.register(env_var: 'YOUR_FEATURE_SWITCH_ENV_VAR',
4
4
  # description: 'Describe what this feature switch controls')
5
+
6
+ FastlaneCore::Feature.register(env_var: 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS',
7
+ description: 'Use a newly implemented screenshots synchronization logic')
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.189.0'.freeze
2
+ VERSION = '2.193.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.189.0
20
+ // Generated with fastlane 2.193.0
@@ -59,6 +59,9 @@ public protocol DeliverfileProtocol: class {
59
59
  /// Clear all previously uploaded screenshots before uploading the new ones
60
60
  var overwriteScreenshots: Bool { get }
61
61
 
62
+ /// Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
63
+ var syncScreenshots: Bool { get }
64
+
62
65
  /// Submit the new version for Review after uploading everything
63
66
  var submitForReview: Bool { get }
64
67
 
@@ -209,6 +212,7 @@ public extension DeliverfileProtocol {
209
212
  var skipAppVersionUpdate: Bool { return false }
210
213
  var force: Bool { return false }
211
214
  var overwriteScreenshots: Bool { return false }
215
+ var syncScreenshots: Bool { return false }
212
216
  var submitForReview: Bool { return false }
213
217
  var rejectIfPossible: Bool { return false }
214
218
  var automaticRelease: Bool? { return nil }
@@ -256,4 +260,4 @@ public extension DeliverfileProtocol {
256
260
 
257
261
  // Please don't remove the lines below
258
262
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.77]
263
+ // FastlaneRunnerAPIVersion [0.9.81]
@@ -204,7 +204,7 @@ public func appStoreConnectApiKey(keyId: String,
204
204
  keyFilepath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
205
205
  keyContent: OptionalConfigValue<String?> = .fastlaneDefault(nil),
206
206
  isKeyContentBase64: OptionalConfigValue<Bool> = .fastlaneDefault(false),
207
- duration: Int = 1200,
207
+ duration: Int = 500,
208
208
  inHouse: OptionalConfigValue<Bool> = .fastlaneDefault(false),
209
209
  setSpaceshipToken: OptionalConfigValue<Bool> = .fastlaneDefault(true))
210
210
  {
@@ -661,6 +661,7 @@ public func appledoc(input: [String],
661
661
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
662
662
  - force: Skip verification of HTML preview file
663
663
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
664
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
664
665
  - submitForReview: Submit the new version for Review after uploading everything
665
666
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
666
667
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
@@ -731,6 +732,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
731
732
  skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(false),
732
733
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
733
734
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
735
+ syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
734
736
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
735
737
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
736
738
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
@@ -794,6 +796,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
794
796
  let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
795
797
  let forceArg = force.asRubyArgument(name: "force", type: nil)
796
798
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
799
+ let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
797
800
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
798
801
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
799
802
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
@@ -856,6 +859,7 @@ public func appstore(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault
856
859
  skipAppVersionUpdateArg,
857
860
  forceArg,
858
861
  overwriteScreenshotsArg,
862
+ syncScreenshotsArg,
859
863
  submitForReviewArg,
860
864
  rejectIfPossibleArg,
861
865
  automaticReleaseArg,
@@ -1888,6 +1892,8 @@ public func buildAndroidApp(task: OptionalConfigValue<String?> = .fastlaneDefaul
1888
1892
  - trustPolicy: Sets level of security when dealing with signed gems. Accepts `LowSecurity`, `MediumSecurity` and `HighSecurity` as values
1889
1893
  - without: Exclude gems that are part of the specified named group
1890
1894
  - with: Include gems that are part of the specified named group
1895
+ - frozen: Don't allow the Gemfile.lock to be updated after install
1896
+ - redownload: Force download every gem, even if the required versions are already available locally
1891
1897
  */
1892
1898
  public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1893
1899
  clean: OptionalConfigValue<Bool> = .fastlaneDefault(false),
@@ -1906,7 +1912,9 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
1906
1912
  standalone: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1907
1913
  trustPolicy: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1908
1914
  without: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1909
- with: OptionalConfigValue<String?> = .fastlaneDefault(nil))
1915
+ with: OptionalConfigValue<String?> = .fastlaneDefault(nil),
1916
+ frozen: OptionalConfigValue<Bool> = .fastlaneDefault(false),
1917
+ redownload: OptionalConfigValue<Bool> = .fastlaneDefault(false))
1910
1918
  {
1911
1919
  let binstubsArg = binstubs.asRubyArgument(name: "binstubs", type: nil)
1912
1920
  let cleanArg = clean.asRubyArgument(name: "clean", type: nil)
@@ -1926,6 +1934,8 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
1926
1934
  let trustPolicyArg = trustPolicy.asRubyArgument(name: "trust_policy", type: nil)
1927
1935
  let withoutArg = without.asRubyArgument(name: "without", type: nil)
1928
1936
  let withArg = with.asRubyArgument(name: "with", type: nil)
1937
+ let frozenArg = frozen.asRubyArgument(name: "frozen", type: nil)
1938
+ let redownloadArg = redownload.asRubyArgument(name: "redownload", type: nil)
1929
1939
  let array: [RubyCommand.Argument?] = [binstubsArg,
1930
1940
  cleanArg,
1931
1941
  fullIndexArg,
@@ -1943,7 +1953,9 @@ public func bundleInstall(binstubs: OptionalConfigValue<String?> = .fastlaneDefa
1943
1953
  standaloneArg,
1944
1954
  trustPolicyArg,
1945
1955
  withoutArg,
1946
- withArg]
1956
+ withArg,
1957
+ frozenArg,
1958
+ redownloadArg]
1947
1959
  let args: [RubyCommand.Argument] = array
1948
1960
  .filter { $0?.value != nil }
1949
1961
  .compactMap { $0 }
@@ -2854,11 +2866,29 @@ public func cleanBuildArtifacts(excludePattern: OptionalConfigValue<String?> = .
2854
2866
  /**
2855
2867
  Remove the cache for pods
2856
2868
 
2857
- - parameter name: Pod name to be removed from cache
2869
+ - parameters:
2870
+ - name: Pod name to be removed from cache
2871
+ - noAnsi: Show output without ANSI codes
2872
+ - verbose: Show more debugging information
2873
+ - silent: Show nothing
2874
+ - allowRoot: Allows CocoaPods to run as root
2858
2875
  */
2859
- public func cleanCocoapodsCache(name: OptionalConfigValue<String?> = .fastlaneDefault(nil)) {
2876
+ public func cleanCocoapodsCache(name: OptionalConfigValue<String?> = .fastlaneDefault(nil),
2877
+ noAnsi: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2878
+ verbose: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2879
+ silent: OptionalConfigValue<Bool> = .fastlaneDefault(false),
2880
+ allowRoot: OptionalConfigValue<Bool> = .fastlaneDefault(false))
2881
+ {
2860
2882
  let nameArg = name.asRubyArgument(name: "name", type: nil)
2861
- let array: [RubyCommand.Argument?] = [nameArg]
2883
+ let noAnsiArg = noAnsi.asRubyArgument(name: "no_ansi", type: nil)
2884
+ let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
2885
+ let silentArg = silent.asRubyArgument(name: "silent", type: nil)
2886
+ let allowRootArg = allowRoot.asRubyArgument(name: "allow_root", type: nil)
2887
+ let array: [RubyCommand.Argument?] = [nameArg,
2888
+ noAnsiArg,
2889
+ verboseArg,
2890
+ silentArg,
2891
+ allowRootArg]
2862
2892
  let args: [RubyCommand.Argument] = array
2863
2893
  .filter { $0?.value != nil }
2864
2894
  .compactMap { $0 }
@@ -3474,37 +3504,63 @@ public func createPullRequest(apiToken: OptionalConfigValue<String?> = .fastlane
3474
3504
  Package multiple build configs of a library/framework into a single xcframework
3475
3505
 
3476
3506
  - parameters:
3477
- - frameworks: Frameworks to add to the target xcframework
3478
- - libraries: Libraries to add to the target xcframework, with their corresponding headers
3507
+ - frameworks: Frameworks (without dSYMs) to add to the target xcframework
3508
+ - frameworksWithDsyms: Frameworks (with dSYMs) to add to the target xcframework
3509
+ - libraries: Libraries (without headers or dSYMs) to add to the target xcframework
3510
+ - librariesWithHeadersOrDsyms: Libraries (with headers or dSYMs) to add to the target xcframework
3479
3511
  - output: The path to write the xcframework to
3480
3512
  - allowInternalDistribution: Specifies that the created xcframework contains information not suitable for public distribution
3481
3513
 
3482
3514
  Utility for packaging multiple build configurations of a given library
3483
3515
  or framework into a single xcframework.
3484
3516
 
3485
- If you want to package several frameworks just provide an array containing
3486
- the list of frameworks to be packaged using the :frameworks parameter.
3517
+ If you want to package several frameworks just provide one of:
3518
+
3519
+ * An array containing the list of frameworks using the :frameworks parameter
3520
+ (if they have no associated dSYMs):
3521
+ ['FrameworkA.framework', 'FrameworkB.framework']
3522
+
3523
+ * A hash containing the list of frameworks with their dSYMs using the
3524
+ :frameworks_with_dsyms parameter:
3525
+ {
3526
+ 'FrameworkA.framework' => {},
3527
+ 'FrameworkB.framework' => { dsyms: 'FrameworkB.framework.dSYM' }
3528
+ }
3529
+
3530
+ If you want to package several libraries just provide one of:
3487
3531
 
3488
- If you want to package several libraries with their corresponding headers
3489
- provide a hash containing the library as the key and the directory containing
3490
- its headers as the value (or an empty string if there are no headers associated
3491
- with the provided library).
3532
+ * An array containing the list of libraries using the :libraries parameter
3533
+ (if they have no associated headers or dSYMs):
3534
+ ['LibraryA.so', 'LibraryB.so']
3535
+
3536
+ * A hash containing the list of libraries with their headers and dSYMs
3537
+ using the :libraries_with_headers_or_dsyms parameter:
3538
+ {
3539
+ 'LibraryA.so' => { dsyms: 'libraryA.so.dSYM' },
3540
+ 'LibraryB.so' => { headers: 'headers' }
3541
+ }
3492
3542
 
3493
3543
  Finally specify the location of the xcframework to be generated using the :output
3494
3544
  parameter.
3495
3545
 
3496
3546
  */
3497
3547
  public func createXcframework(frameworks: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
3498
- libraries: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
3548
+ frameworksWithDsyms: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
3549
+ libraries: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
3550
+ librariesWithHeadersOrDsyms: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
3499
3551
  output: String,
3500
3552
  allowInternalDistribution: OptionalConfigValue<Bool> = .fastlaneDefault(false))
3501
3553
  {
3502
3554
  let frameworksArg = frameworks.asRubyArgument(name: "frameworks", type: nil)
3555
+ let frameworksWithDsymsArg = frameworksWithDsyms.asRubyArgument(name: "frameworks_with_dsyms", type: nil)
3503
3556
  let librariesArg = libraries.asRubyArgument(name: "libraries", type: nil)
3557
+ let librariesWithHeadersOrDsymsArg = librariesWithHeadersOrDsyms.asRubyArgument(name: "libraries_with_headers_or_dsyms", type: nil)
3504
3558
  let outputArg = RubyCommand.Argument(name: "output", value: output, type: nil)
3505
3559
  let allowInternalDistributionArg = allowInternalDistribution.asRubyArgument(name: "allow_internal_distribution", type: nil)
3506
3560
  let array: [RubyCommand.Argument?] = [frameworksArg,
3561
+ frameworksWithDsymsArg,
3507
3562
  librariesArg,
3563
+ librariesWithHeadersOrDsymsArg,
3508
3564
  outputArg,
3509
3565
  allowInternalDistributionArg]
3510
3566
  let args: [RubyCommand.Argument] = array
@@ -3642,6 +3698,7 @@ public func deleteKeychain(name: OptionalConfigValue<String?> = .fastlaneDefault
3642
3698
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
3643
3699
  - force: Skip verification of HTML preview file
3644
3700
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
3701
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
3645
3702
  - submitForReview: Submit the new version for Review after uploading everything
3646
3703
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
3647
3704
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
@@ -3712,6 +3769,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3712
3769
  skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.skipAppVersionUpdate),
3713
3770
  force: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.force),
3714
3771
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.overwriteScreenshots),
3772
+ syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.syncScreenshots),
3715
3773
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.submitForReview),
3716
3774
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(deliverfile.rejectIfPossible),
3717
3775
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(deliverfile.automaticRelease),
@@ -3775,6 +3833,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3775
3833
  let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
3776
3834
  let forceArg = force.asRubyArgument(name: "force", type: nil)
3777
3835
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
3836
+ let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
3778
3837
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
3779
3838
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
3780
3839
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
@@ -3837,6 +3896,7 @@ public func deliver(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(
3837
3896
  skipAppVersionUpdateArg,
3838
3897
  forceArg,
3839
3898
  overwriteScreenshotsArg,
3899
+ syncScreenshotsArg,
3840
3900
  submitForReviewArg,
3841
3901
  rejectIfPossibleArg,
3842
3902
  automaticReleaseArg,
@@ -7069,6 +7129,7 @@ public func nexusUpload(file: String,
7069
7129
 
7070
7130
  - parameters:
7071
7131
  - package: Path to package to notarize, e.g. .app bundle or disk image
7132
+ - useNotarytool: Whether to `xcrun notarytool` or `xcrun altool`
7072
7133
  - tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
7073
7134
  - bundleId: Bundle identifier to uniquely identify the package
7074
7135
  - username: Apple ID username
@@ -7078,6 +7139,7 @@ public func nexusUpload(file: String,
7078
7139
  - apiKeyPath: Path to AppStore Connect API key
7079
7140
  */
7080
7141
  public func notarize(package: String,
7142
+ useNotarytool: OptionalConfigValue<Bool> = .fastlaneDefault(true),
7081
7143
  tryEarlyStapling: OptionalConfigValue<Bool> = .fastlaneDefault(false),
7082
7144
  bundleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7083
7145
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -7087,6 +7149,7 @@ public func notarize(package: String,
7087
7149
  apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil))
7088
7150
  {
7089
7151
  let packageArg = RubyCommand.Argument(name: "package", value: package, type: nil)
7152
+ let useNotarytoolArg = useNotarytool.asRubyArgument(name: "use_notarytool", type: nil)
7090
7153
  let tryEarlyStaplingArg = tryEarlyStapling.asRubyArgument(name: "try_early_stapling", type: nil)
7091
7154
  let bundleIdArg = bundleId.asRubyArgument(name: "bundle_id", type: nil)
7092
7155
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
@@ -7095,6 +7158,7 @@ public func notarize(package: String,
7095
7158
  let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
7096
7159
  let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
7097
7160
  let array: [RubyCommand.Argument?] = [packageArg,
7161
+ useNotarytoolArg,
7098
7162
  tryEarlyStaplingArg,
7099
7163
  bundleIdArg,
7100
7164
  usernameArg,
@@ -7444,6 +7508,7 @@ public func pem(development: OptionalConfigValue<Bool> = .fastlaneDefault(false)
7444
7508
  - appPlatform: The platform to use (optional)
7445
7509
  - appleId: Apple ID property in the App Information section in App Store Connect
7446
7510
  - ipa: Path to the ipa file to upload
7511
+ - pkg: Path to your pkg file
7447
7512
  - demoAccountRequired: Do you need a demo account when Apple does review?
7448
7513
  - betaAppReviewInfo: Beta app review information for contact info and demo account
7449
7514
  - localizedAppInfo: Localized beta app test info for description, feedback email, marketing url, and privacy policy
@@ -7482,9 +7547,10 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7482
7547
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
7483
7548
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7484
7549
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7485
- appPlatform: String = "ios",
7550
+ appPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7486
7551
  appleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7487
7552
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7553
+ pkg: OptionalConfigValue<String?> = .fastlaneDefault(nil),
7488
7554
  demoAccountRequired: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
7489
7555
  betaAppReviewInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
7490
7556
  localizedAppInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -7520,9 +7586,10 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7520
7586
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
7521
7587
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
7522
7588
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
7523
- let appPlatformArg = RubyCommand.Argument(name: "app_platform", value: appPlatform, type: nil)
7589
+ let appPlatformArg = appPlatform.asRubyArgument(name: "app_platform", type: nil)
7524
7590
  let appleIdArg = appleId.asRubyArgument(name: "apple_id", type: nil)
7525
7591
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
7592
+ let pkgArg = pkg.asRubyArgument(name: "pkg", type: nil)
7526
7593
  let demoAccountRequiredArg = demoAccountRequired.asRubyArgument(name: "demo_account_required", type: nil)
7527
7594
  let betaAppReviewInfoArg = betaAppReviewInfo.asRubyArgument(name: "beta_app_review_info", type: nil)
7528
7595
  let localizedAppInfoArg = localizedAppInfo.asRubyArgument(name: "localized_app_info", type: nil)
@@ -7560,6 +7627,7 @@ public func pilot(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(ni
7560
7627
  appPlatformArg,
7561
7628
  appleIdArg,
7562
7629
  ipaArg,
7630
+ pkgArg,
7563
7631
  demoAccountRequiredArg,
7564
7632
  betaAppReviewInfoArg,
7565
7633
  localizedAppInfoArg,
@@ -10638,6 +10706,7 @@ public func ssh(username: String,
10638
10706
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
10639
10707
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
10640
10708
  - changesNotSentForReview: Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI
10709
+ - rescueChangesNotSentForReview: Catches changes_not_sent_for_review errors when an edit is committed and retries with the configuration that the error message recommended
10641
10710
  - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
10642
10711
  - obbMainReferencesVersion: References version of 'main' expansion file
10643
10712
  - obbMainFileSize: Size of 'main' expansion file in bytes
@@ -10678,6 +10747,7 @@ public func supply(packageName: String,
10678
10747
  deactivateOnPromote: OptionalConfigValue<Bool> = .fastlaneDefault(true),
10679
10748
  versionCodesToRetain: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
10680
10749
  changesNotSentForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
10750
+ rescueChangesNotSentForReview: OptionalConfigValue<Bool> = .fastlaneDefault(true),
10681
10751
  inAppUpdatePriority: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
10682
10752
  obbMainReferencesVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
10683
10753
  obbMainFileSize: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -10716,6 +10786,7 @@ public func supply(packageName: String,
10716
10786
  let deactivateOnPromoteArg = deactivateOnPromote.asRubyArgument(name: "deactivate_on_promote", type: nil)
10717
10787
  let versionCodesToRetainArg = versionCodesToRetain.asRubyArgument(name: "version_codes_to_retain", type: nil)
10718
10788
  let changesNotSentForReviewArg = changesNotSentForReview.asRubyArgument(name: "changes_not_sent_for_review", type: nil)
10789
+ let rescueChangesNotSentForReviewArg = rescueChangesNotSentForReview.asRubyArgument(name: "rescue_changes_not_sent_for_review", type: nil)
10719
10790
  let inAppUpdatePriorityArg = inAppUpdatePriority.asRubyArgument(name: "in_app_update_priority", type: nil)
10720
10791
  let obbMainReferencesVersionArg = obbMainReferencesVersion.asRubyArgument(name: "obb_main_references_version", type: nil)
10721
10792
  let obbMainFileSizeArg = obbMainFileSize.asRubyArgument(name: "obb_main_file_size", type: nil)
@@ -10753,6 +10824,7 @@ public func supply(packageName: String,
10753
10824
  deactivateOnPromoteArg,
10754
10825
  versionCodesToRetainArg,
10755
10826
  changesNotSentForReviewArg,
10827
+ rescueChangesNotSentForReviewArg,
10756
10828
  inAppUpdatePriorityArg,
10757
10829
  obbMainReferencesVersionArg,
10758
10830
  obbMainFileSizeArg,
@@ -11122,6 +11194,7 @@ public func testfairy(apiKey: String,
11122
11194
  - appPlatform: The platform to use (optional)
11123
11195
  - appleId: Apple ID property in the App Information section in App Store Connect
11124
11196
  - ipa: Path to the ipa file to upload
11197
+ - pkg: Path to your pkg file
11125
11198
  - demoAccountRequired: Do you need a demo account when Apple does review?
11126
11199
  - betaAppReviewInfo: Beta app review information for contact info and demo account
11127
11200
  - localizedAppInfo: Localized beta app test info for description, feedback email, marketing url, and privacy policy
@@ -11160,9 +11233,10 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11160
11233
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11161
11234
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11162
11235
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11163
- appPlatform: String = "ios",
11236
+ appPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11164
11237
  appleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11165
11238
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11239
+ pkg: OptionalConfigValue<String?> = .fastlaneDefault(nil),
11166
11240
  demoAccountRequired: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
11167
11241
  betaAppReviewInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
11168
11242
  localizedAppInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -11198,9 +11272,10 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11198
11272
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
11199
11273
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
11200
11274
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
11201
- let appPlatformArg = RubyCommand.Argument(name: "app_platform", value: appPlatform, type: nil)
11275
+ let appPlatformArg = appPlatform.asRubyArgument(name: "app_platform", type: nil)
11202
11276
  let appleIdArg = appleId.asRubyArgument(name: "apple_id", type: nil)
11203
11277
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
11278
+ let pkgArg = pkg.asRubyArgument(name: "pkg", type: nil)
11204
11279
  let demoAccountRequiredArg = demoAccountRequired.asRubyArgument(name: "demo_account_required", type: nil)
11205
11280
  let betaAppReviewInfoArg = betaAppReviewInfo.asRubyArgument(name: "beta_app_review_info", type: nil)
11206
11281
  let localizedAppInfoArg = localizedAppInfo.asRubyArgument(name: "localized_app_info", type: nil)
@@ -11238,6 +11313,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11238
11313
  appPlatformArg,
11239
11314
  appleIdArg,
11240
11315
  ipaArg,
11316
+ pkgArg,
11241
11317
  demoAccountRequiredArg,
11242
11318
  betaAppReviewInfoArg,
11243
11319
  localizedAppInfoArg,
@@ -11978,6 +12054,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
11978
12054
  - skipAppVersionUpdate: Don’t create or update the app version that is being prepared for submission
11979
12055
  - force: Skip verification of HTML preview file
11980
12056
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
12057
+ - syncScreenshots: Sync screenshots with local ones. This is currently beta optionso set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well
11981
12058
  - submitForReview: Submit the new version for Review after uploading everything
11982
12059
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
11983
12060
  - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
@@ -12048,6 +12125,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12048
12125
  skipAppVersionUpdate: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12049
12126
  force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12050
12127
  overwriteScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12128
+ syncScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12051
12129
  submitForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12052
12130
  rejectIfPossible: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12053
12131
  automaticRelease: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
@@ -12111,6 +12189,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12111
12189
  let skipAppVersionUpdateArg = skipAppVersionUpdate.asRubyArgument(name: "skip_app_version_update", type: nil)
12112
12190
  let forceArg = force.asRubyArgument(name: "force", type: nil)
12113
12191
  let overwriteScreenshotsArg = overwriteScreenshots.asRubyArgument(name: "overwrite_screenshots", type: nil)
12192
+ let syncScreenshotsArg = syncScreenshots.asRubyArgument(name: "sync_screenshots", type: nil)
12114
12193
  let submitForReviewArg = submitForReview.asRubyArgument(name: "submit_for_review", type: nil)
12115
12194
  let rejectIfPossibleArg = rejectIfPossible.asRubyArgument(name: "reject_if_possible", type: nil)
12116
12195
  let automaticReleaseArg = automaticRelease.asRubyArgument(name: "automatic_release", type: nil)
@@ -12173,6 +12252,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12173
12252
  skipAppVersionUpdateArg,
12174
12253
  forceArg,
12175
12254
  overwriteScreenshotsArg,
12255
+ syncScreenshotsArg,
12176
12256
  submitForReviewArg,
12177
12257
  rejectIfPossibleArg,
12178
12258
  automaticReleaseArg,
@@ -12258,6 +12338,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
12258
12338
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
12259
12339
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
12260
12340
  - changesNotSentForReview: Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI
12341
+ - rescueChangesNotSentForReview: Catches changes_not_sent_for_review errors when an edit is committed and retries with the configuration that the error message recommended
12261
12342
  - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
12262
12343
  - obbMainReferencesVersion: References version of 'main' expansion file
12263
12344
  - obbMainFileSize: Size of 'main' expansion file in bytes
@@ -12298,6 +12379,7 @@ public func uploadToPlayStore(packageName: String,
12298
12379
  deactivateOnPromote: OptionalConfigValue<Bool> = .fastlaneDefault(true),
12299
12380
  versionCodesToRetain: OptionalConfigValue<[String]?> = .fastlaneDefault(nil),
12300
12381
  changesNotSentForReview: OptionalConfigValue<Bool> = .fastlaneDefault(false),
12382
+ rescueChangesNotSentForReview: OptionalConfigValue<Bool> = .fastlaneDefault(true),
12301
12383
  inAppUpdatePriority: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
12302
12384
  obbMainReferencesVersion: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12303
12385
  obbMainFileSize: OptionalConfigValue<String?> = .fastlaneDefault(nil),
@@ -12336,6 +12418,7 @@ public func uploadToPlayStore(packageName: String,
12336
12418
  let deactivateOnPromoteArg = deactivateOnPromote.asRubyArgument(name: "deactivate_on_promote", type: nil)
12337
12419
  let versionCodesToRetainArg = versionCodesToRetain.asRubyArgument(name: "version_codes_to_retain", type: nil)
12338
12420
  let changesNotSentForReviewArg = changesNotSentForReview.asRubyArgument(name: "changes_not_sent_for_review", type: nil)
12421
+ let rescueChangesNotSentForReviewArg = rescueChangesNotSentForReview.asRubyArgument(name: "rescue_changes_not_sent_for_review", type: nil)
12339
12422
  let inAppUpdatePriorityArg = inAppUpdatePriority.asRubyArgument(name: "in_app_update_priority", type: nil)
12340
12423
  let obbMainReferencesVersionArg = obbMainReferencesVersion.asRubyArgument(name: "obb_main_references_version", type: nil)
12341
12424
  let obbMainFileSizeArg = obbMainFileSize.asRubyArgument(name: "obb_main_file_size", type: nil)
@@ -12373,6 +12456,7 @@ public func uploadToPlayStore(packageName: String,
12373
12456
  deactivateOnPromoteArg,
12374
12457
  versionCodesToRetainArg,
12375
12458
  changesNotSentForReviewArg,
12459
+ rescueChangesNotSentForReviewArg,
12376
12460
  inAppUpdatePriorityArg,
12377
12461
  obbMainReferencesVersionArg,
12378
12462
  obbMainFileSizeArg,
@@ -12450,6 +12534,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
12450
12534
  - appPlatform: The platform to use (optional)
12451
12535
  - appleId: Apple ID property in the App Information section in App Store Connect
12452
12536
  - ipa: Path to the ipa file to upload
12537
+ - pkg: Path to your pkg file
12453
12538
  - demoAccountRequired: Do you need a demo account when Apple does review?
12454
12539
  - betaAppReviewInfo: Beta app review information for contact info and demo account
12455
12540
  - localizedAppInfo: Localized beta app test info for description, feedback email, marketing url, and privacy policy
@@ -12488,9 +12573,10 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12488
12573
  apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
12489
12574
  username: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12490
12575
  appIdentifier: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12491
- appPlatform: String = "ios",
12576
+ appPlatform: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12492
12577
  appleId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12493
12578
  ipa: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12579
+ pkg: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12494
12580
  demoAccountRequired: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
12495
12581
  betaAppReviewInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
12496
12582
  localizedAppInfo: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
@@ -12526,9 +12612,10 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12526
12612
  let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
12527
12613
  let usernameArg = username.asRubyArgument(name: "username", type: nil)
12528
12614
  let appIdentifierArg = appIdentifier.asRubyArgument(name: "app_identifier", type: nil)
12529
- let appPlatformArg = RubyCommand.Argument(name: "app_platform", value: appPlatform, type: nil)
12615
+ let appPlatformArg = appPlatform.asRubyArgument(name: "app_platform", type: nil)
12530
12616
  let appleIdArg = appleId.asRubyArgument(name: "apple_id", type: nil)
12531
12617
  let ipaArg = ipa.asRubyArgument(name: "ipa", type: nil)
12618
+ let pkgArg = pkg.asRubyArgument(name: "pkg", type: nil)
12532
12619
  let demoAccountRequiredArg = demoAccountRequired.asRubyArgument(name: "demo_account_required", type: nil)
12533
12620
  let betaAppReviewInfoArg = betaAppReviewInfo.asRubyArgument(name: "beta_app_review_info", type: nil)
12534
12621
  let localizedAppInfoArg = localizedAppInfo.asRubyArgument(name: "localized_app_info", type: nil)
@@ -12566,6 +12653,7 @@ public func uploadToTestflight(apiKeyPath: OptionalConfigValue<String?> = .fastl
12566
12653
  appPlatformArg,
12567
12654
  appleIdArg,
12568
12655
  ipaArg,
12656
+ pkgArg,
12569
12657
  demoAccountRequiredArg,
12570
12658
  betaAppReviewInfoArg,
12571
12659
  localizedAppInfoArg,
@@ -12973,7 +13061,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
12973
13061
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12974
13062
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12975
13063
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
12976
- ideFoundationPath: String = "/Applications/Xcode-12.5.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13064
+ ideFoundationPath: String = "/Applications/Xcode-beta.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
12977
13065
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
12978
13066
  {
12979
13067
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13087,6 +13175,8 @@ public func xcversion(version: String) {
13087
13175
  - verbose: Enable verbose output of zipped file
13088
13176
  - password: Encrypt the contents of the zip archive using a password
13089
13177
  - symlinks: Store symbolic links as such in the zip archive
13178
+ - include: Array of paths or patterns to include
13179
+ - exclude: Array of paths or patterns to exclude
13090
13180
 
13091
13181
  - returns: The path to the output zip file
13092
13182
  */
@@ -13094,18 +13184,24 @@ public func xcversion(version: String) {
13094
13184
  outputPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13095
13185
  verbose: OptionalConfigValue<Bool> = .fastlaneDefault(true),
13096
13186
  password: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13097
- symlinks: OptionalConfigValue<Bool> = .fastlaneDefault(false)) -> String
13187
+ symlinks: OptionalConfigValue<Bool> = .fastlaneDefault(false),
13188
+ include: [String] = [],
13189
+ exclude: [String] = []) -> String
13098
13190
  {
13099
13191
  let pathArg = RubyCommand.Argument(name: "path", value: path, type: nil)
13100
13192
  let outputPathArg = outputPath.asRubyArgument(name: "output_path", type: nil)
13101
13193
  let verboseArg = verbose.asRubyArgument(name: "verbose", type: nil)
13102
13194
  let passwordArg = password.asRubyArgument(name: "password", type: nil)
13103
13195
  let symlinksArg = symlinks.asRubyArgument(name: "symlinks", type: nil)
13196
+ let includeArg = RubyCommand.Argument(name: "include", value: include, type: nil)
13197
+ let excludeArg = RubyCommand.Argument(name: "exclude", value: exclude, type: nil)
13104
13198
  let array: [RubyCommand.Argument?] = [pathArg,
13105
13199
  outputPathArg,
13106
13200
  verboseArg,
13107
13201
  passwordArg,
13108
- symlinksArg]
13202
+ symlinksArg,
13203
+ includeArg,
13204
+ excludeArg]
13109
13205
  let args: [RubyCommand.Argument] = array
13110
13206
  .filter { $0?.value != nil }
13111
13207
  .compactMap { $0 }
@@ -13167,4 +13263,4 @@ public let snapshotfile = Snapshotfile()
13167
13263
 
13168
13264
  // Please don't remove the lines below
13169
13265
  // They are used to detect outdated files
13170
- // FastlaneRunnerAPIVersion [0.9.130]
13266
+ // FastlaneRunnerAPIVersion [0.9.134]