fastlane 2.136.0 → 2.141.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +85 -72
  3. data/cert/lib/cert/options.rb +12 -5
  4. data/cert/lib/cert/runner.rb +13 -0
  5. data/deliver/lib/deliver/options.rb +2 -2
  6. data/deliver/lib/deliver/runner.rb +13 -2
  7. data/deliver/lib/deliver/submit_for_review.rb +7 -1
  8. data/fastlane/lib/fastlane/action.rb +2 -2
  9. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/build_app.rb +157 -6
  11. data/fastlane/lib/fastlane/actions/build_ios_app.rb +28 -132
  12. data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -0
  13. data/fastlane/lib/fastlane/actions/create_pull_request.rb +71 -2
  14. data/fastlane/lib/fastlane/actions/docs/{build_ios_app.md → build_app.md} +1 -1
  15. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +19 -0
  16. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +10 -0
  17. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +4 -2
  18. data/fastlane/lib/fastlane/actions/ensure_bundle_exec.rb +3 -3
  19. data/fastlane/lib/fastlane/actions/get_version_number.rb +7 -2
  20. data/fastlane/lib/fastlane/actions/gradle.rb +54 -3
  21. data/fastlane/lib/fastlane/actions/gym.rb +3 -7
  22. data/fastlane/lib/fastlane/actions/import_from_git.rb +4 -0
  23. data/fastlane/lib/fastlane/actions/increment_version_number.rb +6 -3
  24. data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
  25. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
  26. data/fastlane/lib/fastlane/actions/register_devices.rb +5 -1
  27. data/fastlane/lib/fastlane/actions/ruby_version.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/run_tests.rb +5 -22
  29. data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
  30. data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
  31. data/fastlane/lib/fastlane/actions/testfairy.rb +8 -1
  32. data/fastlane/lib/fastlane/actions/update_plist.rb +37 -2
  33. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -0
  34. data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
  35. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  36. data/fastlane/lib/fastlane/actions/xcode_select.rb +6 -1
  37. data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
  38. data/fastlane/lib/fastlane/commands_generator.rb +1 -1
  39. data/fastlane/lib/fastlane/fast_file.rb +13 -3
  40. data/fastlane/lib/fastlane/helper/adb_helper.rb +13 -4
  41. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
  42. data/fastlane/lib/fastlane/runner.rb +23 -18
  43. data/fastlane/lib/fastlane/version.rb +1 -1
  44. data/fastlane/swift/Deliverfile.swift +1 -1
  45. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  46. data/fastlane/swift/Fastlane.swift +342 -66
  47. data/fastlane/swift/Gymfile.swift +1 -1
  48. data/fastlane/swift/GymfileProtocol.swift +17 -1
  49. data/fastlane/swift/Matchfile.swift +1 -1
  50. data/fastlane/swift/MatchfileProtocol.swift +12 -4
  51. data/fastlane/swift/Precheckfile.swift +1 -1
  52. data/fastlane/swift/Scanfile.swift +1 -1
  53. data/fastlane/swift/ScanfileProtocol.swift +17 -1
  54. data/fastlane/swift/Screengrabfile.swift +1 -1
  55. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -9
  56. data/fastlane/swift/Snapshotfile.swift +1 -1
  57. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  58. data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
  59. data/fastlane_core/lib/fastlane_core/cert_checker.rb +28 -0
  60. data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
  61. data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
  62. data/fastlane_core/lib/fastlane_core/project.rb +23 -0
  63. data/frameit/lib/frameit/editor.rb +3 -0
  64. data/gym/lib/gym/code_signing_mapping.rb +32 -3
  65. data/gym/lib/gym/detect_values.rb +34 -2
  66. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  67. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  68. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +47 -17
  69. data/gym/lib/gym/module.rb +8 -0
  70. data/gym/lib/gym/options.rb +25 -1
  71. data/gym/lib/gym/runner.rb +63 -23
  72. data/match/lib/match/encryption/openssl.rb +1 -1
  73. data/match/lib/match/generator.rb +17 -3
  74. data/match/lib/match/module.rb +4 -1
  75. data/match/lib/match/nuke.rb +54 -16
  76. data/match/lib/match/options.rb +28 -15
  77. data/match/lib/match/runner.rb +21 -8
  78. data/match/lib/match/spaceship_ensure.rb +19 -9
  79. data/match/lib/match/storage/git_storage.rb +11 -3
  80. data/pilot/lib/pilot/build_manager.rb +46 -12
  81. data/pilot/lib/pilot/options.rb +3 -1
  82. data/scan/lib/scan/detect_values.rb +6 -1
  83. data/scan/lib/scan/manager.rb +18 -1
  84. data/scan/lib/scan/options.rb +23 -1
  85. data/scan/lib/scan/runner.rb +6 -0
  86. data/scan/lib/scan/slack_poster.rb +1 -1
  87. data/scan/lib/scan/test_command_generator.rb +1 -1
  88. data/screengrab/lib/screengrab/options.rb +1 -10
  89. data/screengrab/lib/screengrab/runner.rb +16 -19
  90. data/snapshot/lib/snapshot/options.rb +12 -1
  91. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  92. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +11 -0
  93. data/spaceship/lib/spaceship/client.rb +9 -4
  94. data/spaceship/lib/spaceship/connect_api.rb +2 -0
  95. data/spaceship/lib/spaceship/connect_api/models/app.rb +11 -0
  96. data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +75 -0
  97. data/spaceship/lib/spaceship/connect_api/models/beta_screenshot.rb +18 -0
  98. data/spaceship/lib/spaceship/connect_api/models/build.rb +5 -0
  99. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
  100. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +15 -0
  101. data/spaceship/lib/spaceship/portal/app.rb +11 -2
  102. data/spaceship/lib/spaceship/tunes/iap.rb +11 -11
  103. data/spaceship/lib/spaceship/tunes/iap_detail.rb +7 -3
  104. data/spaceship/lib/spaceship/tunes/iap_families.rb +12 -1
  105. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +26 -17
  106. data/spaceship/lib/spaceship/tunes/iap_status.rb +5 -1
  107. data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -7
  108. data/supply/lib/supply/client.rb +27 -0
  109. data/supply/lib/supply/options.rb +8 -2
  110. data/supply/lib/supply/uploader.rb +55 -26
  111. metadata +44 -25
  112. data/supply/lib/supply/.uploader.rb.swp +0 -0
@@ -39,7 +39,7 @@ module Fastlane
39
39
  end
40
40
 
41
41
  def self.details
42
- "This action allows you to modify any `plist` file."
42
+ "This action allows you to modify any value inside any `plist` file."
43
43
  end
44
44
 
45
45
  def self.available_options
@@ -57,11 +57,46 @@ module Fastlane
57
57
  end
58
58
 
59
59
  def self.author
60
- 'rishabhtayal'
60
+ ["rishabhtayal", "matthiaszarzecki"]
61
61
  end
62
62
 
63
63
  def self.example_code
64
64
  [
65
+ 'update_plist( # Updates the CLIENT_ID and GOOGLE_APP_ID string entries in the plist-file
66
+ plist_path: "path/to/your_plist_file.plist",
67
+ block: proc do |plist|
68
+ plist[:CLIENT_ID] = "new_client_id"
69
+ plist[:GOOGLE_APP_ID] = "new_google_app_id"
70
+ end
71
+ )',
72
+ 'update_plist( # Sets a boolean entry
73
+ plist_path: "path/to/your_plist_file.plist",
74
+ block: proc do |plist|
75
+ plist[:boolean_entry] = true
76
+ end
77
+ )',
78
+ 'update_plist( # Sets a number entry
79
+ plist_path: "path/to/your_plist_file.plist",
80
+ block: proc do |plist|
81
+ plist[:number_entry] = 13
82
+ end
83
+ )',
84
+ 'update_plist( # Sets an array-entry with multiple sub-types
85
+ plist_path: "path/to/your_plist_file.plist",
86
+ block: proc do |plist|
87
+ plist[:array_entry] = ["entry_01", true, 1243]
88
+ end
89
+ )',
90
+ 'update_plist( # The block can contain logic too
91
+ plist_path: "path/to/your_plist_file.plist",
92
+ block: proc do |plist|
93
+ if options[:environment] == "production"
94
+ plist[:CLIENT_ID] = "new_client_id_production"
95
+ else
96
+ plist[:CLIENT_ID] = "new_client_id_development"
97
+ end
98
+ end
99
+ )',
65
100
  'update_plist( # Advanced processing: find URL scheme for particular key and replace value
66
101
  plist_path: "path/to/Info.plist",
67
102
  block: proc do |plist|
@@ -11,6 +11,7 @@ module Fastlane
11
11
  config.load_configuration_file("Deliverfile")
12
12
  config[:screenshots_path] = Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] if Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
13
13
  config[:ipa] = Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] if Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
14
+ config[:pkg] = Actions.lane_context[SharedValues::PKG_OUTPUT_PATH] if Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
14
15
 
15
16
  return config if Helper.test?
16
17
  Deliver::Runner.new(config).run
@@ -0,0 +1,78 @@
1
+ module Fastlane
2
+ module Actions
3
+ class UploadToPlayStoreInternalAppSharingAction < Action
4
+ def self.run(params)
5
+ require 'supply'
6
+
7
+ # If no APK params were provided, try to fill in the values from lane context, preferring
8
+ # the multiple APKs over the single APK if set.
9
+ if params[:apk_paths].nil? && params[:apk].nil?
10
+ all_apk_paths = Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] || []
11
+ if all_apk_paths.size > 1
12
+ params[:apk_paths] = all_apk_paths
13
+ else
14
+ params[:apk] = Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
15
+ end
16
+ end
17
+
18
+ # If no AAB param was provided, try to fill in the value from lane context.
19
+ # First GRADLE_ALL_AAB_OUTPUT_PATHS if only one
20
+ # Else from GRADLE_AAB_OUTPUT_PATH
21
+ if params[:aab].nil?
22
+ all_aab_paths = Actions.lane_context[SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS] || []
23
+ if all_aab_paths.count == 1
24
+ params[:aab] = all_aab_paths.first
25
+ else
26
+ params[:aab] = Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH]
27
+ end
28
+ end
29
+
30
+ Supply.config = params # we already have the finished config
31
+
32
+ Supply::Uploader.new.perform_upload_to_internal_app_sharing
33
+ end
34
+
35
+ #####################################################
36
+ # @!group Documentation
37
+ #####################################################
38
+
39
+ def self.description
40
+ "Upload binaries to Google Play Internal App Sharing (via _supply_)"
41
+ end
42
+
43
+ def self.details
44
+ "More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/"
45
+ end
46
+
47
+ def self.available_options
48
+ require 'supply'
49
+ require 'supply/options'
50
+ options = Supply::Options.available_options.clone
51
+
52
+ # remove all the unnecessary (for this action) options
53
+ options_to_keep = [:package_name, :apk, :apk_paths, :aab, :aab_paths, :json_key, :json_key_data, :root_url, :timeout]
54
+ options.delete_if { |option| options_to_keep.include?(option.key) == false }
55
+ end
56
+
57
+ def self.return_value
58
+ "Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded)."
59
+ end
60
+
61
+ def self.authors
62
+ ["andrewhavens"]
63
+ end
64
+
65
+ def self.is_supported?(platform)
66
+ platform == :android
67
+ end
68
+
69
+ def self.example_code
70
+ ["upload_to_play_store_internal_app_sharing"]
71
+ end
72
+
73
+ def self.category
74
+ :production
75
+ end
76
+ end
77
+ end
78
+ end
@@ -92,7 +92,7 @@ module Fastlane
92
92
 
93
93
  def self.evaulate(params, values)
94
94
  if params[:provisioning_type]
95
- UI.user_error!("Mismatched provisioning_type. Required: '#{params[:provisioning_type]}''; Found: '#{values['provisioning_type']}'") unless params[:provisioning_type] == values['provisioning_type']
95
+ UI.user_error!("Mismatched provisioning_type. Required: '#{params[:provisioning_type]}'; Found: '#{values['provisioning_type']}'") unless params[:provisioning_type] == values['provisioning_type']
96
96
  end
97
97
  if params[:provisioning_uuid]
98
98
  UI.user_error!("Mismatched provisioning_uuid. Required: '#{params[:provisioning_uuid]}'; Found: '#{values['provisioning_uuid']}'") unless params[:provisioning_uuid] == values['provisioning_uuid']
@@ -38,7 +38,12 @@ module Fastlane
38
38
  end
39
39
 
40
40
  def self.details
41
- "Select and build with the Xcode installed at the provided path. Use the `xcversion` action if you want to select an Xcode based on a version specifier or you don't have known, stable paths as may happen in a CI environment."
41
+ [
42
+ "Select and build with the Xcode installed at the provided path.",
43
+ "Use the `xcversion` action if you want to select an Xcode:",
44
+ "- Based on a version specifier or",
45
+ "- You don't have known, stable paths, as may happen in a CI environment."
46
+ ].join("\n")
42
47
  end
43
48
 
44
49
  def self.author
@@ -142,8 +142,8 @@ module Fastlane
142
142
  # Let's tell the user how to use `bundle exec`
143
143
  # We show this warning no matter if the command is slow or not
144
144
  UI.important("fastlane detected a Gemfile in the current directory")
145
- UI.important("however it seems like you don't use `bundle exec`")
146
- UI.important("to launch fastlane faster, please use")
145
+ UI.important("However, it seems like you didn't use `bundle exec`")
146
+ UI.important("To launch fastlane faster, please use")
147
147
  UI.message("")
148
148
  UI.command "bundle exec fastlane #{ARGV.join(' ')}"
149
149
  UI.message("")
@@ -17,7 +17,7 @@ module Fastlane
17
17
  end
18
18
  FastlaneCore::Swag.show_loader
19
19
 
20
- # has to be checked here - in case we wan't to troubleshoot plugin related issues
20
+ # has to be checked here - in case we want to troubleshoot plugin related issues
21
21
  if ARGV.include?("--troubleshoot")
22
22
  self.confirm_troubleshoot
23
23
  end
@@ -263,7 +263,7 @@ module Fastlane
263
263
  # @param branch [String] The branch to checkout in the repository
264
264
  # @param path [String] The path to the Fastfile
265
265
  # @param version [String, Array] Version requirement for repo tags
266
- def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil)
266
+ def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil, dependencies: [])
267
267
  UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
268
268
 
269
269
  Actions.execute_action('import_from_git') do
@@ -280,6 +280,10 @@ module Fastlane
280
280
 
281
281
  branch_option = "--branch #{branch}" if branch != 'HEAD'
282
282
 
283
+ checkout_dependencies = dependencies.map(&:shellescape).join(" ")
284
+
285
+ checkout_path = "#{path.shellescape} #{checkout_dependencies}"
286
+
283
287
  UI.message("Cloning remote git repo...")
284
288
  Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
285
289
  Actions.sh("git clone #{url.shellescape} #{clone_folder.shellescape} --depth 1 -n #{branch_option}")
@@ -292,7 +296,7 @@ module Fastlane
292
296
  UI.user_error!("No tag found matching #{version.inspect}") if checkout_param.nil?
293
297
  end
294
298
 
295
- Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{path.shellescape}")
299
+ Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
296
300
 
297
301
  # We also want to check out all the local actions of this fastlane setup
298
302
  containing = path.split(File::SEPARATOR)[0..-2]
@@ -304,7 +308,13 @@ module Fastlane
304
308
  # We don't care about a failure here, as local actions are optional
305
309
  end
306
310
 
307
- return_value = import(File.join(clone_folder, path))
311
+ return_value = nil
312
+ if dependencies.any?
313
+ return_value = [import(File.join(clone_folder, path))]
314
+ return_value += dependencies.map { |file_path| import(File.join(clone_folder, file_path)) }
315
+ else
316
+ return_value = import(File.join(clone_folder, path))
317
+ end
308
318
 
309
319
  action_completed('import_from_git', status: FastlaneCore::ActionCompletionStatus::SUCCESS)
310
320
 
@@ -12,21 +12,30 @@ module Fastlane
12
12
  # Path to the adb binary
13
13
  attr_accessor :adb_path
14
14
 
15
+ # Path to the adb binary
16
+ attr_accessor :adb_host
17
+
15
18
  # All available devices
16
19
  attr_accessor :devices
17
20
 
18
- def initialize(adb_path: nil)
21
+ def initialize(adb_path: nil, adb_host: nil)
19
22
  android_home = ENV['ANDROID_HOME'] || ENV['ANDROID_SDK_ROOT'] || ENV['ANDROID_SDK']
20
23
  if (adb_path.nil? || adb_path == "adb") && android_home
21
24
  adb_path = File.join(android_home, "platform-tools", "adb")
22
25
  end
26
+
23
27
  self.adb_path = adb_path
28
+ self.adb_host = adb_host
29
+ end
30
+
31
+ def host_option
32
+ return self.adb_host ? "-H #{adb_host}" : nil
24
33
  end
25
34
 
26
35
  # Run a certain action
27
36
  def trigger(command: nil, serial: nil)
28
37
  android_serial = serial != "" ? "ANDROID_SERIAL=#{serial}" : nil
29
- command = [android_serial, adb_path.shellescape, command].join(" ").strip
38
+ command = [android_serial, adb_path.shellescape, host_option, command].compact.join(" ").strip
30
39
  Action.sh(command)
31
40
  end
32
41
 
@@ -43,10 +52,10 @@ module Fastlane
43
52
  def load_all_devices
44
53
  self.devices = []
45
54
 
46
- command = [adb_path.shellescape, "devices"].join(" ")
55
+ command = [adb_path.shellescape, host_option, "devices -l"].compact.join(" ")
47
56
  output = Actions.sh(command, log: false)
48
57
  output.split("\n").each do |line|
49
- if (result = line.match(/(.*)\tdevice$/))
58
+ if (result = line.match(/^(\S+)(\s+)(device )/))
50
59
  self.devices << AdbDevice.new(serial: result[1])
51
60
  end
52
61
  end
@@ -157,7 +157,9 @@ CrossPlatform/ForkUsage:
157
157
  - "**/plugins/template/**/*"
158
158
  Lint/IsStringUsage:
159
159
  Include:
160
+ - cert/**/*
160
161
  - gym/**/*
162
+ - match/**/*
161
163
  - screengrab/**/*
162
164
  - supply/**/*
163
165
  Style/MethodCallWithArgsParentheses:
@@ -225,27 +225,32 @@ module Fastlane
225
225
 
226
226
  begin
227
227
  Dir.chdir(custom_dir) do # go up from the fastlane folder, to the project folder
228
- # If another action is calling this action, we shouldn't show it in the summary
228
+ # Removing step_name before its parsed into configurations
229
+ args = arguments.kind_of?(Array) && arguments.first.kind_of?(Hash) ? arguments.first : {}
230
+ step_name = args.delete(:step_name)
231
+
232
+ # arguments is an array by default, containing an hash with the actual parameters
233
+ # Since we usually just need the passed hash, we'll just use the first object if there is only one
234
+ if arguments.count == 0
235
+ configurations = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
236
+ elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
237
+ configurations = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
238
+ elsif !class_ref.available_options
239
+ # This action does not use the new action format
240
+ # Just passing the arguments to this method
241
+ configurations = arguments
242
+ else
243
+ UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
244
+ end
229
245
 
246
+ # If another action is calling this action, we shouldn't show it in the summary
247
+ # A nil value for action_name will hide it from the summary
230
248
  unless from_action
231
- args = arguments.kind_of?(Array) && arguments.first.kind_of?(Hash) ? arguments.first : {}
232
- action_name = args[:step_name] || class_ref.step_text
233
- args.delete(:step_name)
249
+ action_name = step_name
250
+ action_name ||= class_ref.method(:step_text).arity == 1 ? class_ref.step_text(configurations) : class_ref.step_text
234
251
  end
235
- Actions.execute_action(action_name) do
236
- # arguments is an array by default, containing an hash with the actual parameters
237
- # Since we usually just need the passed hash, we'll just use the first object if there is only one
238
- if arguments.count == 0
239
- arguments = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
240
- elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
241
- arguments = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
242
- elsif !class_ref.available_options
243
- # This action does not use the new action format
244
- # Just passing the arguments to this method
245
- else
246
- UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
247
- end
248
252
 
253
+ Actions.execute_action(action_name) do
249
254
  if Fastlane::Actions.is_deprecated?(class_ref)
250
255
  puts("==========================================".deprecated)
251
256
  puts("This action (#{method_sym}) is deprecated".deprecated)
@@ -253,7 +258,7 @@ module Fastlane
253
258
  puts("==========================================\n".deprecated)
254
259
  end
255
260
  class_ref.runner = self # needed to call another action from an action
256
- return class_ref.run(arguments)
261
+ return class_ref.run(configurations)
257
262
  end
258
263
  end
259
264
  rescue Interrupt => e
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.136.0'.freeze
2
+ VERSION = '2.141.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 = '0.49.1'.freeze
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.136.0
21
+ // Generated with fastlane 2.141.0
@@ -57,10 +57,10 @@ protocol DeliverfileProtocol: class {
57
57
  /// Rejects the previously submitted build if it's in a state where it's possible
58
58
  var rejectIfPossible: Bool { get }
59
59
 
60
- /// Should the app be automatically released once it's approved?
60
+ /// Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
61
61
  var automaticRelease: Bool { get }
62
62
 
63
- /// Date in milliseconds for automatically releasing on pending approval
63
+ /// Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
64
64
  var autoReleaseDate: String? { get }
65
65
 
66
66
  /// Enable the phased release feature of iTC
@@ -246,4 +246,4 @@ extension DeliverfileProtocol {
246
246
 
247
247
  // Please don't remove the lines below
248
248
  // They are used to detect outdated files
249
- // FastlaneRunnerAPIVersion [0.9.18]
249
+ // FastlaneRunnerAPIVersion [0.9.19]
@@ -441,8 +441,8 @@ func appledoc(input: Any,
441
441
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
442
442
  - submitForReview: Submit the new version for Review after uploading everything
443
443
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
444
- - automaticRelease: Should the app be automatically released once it's approved?
445
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
444
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
445
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
446
446
  - phasedRelease: Enable the phased release feature of iTC
447
447
  - resetRatings: Reset the summary rating when you release a new version of the application
448
448
  - priceTier: The price tier of this application
@@ -829,6 +829,7 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
829
829
  - task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
830
830
  - flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
831
831
  - buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
832
+ - tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
832
833
  - flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
833
834
  - projectDir: The root directory of the gradle project
834
835
  - gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
@@ -842,9 +843,10 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
842
843
 
843
844
  Run `./gradlew tasks` to get a list of all available gradle tasks for your project
844
845
  */
845
- func buildAndroidApp(task: String,
846
+ func buildAndroidApp(task: String? = nil,
846
847
  flavor: String? = nil,
847
848
  buildType: String? = nil,
849
+ tasks: [String]? = nil,
848
850
  flags: String? = nil,
849
851
  projectDir: String = ".",
850
852
  gradlePath: String? = nil,
@@ -856,6 +858,7 @@ func buildAndroidApp(task: String,
856
858
  let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
857
859
  RubyCommand.Argument(name: "flavor", value: flavor),
858
860
  RubyCommand.Argument(name: "build_type", value: buildType),
861
+ RubyCommand.Argument(name: "tasks", value: tasks),
859
862
  RubyCommand.Argument(name: "flags", value: flags),
860
863
  RubyCommand.Argument(name: "project_dir", value: projectDir),
861
864
  RubyCommand.Argument(name: "gradle_path", value: gradlePath),
@@ -868,7 +871,7 @@ func buildAndroidApp(task: String,
868
871
  }
869
872
 
870
873
  /**
871
- Alias for the `build_ios_app` action
874
+ Easily build and sign your app (via _gym_)
872
875
 
873
876
  - parameters:
874
877
  - workspace: Path to the workspace file
@@ -881,6 +884,7 @@ func buildAndroidApp(task: String,
881
884
  - silent: Hide all information that's not necessary while building
882
885
  - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
883
886
  - skipPackageIpa: Should we skip packaging the ipa?
887
+ - skipPackagePkg: Should we skip packaging the pkg?
884
888
  - includeSymbols: Should the ipa file include symbols?
885
889
  - includeBitcode: Should the ipa file include bitcode?
886
890
  - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
@@ -889,6 +893,8 @@ func buildAndroidApp(task: String,
889
893
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
890
894
  - skipArchive: After building, don't archive, effectively not including -archivePath param
891
895
  - skipCodesigning: Build without codesigning
896
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
897
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
892
898
  - buildPath: The directory in which the archive should be stored in
893
899
  - archivePath: The path to the created archive
894
900
  - derivedDataPath: The directory where built products and other derived data will go
@@ -911,6 +917,7 @@ func buildAndroidApp(task: String,
911
917
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
912
918
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
913
919
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
920
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
914
921
 
915
922
  - returns: The absolute path to the generated ipa file
916
923
 
@@ -926,6 +933,7 @@ func buildApp(workspace: String? = nil,
926
933
  silent: Bool = false,
927
934
  codesigningIdentity: String? = nil,
928
935
  skipPackageIpa: Bool = false,
936
+ skipPackagePkg: Bool = false,
929
937
  includeSymbols: Bool? = nil,
930
938
  includeBitcode: Bool? = nil,
931
939
  exportMethod: String? = nil,
@@ -934,6 +942,8 @@ func buildApp(workspace: String? = nil,
934
942
  skipBuildArchive: Bool? = nil,
935
943
  skipArchive: Bool? = nil,
936
944
  skipCodesigning: Bool? = nil,
945
+ catalystPlatform: String? = nil,
946
+ installerCertName: String? = nil,
937
947
  buildPath: String? = nil,
938
948
  archivePath: String? = nil,
939
949
  derivedDataPath: String? = nil,
@@ -955,7 +965,8 @@ func buildApp(workspace: String? = nil,
955
965
  xcprettyReportJson: String? = nil,
956
966
  analyzeBuildTime: Bool? = nil,
957
967
  xcprettyUtf: Bool? = nil,
958
- skipProfileDetection: Bool = false) {
968
+ skipProfileDetection: Bool = false,
969
+ clonedSourcePackagesPath: String? = nil) {
959
970
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
960
971
  RubyCommand.Argument(name: "project", value: project),
961
972
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -966,6 +977,7 @@ func buildApp(workspace: String? = nil,
966
977
  RubyCommand.Argument(name: "silent", value: silent),
967
978
  RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
968
979
  RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
980
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
969
981
  RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
970
982
  RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
971
983
  RubyCommand.Argument(name: "export_method", value: exportMethod),
@@ -974,6 +986,8 @@ func buildApp(workspace: String? = nil,
974
986
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
975
987
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
976
988
  RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
989
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
990
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
977
991
  RubyCommand.Argument(name: "build_path", value: buildPath),
978
992
  RubyCommand.Argument(name: "archive_path", value: archivePath),
979
993
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -995,12 +1009,13 @@ func buildApp(workspace: String? = nil,
995
1009
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
996
1010
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
997
1011
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
998
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
1012
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1013
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
999
1014
  _ = runner.executeCommand(command)
1000
1015
  }
1001
1016
 
1002
1017
  /**
1003
- Easily build and sign your app (via _gym_)
1018
+ Alias for the `build_app` action but only for iOS
1004
1019
 
1005
1020
  - parameters:
1006
1021
  - workspace: Path to the workspace file
@@ -1043,6 +1058,7 @@ func buildApp(workspace: String? = nil,
1043
1058
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1044
1059
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1045
1060
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1061
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1046
1062
 
1047
1063
  - returns: The absolute path to the generated ipa file
1048
1064
 
@@ -1087,7 +1103,8 @@ func buildIosApp(workspace: String? = nil,
1087
1103
  xcprettyReportJson: String? = nil,
1088
1104
  analyzeBuildTime: Bool? = nil,
1089
1105
  xcprettyUtf: Bool? = nil,
1090
- skipProfileDetection: Bool = false) {
1106
+ skipProfileDetection: Bool = false,
1107
+ clonedSourcePackagesPath: String? = nil) {
1091
1108
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1092
1109
  RubyCommand.Argument(name: "project", value: project),
1093
1110
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -1127,7 +1144,146 @@ func buildIosApp(workspace: String? = nil,
1127
1144
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
1128
1145
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
1129
1146
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
1130
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
1147
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1148
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1149
+ _ = runner.executeCommand(command)
1150
+ }
1151
+
1152
+ /**
1153
+ Alias for the `build_app` action but only for macOS
1154
+
1155
+ - parameters:
1156
+ - workspace: Path to the workspace file
1157
+ - project: Path to the project file
1158
+ - scheme: The project's scheme. Make sure it's marked as `Shared`
1159
+ - clean: Should the project be cleaned before building it?
1160
+ - outputDirectory: The directory in which the ipa file should be stored in
1161
+ - outputName: The name of the resulting ipa file
1162
+ - configuration: The configuration to use when building the app. Defaults to 'Release'
1163
+ - silent: Hide all information that's not necessary while building
1164
+ - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
1165
+ - skipPackagePkg: Should we skip packaging the pkg?
1166
+ - includeSymbols: Should the ipa file include symbols?
1167
+ - includeBitcode: Should the ipa file include bitcode?
1168
+ - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
1169
+ - exportOptions: Path to an export options plist or a hash with export options. Use 'xcodebuild -help' to print the full set of available options
1170
+ - exportXcargs: Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1171
+ - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
1172
+ - skipArchive: After building, don't archive, effectively not including -archivePath param
1173
+ - skipCodesigning: Build without codesigning
1174
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
1175
+ - buildPath: The directory in which the archive should be stored in
1176
+ - archivePath: The path to the created archive
1177
+ - derivedDataPath: The directory where built products and other derived data will go
1178
+ - resultBundle: Should an Xcode result bundle be generated in the output directory
1179
+ - resultBundlePath: Path to the result bundle directory to create. Ignored if `result_bundle` if false
1180
+ - buildlogPath: The directory where to store the build log
1181
+ - sdk: The SDK that should be used for building the application
1182
+ - toolchain: The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)
1183
+ - destination: Use a custom destination for building the app
1184
+ - exportTeamId: Optional: Sometimes you need to specify a team id when exporting the ipa file
1185
+ - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1186
+ - xcconfig: Use an extra XCCONFIG file to build your app
1187
+ - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1188
+ - disableXcpretty: Disable xcpretty formatting of build output
1189
+ - xcprettyTestFormat: Use the test (RSpec style) format for build output
1190
+ - xcprettyFormatter: A custom xcpretty formatter to use
1191
+ - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
1192
+ - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
1193
+ - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
1194
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1195
+ - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1196
+ - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1197
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1198
+
1199
+ - returns: The absolute path to the generated ipa file
1200
+
1201
+ More information: https://fastlane.tools/gym
1202
+ */
1203
+ func buildMacApp(workspace: String? = nil,
1204
+ project: String? = nil,
1205
+ scheme: String? = nil,
1206
+ clean: Bool = false,
1207
+ outputDirectory: String = ".",
1208
+ outputName: String? = nil,
1209
+ configuration: String? = nil,
1210
+ silent: Bool = false,
1211
+ codesigningIdentity: String? = nil,
1212
+ skipPackagePkg: Bool = false,
1213
+ includeSymbols: Bool? = nil,
1214
+ includeBitcode: Bool? = nil,
1215
+ exportMethod: String? = nil,
1216
+ exportOptions: [String : Any]? = nil,
1217
+ exportXcargs: String? = nil,
1218
+ skipBuildArchive: Bool? = nil,
1219
+ skipArchive: Bool? = nil,
1220
+ skipCodesigning: Bool? = nil,
1221
+ installerCertName: String? = nil,
1222
+ buildPath: String? = nil,
1223
+ archivePath: String? = nil,
1224
+ derivedDataPath: String? = nil,
1225
+ resultBundle: Bool = false,
1226
+ resultBundlePath: String? = nil,
1227
+ buildlogPath: String = "~/Library/Logs/gym",
1228
+ sdk: String? = nil,
1229
+ toolchain: String? = nil,
1230
+ destination: String? = nil,
1231
+ exportTeamId: String? = nil,
1232
+ xcargs: String? = nil,
1233
+ xcconfig: String? = nil,
1234
+ suppressXcodeOutput: Bool? = nil,
1235
+ disableXcpretty: Bool? = nil,
1236
+ xcprettyTestFormat: Bool? = nil,
1237
+ xcprettyFormatter: String? = nil,
1238
+ xcprettyReportJunit: String? = nil,
1239
+ xcprettyReportHtml: String? = nil,
1240
+ xcprettyReportJson: String? = nil,
1241
+ analyzeBuildTime: Bool? = nil,
1242
+ xcprettyUtf: Bool? = nil,
1243
+ skipProfileDetection: Bool = false,
1244
+ clonedSourcePackagesPath: String? = nil) {
1245
+ let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1246
+ RubyCommand.Argument(name: "project", value: project),
1247
+ RubyCommand.Argument(name: "scheme", value: scheme),
1248
+ RubyCommand.Argument(name: "clean", value: clean),
1249
+ RubyCommand.Argument(name: "output_directory", value: outputDirectory),
1250
+ RubyCommand.Argument(name: "output_name", value: outputName),
1251
+ RubyCommand.Argument(name: "configuration", value: configuration),
1252
+ RubyCommand.Argument(name: "silent", value: silent),
1253
+ RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
1254
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
1255
+ RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
1256
+ RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
1257
+ RubyCommand.Argument(name: "export_method", value: exportMethod),
1258
+ RubyCommand.Argument(name: "export_options", value: exportOptions),
1259
+ RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
1260
+ RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
1261
+ RubyCommand.Argument(name: "skip_archive", value: skipArchive),
1262
+ RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
1263
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
1264
+ RubyCommand.Argument(name: "build_path", value: buildPath),
1265
+ RubyCommand.Argument(name: "archive_path", value: archivePath),
1266
+ RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
1267
+ RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1268
+ RubyCommand.Argument(name: "result_bundle_path", value: resultBundlePath),
1269
+ RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1270
+ RubyCommand.Argument(name: "sdk", value: sdk),
1271
+ RubyCommand.Argument(name: "toolchain", value: toolchain),
1272
+ RubyCommand.Argument(name: "destination", value: destination),
1273
+ RubyCommand.Argument(name: "export_team_id", value: exportTeamId),
1274
+ RubyCommand.Argument(name: "xcargs", value: xcargs),
1275
+ RubyCommand.Argument(name: "xcconfig", value: xcconfig),
1276
+ RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput),
1277
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
1278
+ RubyCommand.Argument(name: "xcpretty_test_format", value: xcprettyTestFormat),
1279
+ RubyCommand.Argument(name: "xcpretty_formatter", value: xcprettyFormatter),
1280
+ RubyCommand.Argument(name: "xcpretty_report_junit", value: xcprettyReportJunit),
1281
+ RubyCommand.Argument(name: "xcpretty_report_html", value: xcprettyReportHtml),
1282
+ RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
1283
+ RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
1284
+ RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
1285
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1286
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1131
1287
  _ = runner.executeCommand(command)
1132
1288
  }
1133
1289
 
@@ -1219,8 +1375,6 @@ func bundleInstall(binstubs: String? = nil,
1219
1375
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1220
1376
  - useTimestampSuffix: Add timestamp suffix to screenshot filename
1221
1377
  - adbHost: Configure the host used by adb to connect, allows running on remote devices farm
1222
- - cleanStatusBar: Enabling this option will clean the status bar
1223
- - cleanStatusBarConfig: Specifies the configuration for the clean status bar
1224
1378
  */
1225
1379
  func captureAndroidScreenshots(androidHome: String? = nil,
1226
1380
  buildToolsVersion: String? = nil,
@@ -1243,9 +1397,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1243
1397
  exitOnTestFailure: Bool = true,
1244
1398
  reinstallApp: Bool = false,
1245
1399
  useTimestampSuffix: Bool = true,
1246
- adbHost: String? = nil,
1247
- cleanStatusBar: Bool = false,
1248
- cleanStatusBarConfig: [String : Any] = [:]) {
1400
+ adbHost: String? = nil) {
1249
1401
  let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
1250
1402
  RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
1251
1403
  RubyCommand.Argument(name: "locales", value: locales),
@@ -1267,9 +1419,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1267
1419
  RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
1268
1420
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1269
1421
  RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
1270
- RubyCommand.Argument(name: "adb_host", value: adbHost),
1271
- RubyCommand.Argument(name: "clean_status_bar", value: cleanStatusBar),
1272
- RubyCommand.Argument(name: "clean_status_bar_config", value: cleanStatusBarConfig)])
1422
+ RubyCommand.Argument(name: "adb_host", value: adbHost)])
1273
1423
  _ = runner.executeCommand(command)
1274
1424
  }
1275
1425
 
@@ -1311,6 +1461,8 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1311
1461
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
1312
1462
  - namespaceLogFiles: Separate the log files per device and per language
1313
1463
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1464
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1465
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1314
1466
  */
1315
1467
  func captureIosScreenshots(workspace: String? = nil,
1316
1468
  project: String? = nil,
@@ -1345,7 +1497,9 @@ func captureIosScreenshots(workspace: String? = nil,
1345
1497
  resultBundle: Bool = false,
1346
1498
  testTargetName: String? = nil,
1347
1499
  namespaceLogFiles: Any? = nil,
1348
- concurrentSimulators: Bool = true) {
1500
+ concurrentSimulators: Bool = true,
1501
+ disableSlideToType: Bool = false,
1502
+ clonedSourcePackagesPath: String? = nil) {
1349
1503
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1350
1504
  RubyCommand.Argument(name: "project", value: project),
1351
1505
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1379,7 +1533,9 @@ func captureIosScreenshots(workspace: String? = nil,
1379
1533
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1380
1534
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
1381
1535
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1382
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
1536
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1537
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1538
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1383
1539
  _ = runner.executeCommand(command)
1384
1540
  }
1385
1541
 
@@ -1421,6 +1577,8 @@ func captureIosScreenshots(workspace: String? = nil,
1421
1577
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
1422
1578
  - namespaceLogFiles: Separate the log files per device and per language
1423
1579
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1580
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1581
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1424
1582
  */
1425
1583
  func captureScreenshots(workspace: String? = nil,
1426
1584
  project: String? = nil,
@@ -1455,7 +1613,9 @@ func captureScreenshots(workspace: String? = nil,
1455
1613
  resultBundle: Bool = false,
1456
1614
  testTargetName: String? = nil,
1457
1615
  namespaceLogFiles: Any? = nil,
1458
- concurrentSimulators: Bool = true) {
1616
+ concurrentSimulators: Bool = true,
1617
+ disableSlideToType: Bool = false,
1618
+ clonedSourcePackagesPath: String? = nil) {
1459
1619
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1460
1620
  RubyCommand.Argument(name: "project", value: project),
1461
1621
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1489,7 +1649,9 @@ func captureScreenshots(workspace: String? = nil,
1489
1649
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1490
1650
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
1491
1651
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1492
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
1652
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1653
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1654
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1493
1655
  _ = runner.executeCommand(command)
1494
1656
  }
1495
1657
 
@@ -1566,6 +1728,7 @@ func carthage(command: String = "bootstrap",
1566
1728
 
1567
1729
  - parameters:
1568
1730
  - development: Create a development certificate instead of a distribution one
1731
+ - type: Create specific certificate type (takes precedence over :development)
1569
1732
  - force: Create a certificate even if an existing certificate exists
1570
1733
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
1571
1734
  - username: Your Apple ID Username
@@ -1581,8 +1744,9 @@ func carthage(command: String = "bootstrap",
1581
1744
  Use this action to download the latest code signing identity.
1582
1745
  */
1583
1746
  func cert(development: Bool = false,
1747
+ type: String? = nil,
1584
1748
  force: Bool = false,
1585
- generateAppleCerts: Bool = false,
1749
+ generateAppleCerts: Bool = true,
1586
1750
  username: String,
1587
1751
  teamId: String? = nil,
1588
1752
  teamName: String? = nil,
@@ -1590,8 +1754,9 @@ func cert(development: Bool = false,
1590
1754
  outputPath: String = ".",
1591
1755
  keychainPath: String,
1592
1756
  keychainPassword: String? = nil,
1593
- platform: Any = "ios") {
1757
+ platform: String = "ios") {
1594
1758
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
1759
+ RubyCommand.Argument(name: "type", value: type),
1595
1760
  RubyCommand.Argument(name: "force", value: force),
1596
1761
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
1597
1762
  RubyCommand.Argument(name: "username", value: username),
@@ -2148,10 +2313,13 @@ func createKeychain(name: String? = nil,
2148
2313
  - title: The title of the pull request
2149
2314
  - body: The contents of the pull request
2150
2315
  - labels: The labels for the pull request
2316
+ - milestone: The milestone ID (Integer) for the pull request
2151
2317
  - head: The name of the branch where your changes are implemented (defaults to the current branch name)
2152
2318
  - base: The name of the branch you want your changes pulled into (defaults to `master`)
2153
2319
  - apiUrl: The URL of GitHub API - used when the Enterprise (default to `https://api.github.com`)
2154
2320
  - assignees: The assignees for the pull request
2321
+ - reviewers: The reviewers (slug) for the pull request
2322
+ - teamReviewers: The team reviewers (slug) for the pull request
2155
2323
 
2156
2324
  - returns: The pull request URL when successful
2157
2325
  */
@@ -2160,19 +2328,25 @@ func createPullRequest(apiToken: String,
2160
2328
  title: String,
2161
2329
  body: String? = nil,
2162
2330
  labels: [String]? = nil,
2331
+ milestone: String? = nil,
2163
2332
  head: String? = nil,
2164
2333
  base: String = "master",
2165
2334
  apiUrl: String = "https://api.github.com",
2166
- assignees: [String]? = nil) {
2335
+ assignees: [String]? = nil,
2336
+ reviewers: [String]? = nil,
2337
+ teamReviewers: [String]? = nil) {
2167
2338
  let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
2168
2339
  RubyCommand.Argument(name: "repo", value: repo),
2169
2340
  RubyCommand.Argument(name: "title", value: title),
2170
2341
  RubyCommand.Argument(name: "body", value: body),
2171
2342
  RubyCommand.Argument(name: "labels", value: labels),
2343
+ RubyCommand.Argument(name: "milestone", value: milestone),
2172
2344
  RubyCommand.Argument(name: "head", value: head),
2173
2345
  RubyCommand.Argument(name: "base", value: base),
2174
2346
  RubyCommand.Argument(name: "api_url", value: apiUrl),
2175
- RubyCommand.Argument(name: "assignees", value: assignees)])
2347
+ RubyCommand.Argument(name: "assignees", value: assignees),
2348
+ RubyCommand.Argument(name: "reviewers", value: reviewers),
2349
+ RubyCommand.Argument(name: "team_reviewers", value: teamReviewers)])
2176
2350
  _ = runner.executeCommand(command)
2177
2351
  }
2178
2352
 
@@ -2275,8 +2449,8 @@ func deleteKeychain(name: String? = nil,
2275
2449
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
2276
2450
  - submitForReview: Submit the new version for Review after uploading everything
2277
2451
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
2278
- - automaticRelease: Should the app be automatically released once it's approved?
2279
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
2452
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
2453
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
2280
2454
  - phasedRelease: Enable the phased release feature of iTC
2281
2455
  - resetRatings: Reset the summary rating when you release a new version of the application
2282
2456
  - priceTier: The price tier of this application
@@ -2635,8 +2809,8 @@ func echo(message: String? = nil) {
2635
2809
  /**
2636
2810
  Raises an exception if not using `bundle exec` to run fastlane
2637
2811
 
2638
- This action will check if you are using bundle exec to run fastlane.
2639
- You can put it into `before_all` and make sure that fastlane is run using `bundle exec fastlane` command.
2812
+ This action will check if you are using `bundle exec` to run fastlane.
2813
+ You can put it into `before_all` to make sure that fastlane is ran using the `bundle exec fastlane` command.
2640
2814
  */
2641
2815
  func ensureBundleExec() {
2642
2816
  let command = RubyCommand(commandID: "", methodName: "ensure_bundle_exec", className: nil, args: [])
@@ -2938,6 +3112,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
2938
3112
 
2939
3113
  - parameters:
2940
3114
  - development: Create a development certificate instead of a distribution one
3115
+ - type: Create specific certificate type (takes precedence over :development)
2941
3116
  - force: Create a certificate even if an existing certificate exists
2942
3117
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
2943
3118
  - username: Your Apple ID Username
@@ -2953,8 +3128,9 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
2953
3128
  Use this action to download the latest code signing identity.
2954
3129
  */
2955
3130
  func getCertificates(development: Bool = false,
3131
+ type: String? = nil,
2956
3132
  force: Bool = false,
2957
- generateAppleCerts: Bool = false,
3133
+ generateAppleCerts: Bool = true,
2958
3134
  username: String,
2959
3135
  teamId: String? = nil,
2960
3136
  teamName: String? = nil,
@@ -2962,8 +3138,9 @@ func getCertificates(development: Bool = false,
2962
3138
  outputPath: String = ".",
2963
3139
  keychainPath: String,
2964
3140
  keychainPassword: String? = nil,
2965
- platform: Any = "ios") {
3141
+ platform: String = "ios") {
2966
3142
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3143
+ RubyCommand.Argument(name: "type", value: type),
2967
3144
  RubyCommand.Argument(name: "force", value: force),
2968
3145
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
2969
3146
  RubyCommand.Argument(name: "username", value: username),
@@ -3425,6 +3602,7 @@ func googlePlayTrackVersionCodes(packageName: String,
3425
3602
  - task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
3426
3603
  - flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
3427
3604
  - buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
3605
+ - tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
3428
3606
  - flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
3429
3607
  - projectDir: The root directory of the gradle project
3430
3608
  - gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
@@ -3438,9 +3616,10 @@ func googlePlayTrackVersionCodes(packageName: String,
3438
3616
 
3439
3617
  Run `./gradlew tasks` to get a list of all available gradle tasks for your project
3440
3618
  */
3441
- func gradle(task: String,
3619
+ func gradle(task: String? = nil,
3442
3620
  flavor: String? = nil,
3443
3621
  buildType: String? = nil,
3622
+ tasks: [String]? = nil,
3444
3623
  flags: String? = nil,
3445
3624
  projectDir: String = ".",
3446
3625
  gradlePath: String? = nil,
@@ -3452,6 +3631,7 @@ func gradle(task: String,
3452
3631
  let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
3453
3632
  RubyCommand.Argument(name: "flavor", value: flavor),
3454
3633
  RubyCommand.Argument(name: "build_type", value: buildType),
3634
+ RubyCommand.Argument(name: "tasks", value: tasks),
3455
3635
  RubyCommand.Argument(name: "flags", value: flags),
3456
3636
  RubyCommand.Argument(name: "project_dir", value: projectDir),
3457
3637
  RubyCommand.Argument(name: "gradle_path", value: gradlePath),
@@ -3464,7 +3644,7 @@ func gradle(task: String,
3464
3644
  }
3465
3645
 
3466
3646
  /**
3467
- Alias for the `build_ios_app` action
3647
+ Alias for the `build_app` action
3468
3648
 
3469
3649
  - parameters:
3470
3650
  - workspace: Path to the workspace file
@@ -3477,6 +3657,7 @@ func gradle(task: String,
3477
3657
  - silent: Hide all information that's not necessary while building
3478
3658
  - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
3479
3659
  - skipPackageIpa: Should we skip packaging the ipa?
3660
+ - skipPackagePkg: Should we skip packaging the pkg?
3480
3661
  - includeSymbols: Should the ipa file include symbols?
3481
3662
  - includeBitcode: Should the ipa file include bitcode?
3482
3663
  - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
@@ -3485,6 +3666,8 @@ func gradle(task: String,
3485
3666
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
3486
3667
  - skipArchive: After building, don't archive, effectively not including -archivePath param
3487
3668
  - skipCodesigning: Build without codesigning
3669
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
3670
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3488
3671
  - buildPath: The directory in which the archive should be stored in
3489
3672
  - archivePath: The path to the created archive
3490
3673
  - derivedDataPath: The directory where built products and other derived data will go
@@ -3507,6 +3690,7 @@ func gradle(task: String,
3507
3690
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
3508
3691
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
3509
3692
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
3693
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
3510
3694
 
3511
3695
  - returns: The absolute path to the generated ipa file
3512
3696
 
@@ -3522,6 +3706,7 @@ func gym(workspace: Any? = gymfile.workspace,
3522
3706
  silent: Bool = gymfile.silent,
3523
3707
  codesigningIdentity: Any? = gymfile.codesigningIdentity,
3524
3708
  skipPackageIpa: Bool = gymfile.skipPackageIpa,
3709
+ skipPackagePkg: Bool = gymfile.skipPackagePkg,
3525
3710
  includeSymbols: Bool? = gymfile.includeSymbols,
3526
3711
  includeBitcode: Bool? = gymfile.includeBitcode,
3527
3712
  exportMethod: Any? = gymfile.exportMethod,
@@ -3530,6 +3715,8 @@ func gym(workspace: Any? = gymfile.workspace,
3530
3715
  skipBuildArchive: Bool? = gymfile.skipBuildArchive,
3531
3716
  skipArchive: Bool? = gymfile.skipArchive,
3532
3717
  skipCodesigning: Bool? = gymfile.skipCodesigning,
3718
+ catalystPlatform: Any? = gymfile.catalystPlatform,
3719
+ installerCertName: Any? = gymfile.installerCertName,
3533
3720
  buildPath: Any? = gymfile.buildPath,
3534
3721
  archivePath: Any? = gymfile.archivePath,
3535
3722
  derivedDataPath: Any? = gymfile.derivedDataPath,
@@ -3551,7 +3738,8 @@ func gym(workspace: Any? = gymfile.workspace,
3551
3738
  xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
3552
3739
  analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
3553
3740
  xcprettyUtf: Bool? = gymfile.xcprettyUtf,
3554
- skipProfileDetection: Bool = gymfile.skipProfileDetection) {
3741
+ skipProfileDetection: Bool = gymfile.skipProfileDetection,
3742
+ clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath) {
3555
3743
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
3556
3744
  RubyCommand.Argument(name: "project", value: project),
3557
3745
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -3562,6 +3750,7 @@ func gym(workspace: Any? = gymfile.workspace,
3562
3750
  RubyCommand.Argument(name: "silent", value: silent),
3563
3751
  RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
3564
3752
  RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
3753
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
3565
3754
  RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
3566
3755
  RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
3567
3756
  RubyCommand.Argument(name: "export_method", value: exportMethod),
@@ -3570,6 +3759,8 @@ func gym(workspace: Any? = gymfile.workspace,
3570
3759
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
3571
3760
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
3572
3761
  RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
3762
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
3763
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
3573
3764
  RubyCommand.Argument(name: "build_path", value: buildPath),
3574
3765
  RubyCommand.Argument(name: "archive_path", value: archivePath),
3575
3766
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -3591,7 +3782,8 @@ func gym(workspace: Any? = gymfile.workspace,
3591
3782
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
3592
3783
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
3593
3784
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
3594
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
3785
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
3786
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
3595
3787
  _ = runner.executeCommand(command)
3596
3788
  }
3597
3789
 
@@ -3884,7 +4076,7 @@ func importCertificate(certificatePath: String,
3884
4076
  This action will increment the version number.
3885
4077
  You first have to set up your Xcode project, if you haven't done it already: [https://developer.apple.com/library/ios/qa/qa1827/_index.html](https://developer.apple.com/library/ios/qa/qa1827/_index.html).
3886
4078
  */
3887
- @discardableResult func incrementVersionNumber(bumpType: String = "patch",
4079
+ @discardableResult func incrementVersionNumber(bumpType: String = "bump",
3888
4080
  versionNumber: String? = nil,
3889
4081
  xcodeproj: String? = nil) -> String {
3890
4082
  let command = RubyCommand(commandID: "", methodName: "increment_version_number", className: nil, args: [RubyCommand.Argument(name: "bump_type", value: bumpType),
@@ -4083,10 +4275,13 @@ func jira(url: String,
4083
4275
  /**
4084
4276
  Get the most recent git tag
4085
4277
 
4278
+ - parameter pattern: Pattern to filter tags when looking for last one. Limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, * at the end is implied
4279
+
4086
4280
  If you are using this action on a **shallow clone**, *the default with some CI systems like Bamboo*, you need to ensure that you have also pulled all the git tags appropriately. Assuming your git repo has the correct remote set you can issue `sh('git fetch --tags')`.
4281
+ Pattern parameter allows you to filter to a subset of tags.
4087
4282
  */
4088
- @discardableResult func lastGitTag() -> String {
4089
- let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [])
4283
+ @discardableResult func lastGitTag(pattern: String? = nil) -> String {
4284
+ let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [RubyCommand.Argument(name: "pattern", value: pattern)])
4090
4285
  return runner.executeCommand(command)
4091
4286
  }
4092
4287
 
@@ -4223,7 +4418,8 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4223
4418
  Alias for the `sync_code_signing` action
4224
4419
 
4225
4420
  - parameters:
4226
- - type: Define the profile type, can be appstore, adhoc, development, enterprise
4421
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
4422
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
4227
4423
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
4228
4424
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
4229
4425
  - skipProvisioningProfiles: Skip syncing provisioning profiles
@@ -4239,6 +4435,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4239
4435
  - shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
4240
4436
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
4241
4437
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
4438
+ - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
4242
4439
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
4243
4440
  - googleCloudKeysFile: Path to the gc_keys.json file
4244
4441
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -4248,7 +4445,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4248
4445
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
4249
4446
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
4250
4447
  - skipDocs: Skip generation of a README.md for the created git repository
4251
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
4448
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4252
4449
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
4253
4450
  - outputPath: Path in which to export certificates, key and profile
4254
4451
  - verbose: Print out extra information and all commands
@@ -4256,6 +4453,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4256
4453
  More information: https://docs.fastlane.tools/actions/match/
4257
4454
  */
4258
4455
  func match(type: Any = matchfile.type,
4456
+ additionalCertTypes: [String]? = matchfile.additionalCertTypes,
4259
4457
  readonly: Bool = matchfile.readonly,
4260
4458
  generateAppleCerts: Bool = matchfile.generateAppleCerts,
4261
4459
  skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
@@ -4271,6 +4469,7 @@ func match(type: Any = matchfile.type,
4271
4469
  shallowClone: Bool = matchfile.shallowClone,
4272
4470
  cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
4273
4471
  gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
4472
+ gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
4274
4473
  googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
4275
4474
  googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
4276
4475
  googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
@@ -4285,6 +4484,7 @@ func match(type: Any = matchfile.type,
4285
4484
  outputPath: Any? = matchfile.outputPath,
4286
4485
  verbose: Bool = matchfile.verbose) {
4287
4486
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
4487
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
4288
4488
  RubyCommand.Argument(name: "readonly", value: readonly),
4289
4489
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
4290
4490
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
@@ -4300,6 +4500,7 @@ func match(type: Any = matchfile.type,
4300
4500
  RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
4301
4501
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
4302
4502
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
4503
+ RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
4303
4504
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
4304
4505
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
4305
4506
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -4670,7 +4871,7 @@ func pem(development: Bool = false,
4670
4871
  - localizedBuildInfo: Localized beta app test info for what's new
4671
4872
  - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
4672
4873
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
4673
- - skipWaitingForBuildProcessing: Don't wait for the build to process. If set to true, the changelog won't be set, `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan)
4874
+ - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
4674
4875
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
4675
4876
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
4676
4877
  - distributeExternal: Should the build be distributed to external testers?
@@ -5338,7 +5539,7 @@ func rubocop() {
5338
5539
  Verifies the minimum ruby version required
5339
5540
 
5340
5541
  Add this to your `Fastfile` to require a certain version of _ruby_.
5341
- Put it at the top of your `Fastfile to ensure that _fastlane_ is executed appropriately.
5542
+ Put it at the top of your `Fastfile` to ensure that _fastlane_ is executed appropriately.
5342
5543
  */
5343
5544
  func rubyVersion() {
5344
5545
  let command = RubyCommand(commandID: "", methodName: "ruby_version", className: nil, args: [])
@@ -5357,6 +5558,7 @@ func rubyVersion() {
5357
5558
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
5358
5559
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
5359
5560
  - resetSimulator: Enabling this option will automatically erase the simulator before running the application
5561
+ - disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
5360
5562
  - prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
5361
5563
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
5362
5564
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -5391,6 +5593,8 @@ func rubyVersion() {
5391
5593
  - configuration: The configuration to use when building the app. Defaults to 'Release'
5392
5594
  - xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
5393
5595
  - xcconfig: Use an extra XCCONFIG file to build your app
5596
+ - appName: App name to use in slack message and logfile name
5597
+ - deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
5394
5598
  - slackUrl: Create an Incoming WebHook for your Slack group to post results there
5395
5599
  - slackChannel: #channel or @username
5396
5600
  - slackMessage: The message included with each message posted to slack
@@ -5402,6 +5606,7 @@ func rubyVersion() {
5402
5606
  - destination: Use only if you're a pro, use the other options instead
5403
5607
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
5404
5608
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5609
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5405
5610
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
5406
5611
 
5407
5612
  More information: https://docs.fastlane.tools/actions/scan/
@@ -5414,6 +5619,7 @@ func runTests(workspace: String? = nil,
5414
5619
  skipDetectDevices: Bool = false,
5415
5620
  forceQuitSimulator: Bool = false,
5416
5621
  resetSimulator: Bool = false,
5622
+ disableSlideToType: Bool = true,
5417
5623
  prelaunchSimulator: Bool? = nil,
5418
5624
  reinstallApp: Bool = false,
5419
5625
  appIdentifier: String? = nil,
@@ -5448,6 +5654,8 @@ func runTests(workspace: String? = nil,
5448
5654
  configuration: String? = nil,
5449
5655
  xcargs: String? = nil,
5450
5656
  xcconfig: String? = nil,
5657
+ appName: String? = nil,
5658
+ deploymentTargetVersion: String? = nil,
5451
5659
  slackUrl: String? = nil,
5452
5660
  slackChannel: String? = nil,
5453
5661
  slackMessage: String? = nil,
@@ -5459,6 +5667,7 @@ func runTests(workspace: String? = nil,
5459
5667
  destination: Any? = nil,
5460
5668
  customReportFileName: String? = nil,
5461
5669
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
5670
+ clonedSourcePackagesPath: String? = nil,
5462
5671
  failBuild: Bool = true) {
5463
5672
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
5464
5673
  RubyCommand.Argument(name: "project", value: project),
@@ -5468,6 +5677,7 @@ func runTests(workspace: String? = nil,
5468
5677
  RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
5469
5678
  RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
5470
5679
  RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
5680
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
5471
5681
  RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
5472
5682
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
5473
5683
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
@@ -5502,6 +5712,8 @@ func runTests(workspace: String? = nil,
5502
5712
  RubyCommand.Argument(name: "configuration", value: configuration),
5503
5713
  RubyCommand.Argument(name: "xcargs", value: xcargs),
5504
5714
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
5715
+ RubyCommand.Argument(name: "app_name", value: appName),
5716
+ RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
5505
5717
  RubyCommand.Argument(name: "slack_url", value: slackUrl),
5506
5718
  RubyCommand.Argument(name: "slack_channel", value: slackChannel),
5507
5719
  RubyCommand.Argument(name: "slack_message", value: slackMessage),
@@ -5513,6 +5725,7 @@ func runTests(workspace: String? = nil,
5513
5725
  RubyCommand.Argument(name: "destination", value: destination),
5514
5726
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
5515
5727
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
5728
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
5516
5729
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
5517
5730
  _ = runner.executeCommand(command)
5518
5731
  }
@@ -5603,6 +5816,7 @@ func say(text: Any,
5603
5816
  - skipDetectDevices: Should skip auto detecting of devices if none were specified
5604
5817
  - forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
5605
5818
  - resetSimulator: Enabling this option will automatically erase the simulator before running the application
5819
+ - disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
5606
5820
  - prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
5607
5821
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
5608
5822
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -5637,6 +5851,8 @@ func say(text: Any,
5637
5851
  - configuration: The configuration to use when building the app. Defaults to 'Release'
5638
5852
  - xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
5639
5853
  - xcconfig: Use an extra XCCONFIG file to build your app
5854
+ - appName: App name to use in slack message and logfile name
5855
+ - deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
5640
5856
  - slackUrl: Create an Incoming WebHook for your Slack group to post results there
5641
5857
  - slackChannel: #channel or @username
5642
5858
  - slackMessage: The message included with each message posted to slack
@@ -5648,6 +5864,7 @@ func say(text: Any,
5648
5864
  - destination: Use only if you're a pro, use the other options instead
5649
5865
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
5650
5866
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5867
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5651
5868
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
5652
5869
 
5653
5870
  More information: https://docs.fastlane.tools/actions/scan/
@@ -5660,6 +5877,7 @@ func scan(workspace: Any? = scanfile.workspace,
5660
5877
  skipDetectDevices: Bool = scanfile.skipDetectDevices,
5661
5878
  forceQuitSimulator: Bool = scanfile.forceQuitSimulator,
5662
5879
  resetSimulator: Bool = scanfile.resetSimulator,
5880
+ disableSlideToType: Bool = scanfile.disableSlideToType,
5663
5881
  prelaunchSimulator: Bool? = scanfile.prelaunchSimulator,
5664
5882
  reinstallApp: Bool = scanfile.reinstallApp,
5665
5883
  appIdentifier: Any? = scanfile.appIdentifier,
@@ -5694,6 +5912,8 @@ func scan(workspace: Any? = scanfile.workspace,
5694
5912
  configuration: Any? = scanfile.configuration,
5695
5913
  xcargs: Any? = scanfile.xcargs,
5696
5914
  xcconfig: Any? = scanfile.xcconfig,
5915
+ appName: Any? = scanfile.appName,
5916
+ deploymentTargetVersion: Any? = scanfile.deploymentTargetVersion,
5697
5917
  slackUrl: Any? = scanfile.slackUrl,
5698
5918
  slackChannel: Any? = scanfile.slackChannel,
5699
5919
  slackMessage: Any? = scanfile.slackMessage,
@@ -5705,6 +5925,7 @@ func scan(workspace: Any? = scanfile.workspace,
5705
5925
  destination: Any? = scanfile.destination,
5706
5926
  customReportFileName: Any? = scanfile.customReportFileName,
5707
5927
  xcodebuildCommand: Any = scanfile.xcodebuildCommand,
5928
+ clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
5708
5929
  failBuild: Bool = scanfile.failBuild) {
5709
5930
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
5710
5931
  RubyCommand.Argument(name: "project", value: project),
@@ -5714,6 +5935,7 @@ func scan(workspace: Any? = scanfile.workspace,
5714
5935
  RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
5715
5936
  RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
5716
5937
  RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
5938
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
5717
5939
  RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
5718
5940
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
5719
5941
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
@@ -5748,6 +5970,8 @@ func scan(workspace: Any? = scanfile.workspace,
5748
5970
  RubyCommand.Argument(name: "configuration", value: configuration),
5749
5971
  RubyCommand.Argument(name: "xcargs", value: xcargs),
5750
5972
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
5973
+ RubyCommand.Argument(name: "app_name", value: appName),
5974
+ RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
5751
5975
  RubyCommand.Argument(name: "slack_url", value: slackUrl),
5752
5976
  RubyCommand.Argument(name: "slack_channel", value: slackChannel),
5753
5977
  RubyCommand.Argument(name: "slack_message", value: slackMessage),
@@ -5759,6 +5983,7 @@ func scan(workspace: Any? = scanfile.workspace,
5759
5983
  RubyCommand.Argument(name: "destination", value: destination),
5760
5984
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
5761
5985
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
5986
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
5762
5987
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
5763
5988
  _ = runner.executeCommand(command)
5764
5989
  }
@@ -5815,8 +6040,6 @@ func scp(username: String,
5815
6040
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
5816
6041
  - useTimestampSuffix: Add timestamp suffix to screenshot filename
5817
6042
  - adbHost: Configure the host used by adb to connect, allows running on remote devices farm
5818
- - cleanStatusBar: Enabling this option will clean the status bar
5819
- - cleanStatusBarConfig: Specifies the configuration for the clean status bar
5820
6043
  */
5821
6044
  func screengrab(androidHome: Any? = screengrabfile.androidHome,
5822
6045
  buildToolsVersion: Any? = screengrabfile.buildToolsVersion,
@@ -5839,9 +6062,7 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
5839
6062
  exitOnTestFailure: Bool = screengrabfile.exitOnTestFailure,
5840
6063
  reinstallApp: Bool = screengrabfile.reinstallApp,
5841
6064
  useTimestampSuffix: Bool = screengrabfile.useTimestampSuffix,
5842
- adbHost: Any? = screengrabfile.adbHost,
5843
- cleanStatusBar: Bool = screengrabfile.cleanStatusBar,
5844
- cleanStatusBarConfig: [String : Any] = screengrabfile.cleanStatusBarConfig) {
6065
+ adbHost: Any? = screengrabfile.adbHost) {
5845
6066
  let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
5846
6067
  RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
5847
6068
  RubyCommand.Argument(name: "locales", value: locales),
@@ -5863,9 +6084,7 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
5863
6084
  RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
5864
6085
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
5865
6086
  RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
5866
- RubyCommand.Argument(name: "adb_host", value: adbHost),
5867
- RubyCommand.Argument(name: "clean_status_bar", value: cleanStatusBar),
5868
- RubyCommand.Argument(name: "clean_status_bar_config", value: cleanStatusBarConfig)])
6087
+ RubyCommand.Argument(name: "adb_host", value: adbHost)])
5869
6088
  _ = runner.executeCommand(command)
5870
6089
  }
5871
6090
 
@@ -5951,7 +6170,7 @@ Access things like 'html_url', 'tag_name', 'name', 'body'
5951
6170
  description: String? = nil,
5952
6171
  isDraft: Bool = false,
5953
6172
  isPrerelease: Bool = false,
5954
- uploadAssets: [String]? = nil) -> [String : String] {
6173
+ uploadAssets: [String]? = nil) -> [String : Any] {
5955
6174
  let command = RubyCommand(commandID: "", methodName: "set_github_release", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
5956
6175
  RubyCommand.Argument(name: "server_url", value: serverUrl),
5957
6176
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -6015,7 +6234,7 @@ func setPodKey(useBundleExec: Bool = true,
6015
6234
 
6016
6235
  - parameters:
6017
6236
  - force: Force setup, even if not executed by CI
6018
- - provider: CI provider
6237
+ - provider: CI provider. If none is set, the provider is detected automatically
6019
6238
 
6020
6239
  - Creates a new temporary keychain for use with match|
6021
6240
  - Switches match to `readonly` mode to not create new profiles/cert on CI|
@@ -6438,6 +6657,8 @@ func slather(buildDirectory: String? = nil,
6438
6657
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
6439
6658
  - namespaceLogFiles: Separate the log files per device and per language
6440
6659
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
6660
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
6661
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
6441
6662
  */
6442
6663
  func snapshot(workspace: Any? = snapshotfile.workspace,
6443
6664
  project: Any? = snapshotfile.project,
@@ -6472,7 +6693,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6472
6693
  resultBundle: Bool = snapshotfile.resultBundle,
6473
6694
  testTargetName: Any? = snapshotfile.testTargetName,
6474
6695
  namespaceLogFiles: Any? = snapshotfile.namespaceLogFiles,
6475
- concurrentSimulators: Bool = snapshotfile.concurrentSimulators) {
6696
+ concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
6697
+ disableSlideToType: Bool = snapshotfile.disableSlideToType,
6698
+ clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath) {
6476
6699
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6477
6700
  RubyCommand.Argument(name: "project", value: project),
6478
6701
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6506,7 +6729,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6506
6729
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
6507
6730
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
6508
6731
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
6509
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
6732
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
6733
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
6734
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
6510
6735
  _ = runner.executeCommand(command)
6511
6736
  }
6512
6737
 
@@ -6845,7 +7070,8 @@ func swiftlint(mode: Any = "lint",
6845
7070
  Easily sync your certificates and profiles across your team (via _match_)
6846
7071
 
6847
7072
  - parameters:
6848
- - type: Define the profile type, can be appstore, adhoc, development, enterprise
7073
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
7074
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6849
7075
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6850
7076
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
6851
7077
  - skipProvisioningProfiles: Skip syncing provisioning profiles
@@ -6861,6 +7087,7 @@ func swiftlint(mode: Any = "lint",
6861
7087
  - shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
6862
7088
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
6863
7089
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
7090
+ - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
6864
7091
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6865
7092
  - googleCloudKeysFile: Path to the gc_keys.json file
6866
7093
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -6870,7 +7097,7 @@ func swiftlint(mode: Any = "lint",
6870
7097
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
6871
7098
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6872
7099
  - skipDocs: Skip generation of a README.md for the created git repository
6873
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
7100
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
6874
7101
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
6875
7102
  - outputPath: Path in which to export certificates, key and profile
6876
7103
  - verbose: Print out extra information and all commands
@@ -6878,8 +7105,9 @@ func swiftlint(mode: Any = "lint",
6878
7105
  More information: https://docs.fastlane.tools/actions/match/
6879
7106
  */
6880
7107
  func syncCodeSigning(type: String = "development",
7108
+ additionalCertTypes: [String]? = nil,
6881
7109
  readonly: Bool = false,
6882
- generateAppleCerts: Bool = false,
7110
+ generateAppleCerts: Bool = true,
6883
7111
  skipProvisioningProfiles: Bool = false,
6884
7112
  appIdentifier: [String],
6885
7113
  username: String,
@@ -6893,6 +7121,7 @@ func syncCodeSigning(type: String = "development",
6893
7121
  shallowClone: Bool = false,
6894
7122
  cloneBranchDirectly: Bool = false,
6895
7123
  gitBasicAuthorization: String? = nil,
7124
+ gitBearerAuthorization: String? = nil,
6896
7125
  googleCloudBucketName: String? = nil,
6897
7126
  googleCloudKeysFile: String? = nil,
6898
7127
  googleCloudProjectId: String? = nil,
@@ -6902,11 +7131,12 @@ func syncCodeSigning(type: String = "development",
6902
7131
  forceForNewDevices: Bool = false,
6903
7132
  skipConfirmation: Bool = false,
6904
7133
  skipDocs: Bool = false,
6905
- platform: Any = "ios",
7134
+ platform: String = "ios",
6906
7135
  templateName: String? = nil,
6907
7136
  outputPath: String? = nil,
6908
7137
  verbose: Bool = false) {
6909
7138
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
7139
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
6910
7140
  RubyCommand.Argument(name: "readonly", value: readonly),
6911
7141
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
6912
7142
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
@@ -6922,6 +7152,7 @@ func syncCodeSigning(type: String = "development",
6922
7152
  RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
6923
7153
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
6924
7154
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
7155
+ RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
6925
7156
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
6926
7157
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
6927
7158
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -6969,6 +7200,7 @@ func teamName() {
6969
7200
  - autoUpdate: Allows an easy upgrade of all users to the current version. To enable set to 'on'
6970
7201
  - notify: Send email to testers
6971
7202
  - options: Array of options (shake,video_only_wifi,anonymous)
7203
+ - custom: Array of custom options. Contact support@testfairy.com for more information
6972
7204
  - timeout: Request timeout in seconds
6973
7205
 
6974
7206
  You can retrieve your API key on [your settings page](https://free.testfairy.com/settings/)
@@ -6984,6 +7216,7 @@ func testfairy(apiKey: String,
6984
7216
  autoUpdate: String = "off",
6985
7217
  notify: String = "off",
6986
7218
  options: [String] = [],
7219
+ custom: String = "",
6987
7220
  timeout: Int? = nil) {
6988
7221
  let command = RubyCommand(commandID: "", methodName: "testfairy", className: nil, args: [RubyCommand.Argument(name: "api_key", value: apiKey),
6989
7222
  RubyCommand.Argument(name: "ipa", value: ipa),
@@ -6996,6 +7229,7 @@ func testfairy(apiKey: String,
6996
7229
  RubyCommand.Argument(name: "auto_update", value: autoUpdate),
6997
7230
  RubyCommand.Argument(name: "notify", value: notify),
6998
7231
  RubyCommand.Argument(name: "options", value: options),
7232
+ RubyCommand.Argument(name: "custom", value: custom),
6999
7233
  RubyCommand.Argument(name: "timeout", value: timeout)])
7000
7234
  _ = runner.executeCommand(command)
7001
7235
  }
@@ -7017,7 +7251,7 @@ func testfairy(apiKey: String,
7017
7251
  - localizedBuildInfo: Localized beta app test info for what's new
7018
7252
  - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
7019
7253
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
7020
- - skipWaitingForBuildProcessing: Don't wait for the build to process. If set to true, the changelog won't be set, `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan)
7254
+ - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
7021
7255
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
7022
7256
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7023
7257
  - distributeExternal: Should the build be distributed to external testers?
@@ -7319,7 +7553,7 @@ func updateKeychainAccessGroups(entitlementsFile: String,
7319
7553
  - plistPath: Path to plist file
7320
7554
  - block: A block to process plist with custom logic
7321
7555
 
7322
- This action allows you to modify any `plist` file.
7556
+ This action allows you to modify any value inside any `plist` file.
7323
7557
  */
7324
7558
  func updatePlist(plistPath: String? = nil,
7325
7559
  block: Any) {
@@ -7535,8 +7769,8 @@ func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/api/0",
7535
7769
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
7536
7770
  - submitForReview: Submit the new version for Review after uploading everything
7537
7771
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
7538
- - automaticRelease: Should the app be automatically released once it's approved?
7539
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
7772
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
7773
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
7540
7774
  - phasedRelease: Enable the phased release feature of iTC
7541
7775
  - resetRatings: Reset the summary rating when you release a new version of the application
7542
7776
  - priceTier: The price tier of this application
@@ -7819,6 +8053,45 @@ func uploadToPlayStore(packageName: String,
7819
8053
  _ = runner.executeCommand(command)
7820
8054
  }
7821
8055
 
8056
+ /**
8057
+ Upload binaries to Google Play Internal App Sharing (via _supply_)
8058
+
8059
+ - parameters:
8060
+ - packageName: The package name of the application to use
8061
+ - jsonKey: The path to a file containing service account JSON, used to authenticate with Google
8062
+ - jsonKeyData: The raw service account JSON data used to authenticate with Google
8063
+ - apk: Path to the APK file to upload
8064
+ - apkPaths: An array of paths to APK files to upload
8065
+ - aab: Path to the AAB file to upload
8066
+ - aabPaths: An array of paths to AAB files to upload
8067
+ - rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
8068
+ - timeout: Timeout for read, open, and send (in seconds)
8069
+
8070
+ - returns: Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded).
8071
+
8072
+ More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/
8073
+ */
8074
+ func uploadToPlayStoreInternalAppSharing(packageName: String,
8075
+ jsonKey: String? = nil,
8076
+ jsonKeyData: String? = nil,
8077
+ apk: String? = nil,
8078
+ apkPaths: [String]? = nil,
8079
+ aab: String? = nil,
8080
+ aabPaths: [String]? = nil,
8081
+ rootUrl: String? = nil,
8082
+ timeout: Int = 300) {
8083
+ let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
8084
+ RubyCommand.Argument(name: "json_key", value: jsonKey),
8085
+ RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
8086
+ RubyCommand.Argument(name: "apk", value: apk),
8087
+ RubyCommand.Argument(name: "apk_paths", value: apkPaths),
8088
+ RubyCommand.Argument(name: "aab", value: aab),
8089
+ RubyCommand.Argument(name: "aab_paths", value: aabPaths),
8090
+ RubyCommand.Argument(name: "root_url", value: rootUrl),
8091
+ RubyCommand.Argument(name: "timeout", value: timeout)])
8092
+ _ = runner.executeCommand(command)
8093
+ }
8094
+
7822
8095
  /**
7823
8096
  Upload new binary to App Store Connect for TestFlight beta testing (via _pilot_)
7824
8097
 
@@ -7836,7 +8109,7 @@ func uploadToPlayStore(packageName: String,
7836
8109
  - localizedBuildInfo: Localized beta app test info for what's new
7837
8110
  - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
7838
8111
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
7839
- - skipWaitingForBuildProcessing: Don't wait for the build to process. If set to true, the changelog won't be set, `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan)
8112
+ - skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
7840
8113
  - updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
7841
8114
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7842
8115
  - distributeExternal: Should the build be distributed to external testers?
@@ -8096,7 +8369,10 @@ func xcexport() {
8096
8369
  /**
8097
8370
  Change the xcode-path to use. Useful for beta versions of Xcode
8098
8371
 
8099
- Select and build with the Xcode installed at the provided path. Use the `xcversion` action if you want to select an Xcode based on a version specifier or you don't have known, stable paths as may happen in a CI environment.
8372
+ Select and build with the Xcode installed at the provided path.
8373
+ Use the `xcversion` action if you want to select an Xcode:
8374
+ - Based on a version specifier or
8375
+ - You don't have known, stable paths, as may happen in a CI environment.
8100
8376
  */
8101
8377
  func xcodeSelect() {
8102
8378
  let command = RubyCommand(commandID: "", methodName: "xcode_select", className: nil, args: [])
@@ -8211,7 +8487,7 @@ func xcov(workspace: String? = nil,
8211
8487
  coverallsServiceJobId: String? = nil,
8212
8488
  coverallsRepoToken: String? = nil,
8213
8489
  xcconfig: String? = nil,
8214
- ideFoundationPath: String = "/Applications/Xcode-10.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8490
+ ideFoundationPath: String = "/Applications/Xcode-11.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8215
8491
  legacySupport: Bool = false) {
8216
8492
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8217
8493
  RubyCommand.Argument(name: "project", value: project),
@@ -8356,4 +8632,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8356
8632
 
8357
8633
  // Please don't remove the lines below
8358
8634
  // They are used to detect outdated files
8359
- // FastlaneRunnerAPIVersion [0.9.64]
8635
+ // FastlaneRunnerAPIVersion [0.9.69]