fastlane 2.151.1 → 2.154.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -74
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -1
  4. data/deliver/lib/deliver/commands_generator.rb +7 -4
  5. data/deliver/lib/deliver/detect_values.rb +9 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +36 -31
  7. data/deliver/lib/deliver/options.rb +1 -1
  8. data/deliver/lib/deliver/runner.rb +5 -10
  9. data/deliver/lib/deliver/setup.rb +92 -3
  10. data/deliver/lib/deliver/submit_for_review.rb +4 -6
  11. data/deliver/lib/deliver/upload_metadata.rb +53 -32
  12. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  13. data/deliver/lib/deliver/upload_screenshots.rb +76 -45
  14. data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
  15. data/{frameit/lib/frameit/.editor.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
  16. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  17. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  18. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
  19. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
  20. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  21. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  22. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -1
  23. data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
  24. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +11 -3
  25. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +1 -1
  26. data/fastlane/lib/fastlane/runner.rb +3 -1
  27. data/fastlane/lib/fastlane/version.rb +1 -1
  28. data/fastlane/swift/Deliverfile.swift +1 -1
  29. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  30. data/fastlane/swift/Fastlane.swift +47 -13
  31. data/fastlane/swift/Gymfile.swift +1 -1
  32. data/fastlane/swift/GymfileProtocol.swift +1 -1
  33. data/fastlane/swift/Matchfile.swift +1 -1
  34. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  35. data/fastlane/swift/Precheckfile.swift +1 -1
  36. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  37. data/fastlane/swift/Scanfile.swift +1 -1
  38. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  39. data/fastlane/swift/Screengrabfile.swift +1 -1
  40. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  41. data/fastlane/swift/Snapshotfile.swift +1 -1
  42. data/fastlane/swift/SnapshotfileProtocol.swift +5 -1
  43. data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
  44. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +6 -3
  45. data/frameit/lib/frameit/editor.rb +11 -6
  46. data/gym/lib/gym/module.rb +8 -0
  47. data/gym/lib/gym/runner.rb +16 -9
  48. data/match/lib/match/options.rb +9 -2
  49. data/match/lib/match/runner.rb +5 -4
  50. data/match/lib/match/storage/git_storage.rb +16 -2
  51. data/pilot/lib/pilot/build_manager.rb +9 -0
  52. data/pilot/lib/pilot/options.rb +7 -1
  53. data/scan/lib/scan/runner.rb +19 -6
  54. data/snapshot/lib/snapshot/options.rb +5 -0
  55. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  56. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
  57. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  58. data/spaceship/lib/spaceship/connect_api/client.rb +3 -3
  59. data/spaceship/lib/spaceship/connect_api/model.rb +14 -0
  60. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  61. data/spaceship/lib/spaceship/connect_api/models/app.rb +59 -3
  62. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  63. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +5 -4
  64. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  65. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  66. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
  67. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  68. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  69. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  70. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  71. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  72. metadata +37 -64
  73. data/deliver/lib/deliver/.download_screenshots.rb.swp +0 -0
  74. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
@@ -22,7 +22,7 @@ module Fastlane
22
22
 
23
23
  # Process options
24
24
  version = params[:version]
25
- build_number = params[:build_number]
25
+ build_number = params[:build_number].to_s unless params[:build_number].nil?
26
26
  platform = params[:platform]
27
27
  output_directory = params[:output_directory]
28
28
  wait_for_dsym_processing = params[:wait_for_dsym_processing]
@@ -258,7 +258,8 @@ module Fastlane
258
258
  short_option: "-b",
259
259
  env_name: "DOWNLOAD_DSYMS_BUILD_NUMBER",
260
260
  description: "The app build_number for dSYMs you wish to download",
261
- optional: true),
261
+ optional: true,
262
+ is_string: false),
262
263
  FastlaneCore::ConfigItem.new(key: :min_version,
263
264
  short_option: "-m",
264
265
  env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
@@ -308,6 +309,7 @@ module Fastlane
308
309
  [
309
310
  'download_dsyms',
310
311
  'download_dsyms(version: "1.0.0", build_number: "345")',
312
+ 'download_dsyms(version: "1.0.1", build_number: 42)',
311
313
  'download_dsyms(version: "live")',
312
314
  'download_dsyms(min_version: "1.2.3")'
313
315
  ]
@@ -3,7 +3,10 @@ module Fastlane
3
3
  class ErbAction < Action
4
4
  def self.run(params)
5
5
  template = File.read(params[:template])
6
- result = ERB.new(template).result(OpenStruct.new(params[:placeholders]).instance_eval { binding })
6
+ trim_mode = params[:trim_mode]
7
+
8
+ result = Fastlane::ErbTemplateHelper.render(template, params[:placeholders], trim_mode)
9
+
7
10
  File.open(params[:destination], 'w') { |file| file.write(result) } if params[:destination]
8
11
  UI.message("Successfully parsed template: '#{params[:template]}' and rendered output to: #{params[:destination]}") if params[:destination]
9
12
  result
@@ -45,7 +48,12 @@ module Fastlane
45
48
  description: "Placeholders given as a hash",
46
49
  default_value: {},
47
50
  is_string: false,
48
- type: Hash)
51
+ type: Hash),
52
+ FastlaneCore::ConfigItem.new(key: :trim_mode,
53
+ short_option: "-t",
54
+ env_name: "FL_ERB_TRIM_MODE",
55
+ description: "Trim mode applied to the ERB",
56
+ optional: true)
49
57
 
50
58
  ]
51
59
  end
@@ -1,7 +1,10 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH).freeze
4
+ GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH CIRCLE_BRANCH).reject do |branch|
5
+ # Removing because tests break on CircleCI
6
+ Helper.test? && branch == "CIRCLE_BRANCH"
7
+ end.freeze
5
8
  end
6
9
 
7
10
  class GitBranchAction < Action
@@ -5,7 +5,9 @@ module Fastlane
5
5
  commands = []
6
6
 
7
7
  unless params[:only_tags]
8
- commands += ["git pull &&"]
8
+ command = "git pull"
9
+ command << " --rebase" if params[:rebase]
10
+ commands += ["#{command} &&"]
9
11
  end
10
12
 
11
13
  commands += ["git fetch --tags"]
@@ -26,6 +28,14 @@ module Fastlane
26
28
  default_value: false,
27
29
  verify_block: proc do |value|
28
30
  UI.user_error!("Please pass a valid value for only_tags. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
31
+ end),
32
+ FastlaneCore::ConfigItem.new(key: :rebase,
33
+ description: "Rebase on top of the remote branch instead of merge",
34
+ is_string: false,
35
+ optional: true,
36
+ default_value: false,
37
+ verify_block: proc do |value|
38
+ UI.user_error!("Please pass a valid value for rebase. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
29
39
  end)
30
40
  ]
31
41
  end
@@ -41,7 +51,8 @@ module Fastlane
41
51
  def self.example_code
42
52
  [
43
53
  'git_pull',
44
- 'git_pull(only_tags: true) # only the tags, no commits'
54
+ 'git_pull(only_tags: true) # only the tags, no commits',
55
+ 'git_pull(rebase: true) # use --rebase with pull'
45
56
  ]
46
57
  end
47
58
 
@@ -5,15 +5,23 @@ module Fastlane
5
5
  require 'pilot'
6
6
  require 'pilot/options'
7
7
 
8
+ distribute_only = values[:distribute_only]
9
+
8
10
  changelog = Actions.lane_context[SharedValues::FL_CHANGELOG]
9
11
  values[:changelog] ||= changelog if changelog
10
12
 
11
- values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
12
- values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
13
+ unless distribute_only
14
+ values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
15
+ values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
16
+ end
13
17
 
14
18
  return values if Helper.test?
15
19
 
16
- Pilot::BuildManager.new.upload(values) # we already have the finished config
20
+ if distribute_only
21
+ Pilot::BuildManager.new.distribute(values) # we already have the finished config
22
+ else
23
+ Pilot::BuildManager.new.upload(values) # we already have the finished config
24
+ end
17
25
  end
18
26
 
19
27
  #####################################################
@@ -66,7 +66,7 @@ module Fastlane
66
66
  end
67
67
 
68
68
  def create_credentials
69
- return nil if access_key.nil? || secret_access_key.nil?
69
+ return nil if access_key.to_s.empty? || secret_access_key.to_s.empty?
70
70
 
71
71
  Aws::Credentials.new(
72
72
  access_key,
@@ -216,7 +216,9 @@ module Fastlane
216
216
  end
217
217
 
218
218
  def execute_action(method_sym, class_ref, arguments, custom_dir: nil, from_action: false)
219
- if custom_dir.nil?
219
+ if from_action == true
220
+ custom_dir = "." # We preserve the directory from where the previous action was called from
221
+ elsif custom_dir.nil?
220
222
  custom_dir ||= "." if Helper.test?
221
223
  custom_dir ||= ".."
222
224
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.151.1'.freeze
2
+ VERSION = '2.154.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
@@ -14,4 +14,4 @@ class Deliverfile: DeliverfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.151.1
17
+ // Generated with fastlane 2.154.0
@@ -99,7 +99,7 @@ protocol DeliverfileProtocol: class {
99
99
  var precheckDefaultRuleLevel: String { get }
100
100
 
101
101
  /// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow
102
- var individualMetadataItems: [String] { get }
102
+ var individualMetadataItems: [String]? { get }
103
103
 
104
104
  /// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - Metadata: The path to the app icon
105
105
  var appIcon: String? { get }
@@ -214,7 +214,7 @@ extension DeliverfileProtocol {
214
214
  var itcProvider: String? { return nil }
215
215
  var runPrecheckBeforeSubmit: Bool { return true }
216
216
  var precheckDefaultRuleLevel: String { return "warn" }
217
- var individualMetadataItems: [String] { return [] }
217
+ var individualMetadataItems: [String]? { return nil }
218
218
  var appIcon: String? { return nil }
219
219
  var appleWatchAppIcon: String? { return nil }
220
220
  var copyright: String? { return nil }
@@ -245,4 +245,4 @@ extension DeliverfileProtocol {
245
245
 
246
246
  // Please don't remove the lines below
247
247
  // They are used to detect outdated files
248
- // FastlaneRunnerAPIVersion [0.9.23]
248
+ // FastlaneRunnerAPIVersion [0.9.28]
@@ -523,7 +523,7 @@ func appstore(username: String,
523
523
  itcProvider: String? = nil,
524
524
  runPrecheckBeforeSubmit: Bool = true,
525
525
  precheckDefaultRuleLevel: Any = "warn",
526
- individualMetadataItems: [String] = [],
526
+ individualMetadataItems: [String]? = nil,
527
527
  appIcon: String? = nil,
528
528
  appleWatchAppIcon: String? = nil,
529
529
  copyright: String? = nil,
@@ -1442,6 +1442,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1442
1442
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1443
1443
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1444
1444
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1445
+ - headless: Enabling this option will prevent displaying the simulator window
1445
1446
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1446
1447
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1447
1448
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -1485,6 +1486,7 @@ func captureIosScreenshots(workspace: String? = nil,
1485
1486
  clearPreviousScreenshots: Bool = false,
1486
1487
  reinstallApp: Bool = false,
1487
1488
  eraseSimulator: Bool = false,
1489
+ headless: Bool = true,
1488
1490
  overrideStatusBar: Bool = false,
1489
1491
  localizeSimulator: Bool = false,
1490
1492
  darkMode: Bool? = nil,
@@ -1527,6 +1529,7 @@ func captureIosScreenshots(workspace: String? = nil,
1527
1529
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1528
1530
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1529
1531
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1532
+ RubyCommand.Argument(name: "headless", value: headless),
1530
1533
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1531
1534
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1532
1535
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -1576,6 +1579,7 @@ func captureIosScreenshots(workspace: String? = nil,
1576
1579
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1577
1580
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1578
1581
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1582
+ - headless: Enabling this option will prevent displaying the simulator window
1579
1583
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1580
1584
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1581
1585
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -1619,6 +1623,7 @@ func captureScreenshots(workspace: String? = nil,
1619
1623
  clearPreviousScreenshots: Bool = false,
1620
1624
  reinstallApp: Bool = false,
1621
1625
  eraseSimulator: Bool = false,
1626
+ headless: Bool = true,
1622
1627
  overrideStatusBar: Bool = false,
1623
1628
  localizeSimulator: Bool = false,
1624
1629
  darkMode: Bool? = nil,
@@ -1661,6 +1666,7 @@ func captureScreenshots(workspace: String? = nil,
1661
1666
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1662
1667
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1663
1668
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1669
+ RubyCommand.Argument(name: "headless", value: headless),
1664
1670
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1665
1671
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1666
1672
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -1699,6 +1705,7 @@ func captureScreenshots(workspace: String? = nil,
1699
1705
  - dependencies: Carthage dependencies to update, build or bootstrap
1700
1706
  - useSsh: Use SSH for downloading GitHub repositories
1701
1707
  - useSubmodules: Add dependencies as Git submodules
1708
+ - useNetrc: Use .netrc for downloading frameworks
1702
1709
  - useBinaries: Check out dependency repositories even when prebuilt frameworks exist
1703
1710
  - noCheckout: When bootstrapping Carthage do not checkout
1704
1711
  - noBuild: When bootstrapping Carthage do not build
@@ -1720,6 +1727,7 @@ func carthage(command: String = "bootstrap",
1720
1727
  dependencies: [String] = [],
1721
1728
  useSsh: Bool? = nil,
1722
1729
  useSubmodules: Bool? = nil,
1730
+ useNetrc: Bool? = nil,
1723
1731
  useBinaries: Bool? = nil,
1724
1732
  noCheckout: Bool? = nil,
1725
1733
  noBuild: Bool? = nil,
@@ -1740,6 +1748,7 @@ func carthage(command: String = "bootstrap",
1740
1748
  RubyCommand.Argument(name: "dependencies", value: dependencies),
1741
1749
  RubyCommand.Argument(name: "use_ssh", value: useSsh),
1742
1750
  RubyCommand.Argument(name: "use_submodules", value: useSubmodules),
1751
+ RubyCommand.Argument(name: "use_netrc", value: useNetrc),
1743
1752
  RubyCommand.Argument(name: "use_binaries", value: useBinaries),
1744
1753
  RubyCommand.Argument(name: "no_checkout", value: noCheckout),
1745
1754
  RubyCommand.Argument(name: "no_build", value: noBuild),
@@ -2573,7 +2582,7 @@ func deliver(username: Any = deliverfile.username,
2573
2582
  itcProvider: Any? = deliverfile.itcProvider,
2574
2583
  runPrecheckBeforeSubmit: Bool = deliverfile.runPrecheckBeforeSubmit,
2575
2584
  precheckDefaultRuleLevel: Any = deliverfile.precheckDefaultRuleLevel,
2576
- individualMetadataItems: [String] = deliverfile.individualMetadataItems,
2585
+ individualMetadataItems: [String]? = deliverfile.individualMetadataItems,
2577
2586
  appIcon: Any? = deliverfile.appIcon,
2578
2587
  appleWatchAppIcon: Any? = deliverfile.appleWatchAppIcon,
2579
2588
  copyright: Any? = deliverfile.copyright,
@@ -2760,7 +2769,7 @@ func downloadDsyms(username: String,
2760
2769
  teamName: String? = nil,
2761
2770
  platform: String = "ios",
2762
2771
  version: String? = nil,
2763
- buildNumber: String? = nil,
2772
+ buildNumber: Any? = nil,
2764
2773
  minVersion: String? = nil,
2765
2774
  outputDirectory: String? = nil,
2766
2775
  waitForDsymProcessing: Bool = false,
@@ -2974,16 +2983,19 @@ func ensureXcodeVersion(version: String? = nil,
2974
2983
  - template: ERB Template File
2975
2984
  - destination: Destination file
2976
2985
  - placeholders: Placeholders given as a hash
2986
+ - trimMode: Trim mode applied to the ERB
2977
2987
 
2978
2988
  Renders an ERB template with `:placeholders` given as a hash via parameter.
2979
2989
  If no `:destination` is set, it returns the rendered template as string.
2980
2990
  */
2981
2991
  func erb(template: String,
2982
2992
  destination: String? = nil,
2983
- placeholders: [String: Any] = [:]) {
2993
+ placeholders: [String: Any] = [:],
2994
+ trimMode: String? = nil) {
2984
2995
  let command = RubyCommand(commandID: "", methodName: "erb", className: nil, args: [RubyCommand.Argument(name: "template", value: template),
2985
2996
  RubyCommand.Argument(name: "destination", value: destination),
2986
- RubyCommand.Argument(name: "placeholders", value: placeholders)])
2997
+ RubyCommand.Argument(name: "placeholders", value: placeholders),
2998
+ RubyCommand.Argument(name: "trim_mode", value: trimMode)])
2987
2999
  _ = runner.executeCommand(command)
2988
3000
  }
2989
3001
 
@@ -3555,10 +3567,14 @@ func gitCommit(path: Any,
3555
3567
  /**
3556
3568
  Executes a simple git pull command
3557
3569
 
3558
- - parameter onlyTags: Simply pull the tags, and not bring new commits to the current branch from the remote
3570
+ - parameters:
3571
+ - onlyTags: Simply pull the tags, and not bring new commits to the current branch from the remote
3572
+ - rebase: Rebase on top of the remote branch instead of merge
3559
3573
  */
3560
- func gitPull(onlyTags: Bool = false) {
3561
- let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: [RubyCommand.Argument(name: "only_tags", value: onlyTags)])
3574
+ func gitPull(onlyTags: Bool = false,
3575
+ rebase: Bool = false) {
3576
+ let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: [RubyCommand.Argument(name: "only_tags", value: onlyTags),
3577
+ RubyCommand.Argument(name: "rebase", value: rebase)])
3562
3578
  _ = runner.executeCommand(command)
3563
3579
  }
3564
3580
 
@@ -4552,6 +4568,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4552
4568
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
4553
4569
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
4554
4570
  - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
4571
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
4555
4572
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
4556
4573
  - googleCloudKeysFile: Path to the gc_keys.json file
4557
4574
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -4593,6 +4610,7 @@ func match(type: Any = matchfile.type,
4593
4610
  cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
4594
4611
  gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
4595
4612
  gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
4613
+ gitPrivateKey: Any? = matchfile.gitPrivateKey,
4596
4614
  googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
4597
4615
  googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
4598
4616
  googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
@@ -4631,6 +4649,7 @@ func match(type: Any = matchfile.type,
4631
4649
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
4632
4650
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
4633
4651
  RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
4652
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
4634
4653
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
4635
4654
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
4636
4655
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -5035,10 +5054,11 @@ func pem(development: Bool = false,
5035
5054
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
5036
5055
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
5037
5056
  - localizedBuildInfo: Localized beta app test info for what's new
5038
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
5057
+ - changelog: Provide the 'What to Test' text when uploading a new build
5039
5058
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
5040
5059
  - 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
5041
5060
  - 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
5061
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
5042
5062
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
5043
5063
  - distributeExternal: Should the build be distributed to external testers?
5044
5064
  - notifyExternalTesters: Should notify external testers?
@@ -5076,6 +5096,7 @@ func pilot(username: String,
5076
5096
  skipSubmission: Bool = false,
5077
5097
  skipWaitingForBuildProcessing: Bool = false,
5078
5098
  updateBuildInfoOnUpload: Bool = false,
5099
+ distributeOnly: Bool = false,
5079
5100
  usesNonExemptEncryption: Bool = false,
5080
5101
  distributeExternal: Bool = false,
5081
5102
  notifyExternalTesters: Bool = true,
@@ -5109,6 +5130,7 @@ func pilot(username: String,
5109
5130
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
5110
5131
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
5111
5132
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
5133
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
5112
5134
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
5113
5135
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
5114
5136
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -6864,6 +6886,7 @@ func slather(buildDirectory: String? = nil,
6864
6886
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
6865
6887
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
6866
6888
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
6889
+ - headless: Enabling this option will prevent displaying the simulator window
6867
6890
  - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
6868
6891
  - localizeSimulator: Enabling this option will configure the Simulator's system language
6869
6892
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
@@ -6907,6 +6930,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6907
6930
  clearPreviousScreenshots: Bool = snapshotfile.clearPreviousScreenshots,
6908
6931
  reinstallApp: Bool = snapshotfile.reinstallApp,
6909
6932
  eraseSimulator: Bool = snapshotfile.eraseSimulator,
6933
+ headless: Bool = snapshotfile.headless,
6910
6934
  overrideStatusBar: Bool = snapshotfile.overrideStatusBar,
6911
6935
  localizeSimulator: Bool = snapshotfile.localizeSimulator,
6912
6936
  darkMode: Bool? = snapshotfile.darkMode,
@@ -6949,6 +6973,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6949
6973
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
6950
6974
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
6951
6975
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
6976
+ RubyCommand.Argument(name: "headless", value: headless),
6952
6977
  RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
6953
6978
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
6954
6979
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
@@ -7347,6 +7372,7 @@ func swiftlint(mode: Any = "lint",
7347
7372
  - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
7348
7373
  - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
7349
7374
  - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
7375
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
7350
7376
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
7351
7377
  - googleCloudKeysFile: Path to the gc_keys.json file
7352
7378
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
@@ -7388,6 +7414,7 @@ func syncCodeSigning(type: String = "development",
7388
7414
  cloneBranchDirectly: Bool = false,
7389
7415
  gitBasicAuthorization: String? = nil,
7390
7416
  gitBearerAuthorization: String? = nil,
7417
+ gitPrivateKey: String? = nil,
7391
7418
  googleCloudBucketName: String? = nil,
7392
7419
  googleCloudKeysFile: String? = nil,
7393
7420
  googleCloudProjectId: String? = nil,
@@ -7426,6 +7453,7 @@ func syncCodeSigning(type: String = "development",
7426
7453
  RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
7427
7454
  RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
7428
7455
  RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
7456
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
7429
7457
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
7430
7458
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
7431
7459
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
@@ -7529,10 +7557,11 @@ func testfairy(apiKey: String,
7529
7557
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
7530
7558
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
7531
7559
  - localizedBuildInfo: Localized beta app test info for what's new
7532
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
7560
+ - changelog: Provide the 'What to Test' text when uploading a new build
7533
7561
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
7534
7562
  - 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
7535
7563
  - 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
7564
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
7536
7565
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7537
7566
  - distributeExternal: Should the build be distributed to external testers?
7538
7567
  - notifyExternalTesters: Should notify external testers?
@@ -7570,6 +7599,7 @@ func testflight(username: String,
7570
7599
  skipSubmission: Bool = false,
7571
7600
  skipWaitingForBuildProcessing: Bool = false,
7572
7601
  updateBuildInfoOnUpload: Bool = false,
7602
+ distributeOnly: Bool = false,
7573
7603
  usesNonExemptEncryption: Bool = false,
7574
7604
  distributeExternal: Bool = false,
7575
7605
  notifyExternalTesters: Bool = true,
@@ -7603,6 +7633,7 @@ func testflight(username: String,
7603
7633
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
7604
7634
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
7605
7635
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
7636
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
7606
7637
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
7607
7638
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
7608
7639
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -8185,7 +8216,7 @@ func uploadToAppStore(username: String,
8185
8216
  itcProvider: String? = nil,
8186
8217
  runPrecheckBeforeSubmit: Bool = true,
8187
8218
  precheckDefaultRuleLevel: Any = "warn",
8188
- individualMetadataItems: [String] = [],
8219
+ individualMetadataItems: [String]? = nil,
8189
8220
  appIcon: String? = nil,
8190
8221
  appleWatchAppIcon: String? = nil,
8191
8222
  copyright: String? = nil,
@@ -8444,10 +8475,11 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8444
8475
  - betaAppDescription: Provide the 'Beta App Description' when uploading a new build
8445
8476
  - betaAppFeedbackEmail: Provide the beta app email when uploading a new build
8446
8477
  - localizedBuildInfo: Localized beta app test info for what's new
8447
- - changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
8478
+ - changelog: Provide the 'What to Test' text when uploading a new build
8448
8479
  - skipSubmission: Skip the distributing action of pilot and only upload the ipa file
8449
8480
  - 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
8450
8481
  - 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
8482
+ - distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
8451
8483
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
8452
8484
  - distributeExternal: Should the build be distributed to external testers?
8453
8485
  - notifyExternalTesters: Should notify external testers?
@@ -8485,6 +8517,7 @@ func uploadToTestflight(username: String,
8485
8517
  skipSubmission: Bool = false,
8486
8518
  skipWaitingForBuildProcessing: Bool = false,
8487
8519
  updateBuildInfoOnUpload: Bool = false,
8520
+ distributeOnly: Bool = false,
8488
8521
  usesNonExemptEncryption: Bool = false,
8489
8522
  distributeExternal: Bool = false,
8490
8523
  notifyExternalTesters: Bool = true,
@@ -8518,6 +8551,7 @@ func uploadToTestflight(username: String,
8518
8551
  RubyCommand.Argument(name: "skip_submission", value: skipSubmission),
8519
8552
  RubyCommand.Argument(name: "skip_waiting_for_build_processing", value: skipWaitingForBuildProcessing),
8520
8553
  RubyCommand.Argument(name: "update_build_info_on_upload", value: updateBuildInfoOnUpload),
8554
+ RubyCommand.Argument(name: "distribute_only", value: distributeOnly),
8521
8555
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
8522
8556
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
8523
8557
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
@@ -8977,4 +9011,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8977
9011
 
8978
9012
  // Please don't remove the lines below
8979
9013
  // They are used to detect outdated files
8980
- // FastlaneRunnerAPIVersion [0.9.76]
9014
+ // FastlaneRunnerAPIVersion [0.9.81]