fastlane 2.170.0 → 2.175.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -74
  3. data/cert/lib/cert/options.rb +2 -2
  4. data/deliver/lib/deliver/app_screenshot.rb +5 -7
  5. data/deliver/lib/deliver/app_screenshot_validator.rb +108 -0
  6. data/deliver/lib/deliver/commands_generator.rb +1 -1
  7. data/deliver/lib/deliver/loader.rb +13 -29
  8. data/deliver/lib/deliver/options.rb +2 -2
  9. data/deliver/lib/deliver/setup.rb +8 -3
  10. data/deliver/lib/deliver/upload_metadata.rb +2 -0
  11. data/deliver/lib/deliver/upload_screenshots.rb +2 -1
  12. data/fastlane/lib/fastlane/actions/adb.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/add_git_tag.rb +12 -3
  14. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +2 -2
  15. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +1 -0
  16. data/fastlane/lib/fastlane/actions/appetize.rb +13 -1
  17. data/fastlane/lib/fastlane/actions/artifactory.rb +36 -3
  18. data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +10 -2
  19. data/fastlane/lib/fastlane/actions/build_app.rb +3 -1
  20. data/fastlane/lib/fastlane/actions/carthage.rb +22 -0
  21. data/fastlane/lib/fastlane/actions/cocoapods.rb +15 -1
  22. data/fastlane/lib/fastlane/actions/create_pull_request.rb +16 -1
  23. data/fastlane/lib/fastlane/actions/create_xcframework.rb +118 -0
  24. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +1 -1
  25. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  26. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +8 -2
  27. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +5 -1
  28. data/fastlane/lib/fastlane/actions/download_app_privacy_details_from_app_store.rb +142 -0
  29. data/fastlane/lib/fastlane/actions/download_dsyms.rb +5 -16
  30. data/fastlane/lib/fastlane/actions/git_commit.rb +7 -3
  31. data/fastlane/lib/fastlane/actions/github_api.rb +14 -3
  32. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
  33. data/fastlane/lib/fastlane/actions/nexus_upload.rb +1 -0
  34. data/fastlane/lib/fastlane/actions/pod_push.rb +9 -0
  35. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +9 -1
  36. data/fastlane/lib/fastlane/actions/register_device.rb +3 -3
  37. data/fastlane/lib/fastlane/actions/register_devices.rb +4 -3
  38. data/fastlane/lib/fastlane/actions/set_changelog.rb +2 -2
  39. data/fastlane/lib/fastlane/actions/set_github_release.rb +21 -8
  40. data/fastlane/lib/fastlane/actions/slack.rb +4 -5
  41. data/fastlane/lib/fastlane/actions/spm.rb +2 -2
  42. data/fastlane/lib/fastlane/actions/swiftlint.rb +4 -4
  43. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +1 -1
  44. data/fastlane/lib/fastlane/actions/upload_app_privacy_details_to_app_store.rb +4 -2
  45. data/fastlane/lib/fastlane/cli_tools_distributor.rb +3 -0
  46. data/fastlane/lib/fastlane/documentation/actions_list.rb +2 -2
  47. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  48. data/fastlane/lib/fastlane/helper/gem_helper.rb +2 -2
  49. data/fastlane/lib/fastlane/version.rb +1 -1
  50. data/fastlane/swift/Actions.swift +1 -1
  51. data/fastlane/swift/Appfile.swift +1 -1
  52. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  53. data/fastlane/swift/ControlCommand.swift +1 -1
  54. data/fastlane/swift/Deliverfile.swift +2 -2
  55. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  56. data/fastlane/swift/Fastlane.swift +213 -38
  57. data/fastlane/swift/Gymfile.swift +2 -2
  58. data/fastlane/swift/GymfileProtocol.swift +11 -3
  59. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  60. data/fastlane/swift/MainProcess.swift +1 -1
  61. data/fastlane/swift/Matchfile.swift +2 -2
  62. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  63. data/fastlane/swift/Plugins.swift +1 -1
  64. data/fastlane/swift/Precheckfile.swift +2 -2
  65. data/fastlane/swift/PrecheckfileProtocol.swift +6 -2
  66. data/fastlane/swift/RubyCommand.swift +1 -1
  67. data/fastlane/swift/RubyCommandable.swift +1 -1
  68. data/fastlane/swift/Runner.swift +2 -2
  69. data/fastlane/swift/RunnerArgument.swift +1 -1
  70. data/fastlane/swift/Scanfile.swift +2 -2
  71. data/fastlane/swift/ScanfileProtocol.swift +14 -2
  72. data/fastlane/swift/Screengrabfile.swift +2 -2
  73. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  74. data/fastlane/swift/Snapshotfile.swift +2 -2
  75. data/fastlane/swift/SnapshotfileProtocol.swift +15 -3
  76. data/fastlane/swift/SocketClient.swift +1 -1
  77. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  78. data/fastlane/swift/SocketResponse.swift +1 -1
  79. data/fastlane/swift/formatting/Brewfile.lock.json +20 -14
  80. data/fastlane/swift/main.swift +1 -1
  81. data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -9
  82. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +1 -1
  83. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +23 -0
  84. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +9 -5
  85. data/fastlane_core/lib/fastlane_core/helper.rb +28 -7
  86. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +41 -16
  87. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -4
  88. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
  89. data/fastlane_core/lib/fastlane_core/project.rb +41 -14
  90. data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +2 -2
  91. data/frameit/lib/frameit/device_types.rb +7 -1
  92. data/gym/lib/gym/error_handler.rb +8 -0
  93. data/gym/lib/gym/generators/build_command_generator.rb +3 -1
  94. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
  95. data/gym/lib/gym/options.rb +12 -2
  96. data/match/lib/match/encryption/openssl.rb +4 -2
  97. data/match/lib/match/nuke.rb +5 -0
  98. data/match/lib/match/options.rb +2 -2
  99. data/match/lib/match/storage/git_storage.rb +14 -10
  100. data/pilot/lib/pilot/options.rb +2 -2
  101. data/precheck/lib/precheck/options.rb +8 -3
  102. data/precheck/lib/precheck/rule_processor.rb +1 -1
  103. data/precheck/lib/precheck/runner.rb +1 -1
  104. data/scan/lib/scan/options.rb +15 -0
  105. data/scan/lib/scan/runner.rb +6 -1
  106. data/scan/lib/scan/slack_poster.rb +4 -1
  107. data/scan/lib/scan/test_command_generator.rb +3 -1
  108. data/screengrab/lib/screengrab/android_environment.rb +2 -2
  109. data/screengrab/lib/screengrab/runner.rb +2 -0
  110. data/sigh/lib/sigh/options.rb +2 -2
  111. data/sigh/lib/sigh/runner.rb +1 -1
  112. data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
  113. data/snapshot/lib/snapshot/options.rb +17 -2
  114. data/snapshot/lib/snapshot/update.rb +1 -1
  115. data/spaceship/README.md +2 -2
  116. data/spaceship/lib/spaceship/client.rb +14 -1
  117. data/spaceship/lib/spaceship/connect_api/api_client.rb +17 -2
  118. data/spaceship/lib/spaceship/connect_api/models/app.rb +6 -0
  119. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +7 -1
  120. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +9 -0
  121. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +24 -0
  122. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +26 -4
  123. data/spaceship/lib/spaceship/connect_api/models/device.rb +26 -0
  124. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +53 -0
  125. data/spaceship/lib/spaceship/connect_api/response.rb +3 -1
  126. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  127. data/spaceship/lib/spaceship/connect_api/token.rb +1 -1
  128. data/spaceship/lib/spaceship/playground.rb +2 -2
  129. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  130. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +1 -0
  131. data/spaceship/lib/spaceship/upgrade_2fa_later_client.rb +91 -0
  132. metadata +51 -21
  133. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  134. data/spaceship/lib/spaceship/connect_api/models/.app_data_usage_data_protection.rb.swp +0 -0
@@ -38,7 +38,7 @@ module Fastlane
38
38
 
39
39
  [
40
40
  FastlaneCore::ConfigItem.new(key: :api_key_path,
41
- env_name: "APPSTORE_BUILD_NUMBER_API_KEY_PATH",
41
+ env_names: ["APPSTORE_BUILD_NUMBER_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
42
42
  description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
43
43
  optional: true,
44
44
  conflicting_options: [:api_key],
@@ -46,7 +46,7 @@ module Fastlane
46
46
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
47
47
  end),
48
48
  FastlaneCore::ConfigItem.new(key: :api_key,
49
- env_name: "APPSTORE_BUILD_NUMBER_API_KEY",
49
+ env_names: ["APPSTORE_BUILD_NUMBER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
50
50
  description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
51
51
  type: Hash,
52
52
  optional: true,
@@ -5,6 +5,7 @@ module Fastlane
5
5
  command = []
6
6
  command << "curl"
7
7
  command << verbose(params)
8
+ command << "--fail"
8
9
  command += ssl_options(params)
9
10
  command += proxy_options(params)
10
11
  command += upload_options(params)
@@ -43,6 +43,10 @@ module Fastlane
43
43
  command << "--skip-tests"
44
44
  end
45
45
 
46
+ if params[:use_json]
47
+ command << "--use-json"
48
+ end
49
+
46
50
  if params[:verbose]
47
51
  command << "--verbose"
48
52
  end
@@ -121,6 +125,11 @@ module Fastlane
121
125
  optional: true,
122
126
  type: Boolean,
123
127
  env_name: "FL_POD_PUSH_SKIP_TESTS"),
128
+ FastlaneCore::ConfigItem.new(key: :use_json,
129
+ description: "Convert the podspec to JSON before pushing it to the repo",
130
+ optional: true,
131
+ type: Boolean,
132
+ env_name: "FL_POD_PUSH_USE_JSON"),
124
133
  FastlaneCore::ConfigItem.new(key: :verbose,
125
134
  description: "Show more debugging information",
126
135
  optional: true,
@@ -32,6 +32,9 @@ module Fastlane
32
32
  # optionally add the set-upstream component
33
33
  command << '--set-upstream' if params[:set_upstream]
34
34
 
35
+ # optionally add the --push_options components
36
+ params[:push_options].each { |push_option| command << "--push-option=#{push_option}" } if params[:push_options]
37
+
35
38
  # execute our command
36
39
  Actions.sh('pwd')
37
40
  return command.join(' ') if Helper.test?
@@ -84,7 +87,12 @@ module Fastlane
84
87
  env_name: "FL_GIT_PUSH_USE_SET_UPSTREAM",
85
88
  description: "Whether or not to use --set-upstream",
86
89
  type: Boolean,
87
- default_value: false)
90
+ default_value: false),
91
+ FastlaneCore::ConfigItem.new(key: :push_options,
92
+ env_name: "FL_GIT_PUSH_PUSH_OPTION",
93
+ description: "Array of strings to be passed using the '--push-option' option",
94
+ type: Array,
95
+ default_value: [])
88
96
  ]
89
97
  end
90
98
 
@@ -27,7 +27,7 @@ module Fastlane
27
27
  end
28
28
 
29
29
  begin
30
- Spaceship::ConnectAPI::Device.create(name: name, platform: platform, udid: udid)
30
+ Spaceship::ConnectAPI::Device.find_or_create(udid, name: name, platform: platform)
31
31
  rescue => ex
32
32
  UI.error(ex.to_s)
33
33
  UI.crash!("Failed to register new device (name: #{name}, platform: #{platform}, UDID: #{udid})")
@@ -69,7 +69,7 @@ module Fastlane
69
69
  env_name: "FL_REGISTER_DEVICE_UDID",
70
70
  description: "Provide the UDID of the device to register as"),
71
71
  FastlaneCore::ConfigItem.new(key: :api_key_path,
72
- env_name: "FL_REGISTER_DEVICE_API_KEY_PATH",
72
+ env_names: ["FL_REGISTER_DEVICE_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
73
73
  description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
74
74
  optional: true,
75
75
  conflicting_options: [:api_key],
@@ -77,7 +77,7 @@ module Fastlane
77
77
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
78
78
  end),
79
79
  FastlaneCore::ConfigItem.new(key: :api_key,
80
- env_name: "FL_REGISTER_DEVICE_API_KEY",
80
+ env_names: ["FL_REGISTER_DEVICE_API_KEY", "APP_STORE_CONNECT_API_KEY"],
81
81
  description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
82
82
  type: Hash,
83
83
  optional: true,
@@ -77,7 +77,7 @@ module Fastlane
77
77
  end
78
78
 
79
79
  def self.try_create_device(name: nil, platform: nil, udid: nil)
80
- Spaceship::ConnectAPI::Device.create(name: name, platform: platform, udid: udid)
80
+ Spaceship::ConnectAPI::Device.find_or_create(udid, name: name, platform: platform)
81
81
  rescue => ex
82
82
  UI.error(ex.to_s)
83
83
  UI.crash!("Failed to register new device (name: #{name}, UDID: #{udid})")
@@ -118,7 +118,7 @@ module Fastlane
118
118
  UI.user_error!("Could not find file '#{value}'") unless File.exist?(value)
119
119
  end),
120
120
  FastlaneCore::ConfigItem.new(key: :api_key_path,
121
- env_name: "FL_REGISTER_DEVICES_API_KEY_PATH",
121
+ env_names: ["FL_REGISTER_DEVICES_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
122
122
  description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
123
123
  optional: true,
124
124
  conflicting_options: [:api_key],
@@ -126,7 +126,7 @@ module Fastlane
126
126
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
127
127
  end),
128
128
  FastlaneCore::ConfigItem.new(key: :api_key,
129
- env_name: "FL_REGISTER_DEVICES_API_KEY",
129
+ env_names: ["FL_REGISTER_DEVICES_API_KEY", "APP_STORE_CONNECT_API_KEY"],
130
130
  description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
131
131
  type: Hash,
132
132
  optional: true,
@@ -155,6 +155,7 @@ module Fastlane
155
155
  FastlaneCore::ConfigItem.new(key: :username,
156
156
  env_name: "DELIVER_USER",
157
157
  description: "Optional: Your Apple ID",
158
+ optional: true,
158
159
  default_value: user,
159
160
  default_value_dynamic: true),
160
161
  FastlaneCore::ConfigItem.new(key: :platform,
@@ -111,7 +111,7 @@ module Fastlane
111
111
 
112
112
  [
113
113
  FastlaneCore::ConfigItem.new(key: :api_key_path,
114
- env_name: "FL_SET_CHANGELOG_API_KEY_PATH",
114
+ env_names: ["FL_SET_CHANGELOG_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
115
115
  description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
116
116
  optional: true,
117
117
  conflicting_options: [:api_key],
@@ -119,7 +119,7 @@ module Fastlane
119
119
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
120
120
  end),
121
121
  FastlaneCore::ConfigItem.new(key: :api_key,
122
- env_name: "FL_SET_CHANGELOG_API_KEY",
122
+ env_names: ["FL_SET_CHANGELOG_API_KEY", "APP_STORE_CONNECT_API_KEY"],
123
123
  description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
124
124
  type: Hash,
125
125
  optional: true,
@@ -13,6 +13,7 @@ module Fastlane
13
13
 
14
14
  repo_name = params[:repository_name]
15
15
  api_token = params[:api_token]
16
+ api_bearer = params[:api_bearer]
16
17
  server_url = params[:server_url]
17
18
  tag_name = params[:tag_name]
18
19
 
@@ -28,6 +29,7 @@ module Fastlane
28
29
  GithubApiAction.run(
29
30
  server_url: server_url,
30
31
  api_token: api_token,
32
+ api_bearer: api_bearer,
31
33
  http_method: 'POST',
32
34
  path: "repos/#{repo_name}/releases",
33
35
  body: payload,
@@ -65,12 +67,13 @@ module Fastlane
65
67
  assets = params[:upload_assets]
66
68
  if assets && assets.count > 0
67
69
  # upload assets
68
- self.upload_assets(assets, json['upload_url'], api_token)
70
+ self.upload_assets(assets, json['upload_url'], api_token, api_bearer)
69
71
 
70
72
  # fetch the release again, so that it contains the uploaded assets
71
73
  GithubApiAction.run(
72
74
  server_url: server_url,
73
75
  api_token: api_token,
76
+ api_bearer: api_bearer,
74
77
  http_method: 'GET',
75
78
  path: "repos/#{repo_name}/releases/#{release_id}",
76
79
  error_handlers: {
@@ -90,13 +93,13 @@ module Fastlane
90
93
  end
91
94
  end
92
95
 
93
- def self.upload_assets(assets, upload_url_template, api_token)
96
+ def self.upload_assets(assets, upload_url_template, api_token, api_bearer)
94
97
  assets.each do |asset|
95
- self.upload(asset, upload_url_template, api_token)
98
+ self.upload(asset, upload_url_template, api_token, api_bearer)
96
99
  end
97
100
  end
98
101
 
99
- def self.upload(asset_path, upload_url_template, api_token)
102
+ def self.upload(asset_path, upload_url_template, api_token, api_bearer)
100
103
  # if it's a directory, zip it first in a temp directory, because we can only upload binary files
101
104
  absolute_path = File.absolute_path(asset_path)
102
105
 
@@ -107,14 +110,14 @@ module Fastlane
107
110
  Dir.mktmpdir do |dir|
108
111
  tmpzip = File.join(dir, File.basename(absolute_path) + '.zip')
109
112
  sh("cd \"#{File.dirname(absolute_path)}\"; zip -r --symlinks \"#{tmpzip}\" \"#{File.basename(absolute_path)}\" 2>&1 >/dev/null")
110
- self.upload_file(tmpzip, upload_url_template, api_token)
113
+ self.upload_file(tmpzip, upload_url_template, api_token, api_bearer)
111
114
  end
112
115
  else
113
- self.upload_file(absolute_path, upload_url_template, api_token)
116
+ self.upload_file(absolute_path, upload_url_template, api_token, api_bearer)
114
117
  end
115
118
  end
116
119
 
117
- def self.upload_file(file, url_template, api_token)
120
+ def self.upload_file(file, url_template, api_token, api_bearer)
118
121
  require 'addressable/template'
119
122
  file_name = File.basename(file)
120
123
  expanded_url = Addressable::Template.new(url_template).expand(name: file_name).to_s
@@ -122,6 +125,7 @@ module Fastlane
122
125
  UI.important("Uploading #{file_name}")
123
126
  GithubApiAction.run(
124
127
  api_token: api_token,
128
+ api_bearer: api_bearer,
125
129
  http_method: 'POST',
126
130
  headers: headers,
127
131
  url: expanded_url,
@@ -173,12 +177,21 @@ module Fastlane
173
177
  FastlaneCore::ConfigItem.new(key: :api_token,
174
178
  env_name: "FL_GITHUB_RELEASE_API_TOKEN",
175
179
  description: "Personal API Token for GitHub - generate one at https://github.com/settings/tokens",
180
+ conflicting_options: [:api_bearer],
176
181
  sensitive: true,
177
182
  code_gen_sensitive: true,
178
183
  is_string: true,
179
184
  default_value: ENV["GITHUB_API_TOKEN"],
180
185
  default_value_dynamic: true,
181
- optional: false),
186
+ optional: true),
187
+ FastlaneCore::ConfigItem.new(key: :api_bearer,
188
+ env_name: "FL_GITHUB_RELEASE_API_BEARER",
189
+ sensitive: true,
190
+ code_gen_sensitive: true,
191
+ description: "Use a Bearer authorization token. Usually generated by Github Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable",
192
+ conflicting_options: [:api_token],
193
+ optional: true,
194
+ default_value: nil),
182
195
  FastlaneCore::ConfigItem.new(key: :tag_name,
183
196
  env_name: "FL_SET_GITHUB_RELEASE_TAG_NAME",
184
197
  description: "Pass in the tag name",
@@ -115,8 +115,8 @@ module Fastlane
115
115
  is_string: false),
116
116
  FastlaneCore::ConfigItem.new(key: :default_payloads,
117
117
  env_name: "FL_SLACK_DEFAULT_PAYLOADS",
118
- description: "Remove some of the default payloads. More information about the available payloads on GitHub",
119
- optional: true,
118
+ description: "Specifies default payloads to include. Pass an empty array to suppress all the default payloads",
119
+ default_value: ['lane', 'test_result', 'git_branch', 'git_author', 'last_git_commit', 'last_git_commit_hash'],
120
120
  type: Array),
121
121
  FastlaneCore::ConfigItem.new(key: :attachment_properties,
122
122
  env_name: "FL_SLACK_ATTACHMENT_PROPERTIES",
@@ -159,8 +159,7 @@ module Fastlane
159
159
  "Build Date" => Time.new.to_s,
160
160
  "Built by" => "Jenkins",
161
161
  },
162
- default_payloads: [:git_branch, :git_author], # Optional, lets you specify an allowlist of default payloads to include. Pass an empty array to suppress all the default payloads.
163
- # Don\'t add this key, or pass nil, if you want all the default payloads. The available default payloads are: `lane`, `test_result`, `git_branch`, `git_author`, `last_git_commit`, `last_git_commit_hash`.
162
+ default_payloads: [:git_branch, :git_author], # Optional, lets you specify default payloads to include. Pass an empty array to suppress all the default payloads.
164
163
  attachment_properties: { # Optional, lets you specify any other properties available for attachments in the slack API (see https://api.slack.com/docs/attachments).
165
164
  # This hash is deep merged with the existing properties set using the other properties above. This allows your own fields properties to be appended to the existing fields that were created using the `payload` property for instance.
166
165
  thumb_url: "http://example.com/path/to/thumb.png",
@@ -188,7 +187,7 @@ module Fastlane
188
187
 
189
188
  def self.generate_slack_attachments(options)
190
189
  color = (options[:success] ? 'good' : 'danger')
191
- should_add_payload = ->(payload_name) { options[:default_payloads].nil? || options[:default_payloads].map(&:to_sym).include?(payload_name.to_sym) }
190
+ should_add_payload = ->(payload_name) { options[:default_payloads].map(&:to_sym).include?(payload_name.to_sym) }
192
191
 
193
192
  slack_attachment = {
194
193
  fallback: options[:message],
@@ -11,7 +11,7 @@ module Fastlane
11
11
  cmd << "--disable-sandbox" if params[:disable_sandbox]
12
12
  cmd << "--verbose" if params[:verbose]
13
13
  cmd << params[:command] if package_commands.include?(params[:command])
14
- cmd << "--enable-code-coverage" if params[:enable_code_coverage] && params[:command] == 'generate-xcodeproj'
14
+ cmd << "--enable-code-coverage" if params[:enable_code_coverage] && (params[:command] == 'generate-xcodeproj' || params[:command] == 'test')
15
15
  if params[:xcconfig]
16
16
  cmd << "--xcconfig-overrides #{params[:xcconfig]}"
17
17
  end
@@ -47,7 +47,7 @@ module Fastlane
47
47
  end),
48
48
  FastlaneCore::ConfigItem.new(key: :enable_code_coverage,
49
49
  env_name: "FL_SPM_ENABLE_CODE_COVERAGE",
50
- description: "Enables code coverage for the generated Xcode project when using the generate-xcodeproj command",
50
+ description: "Enables code coverage for the generated Xcode project when using the 'generate-xcodeproj' and the 'test' command",
51
51
  is_string: false,
52
52
  optional: true),
53
53
  FastlaneCore::ConfigItem.new(key: :build_path,
@@ -139,13 +139,13 @@ module Fastlane
139
139
  optional: true),
140
140
  FastlaneCore::ConfigItem.new(key: :reporter,
141
141
  env_name: "FL_SWIFTLINT_REPORTER",
142
- description: "Choose output reporter. Available: xcode, json, csv, checkstyle, junit, html, \
143
- emoji, sonarqube, markdown, github-actions-logging",
142
+ description: "Choose output reporter. Available: xcode, json, csv, checkstyle, codeclimate, \
143
+ junit, html, emoji, sonarqube, markdown, github-actions-logging",
144
144
  is_string: true,
145
145
  optional: true,
146
146
  verify_block: proc do |value|
147
- available = ['xcode', 'json', 'csv', 'checkstyle', 'junit', 'html', 'emoji', 'sonarqube', 'markdown', 'github-actions-logging']
148
- UI.user_error!("Available values are '#{available.join("', '")}'") unless available.include?(value)
147
+ available = ['xcode', 'json', 'csv', 'checkstyle', 'codeclimate', 'junit', 'html', 'emoji', 'sonarqube', 'markdown', 'github-actions-logging']
148
+ UI.important("Known 'reporter' values are '#{available.join("', '")}'. If you're receiving errors from swiftlint related to the reporter, make sure the reporter identifier you're using is correct and it's supported by your version of swiftlint.") unless available.include?(value)
149
149
  end),
150
150
  FastlaneCore::ConfigItem.new(key: :quiet,
151
151
  env_name: "FL_SWIFTLINT_QUIET",
@@ -140,7 +140,7 @@ module Fastlane
140
140
  env_name: "FL_PROJECT_SIGNING_BUILD_CONFIGURATIONS",
141
141
  optional: true,
142
142
  type: Array,
143
- description: "Specify build_configurations you want to toggle the signing mech. (default to all targets)",
143
+ description: "Specify build_configurations you want to toggle the signing mech. (default to all configurations)",
144
144
  is_string: false),
145
145
  FastlaneCore::ConfigItem.new(key: :code_sign_identity,
146
146
  env_name: "FL_CODE_SIGN_IDENTITY",
@@ -112,13 +112,15 @@ module Fastlane
112
112
 
113
113
  json << {
114
114
  "category" => category.id,
115
- "purposes" => selected_purposes.map(&:id),
115
+ "purposes" => selected_purposes.map(&:id).sort.uniq,
116
116
  "data_protections" => [
117
117
  protection_id, tracking_id
118
- ].compact
118
+ ].compact.sort.uniq
119
119
  }
120
120
  end
121
121
 
122
+ json.sort_by! { |c| c["category"] }
123
+
122
124
  # Recursively call this method if no categories were selected for data collection
123
125
  if json.empty?
124
126
  UI.error("No categories were selected for data collection.")
@@ -71,6 +71,9 @@ module Fastlane
71
71
  # Disabling colors if environment variable set
72
72
  require 'fastlane_core/ui/disable_colors' if FastlaneCore::Helper.colors_disabled?
73
73
 
74
+ # Set interactive environment variable for spaceship (which can't require fastlane_core)
75
+ ENV["FASTLANE_IS_INTERACTIVE"] = FastlaneCore::UI.interactive?.to_s
76
+
74
77
  ARGV.unshift("spaceship") if ARGV.first == "spaceauth"
75
78
  tool_name = ARGV.first ? ARGV.first.downcase : nil
76
79
 
@@ -135,7 +135,7 @@ module Fastlane
135
135
  if options
136
136
  puts(Terminal::Table.new(
137
137
  title: "#{name} Options".green,
138
- headings: ['Key', 'Description', 'Env Var', 'Default'],
138
+ headings: ['Key', 'Description', 'Env Var(s)', 'Default'],
139
139
  rows: FastlaneCore::PrintTable.transform_output(options)
140
140
  ))
141
141
  else
@@ -197,7 +197,7 @@ module Fastlane
197
197
  if options.kind_of?(Array)
198
198
  options.each do |current|
199
199
  if current.kind_of?(FastlaneCore::ConfigItem)
200
- rows << [current.key.to_s.yellow, current.deprecated ? current.description.red : current.description, current.env_name, current.help_default_value]
200
+ rows << [current.key.to_s.yellow, current.deprecated ? current.description.red : current.description, current.env_names.join(", "), current.help_default_value]
201
201
  elsif current.kind_of?(Array)
202
202
  # Legacy actions that don't use the new config manager
203
203
  UI.user_error!("Invalid number of elements in this row: #{current}. Must be 2 or 3") unless [2, 3].include?(current.count)
@@ -24,7 +24,7 @@ module Fastlane
24
24
  adb_path = File.join(android_home, "platform-tools", "adb")
25
25
  end
26
26
 
27
- self.adb_path = File.expand_path(adb_path)
27
+ self.adb_path = Helper.get_executable_path(File.expand_path(adb_path))
28
28
  self.adb_host = adb_host
29
29
  end
30
30
 
@@ -10,8 +10,8 @@ module Fastlane
10
10
  rescue Gem::LoadError
11
11
  UI.error("Could not find gem '#{gem_name}'")
12
12
  UI.error("")
13
- UI.error("If you installed fastlane using `sudo gem install fastlane` run")
14
- UI.command("sudo gem install #{gem_name}")
13
+ UI.error("If you installed fastlane using `gem install fastlane` run")
14
+ UI.command("gem install #{gem_name}")
15
15
  UI.error("to install the missing gem")
16
16
  UI.error("")
17
17
  UI.error("If you use a Gemfile add this to your Gemfile:")
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.170.0'.freeze
2
+ VERSION = '2.175.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
@@ -1,5 +1,5 @@
1
1
  // Actions.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This autogenerated file will be overwritten or replaced when running "fastlane generate_swift"
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // Appfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  var appIdentifier: String { return "" } // The bundle identifier of your app
5
5
  var appleID: String { return "" } // Your Apple email address
@@ -1,5 +1,5 @@
1
1
  // ArgumentProcessor.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // ControlCommand.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Deliverfile.swift
2
- // Copyright (c) 2020 FastlaneTools
2
+ // Copyright (c) 2021 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.170.0
20
+ // Generated with fastlane 2.175.0