fastlane 2.148.1 → 2.150.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +84 -84
  3. data/deliver/lib/deliver.rb +0 -1
  4. data/deliver/lib/deliver/app_screenshot.rb +28 -27
  5. data/deliver/lib/deliver/options.rb +6 -11
  6. data/deliver/lib/deliver/runner.rb +7 -21
  7. data/deliver/lib/deliver/setup.rb +5 -30
  8. data/deliver/lib/deliver/submit_for_review.rb +155 -90
  9. data/deliver/lib/deliver/upload_metadata.rb +355 -143
  10. data/deliver/lib/deliver/upload_price_tier.rb +22 -8
  11. data/deliver/lib/deliver/upload_screenshots.rb +112 -37
  12. data/fastlane/lib/assets/s3_html_template.erb +1 -1
  13. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +42 -2
  14. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  15. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +77 -96
  16. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +3 -2
  17. data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -1
  18. data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
  19. data/fastlane/lib/fastlane/actions/hipchat.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/set_changelog.rb +23 -20
  21. data/fastlane/lib/fastlane/actions/slack.rb +2 -2
  22. data/fastlane/lib/fastlane/actions/slather.rb +8 -1
  23. data/fastlane/lib/fastlane/actions/spm.rb +7 -0
  24. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +2 -33
  25. data/fastlane/lib/fastlane/lane.rb +3 -3
  26. data/fastlane/lib/fastlane/swift_fastlane_function.rb +22 -5
  27. data/fastlane/lib/fastlane/version.rb +1 -1
  28. data/fastlane/swift/ControlCommand.swift +1 -0
  29. data/fastlane/swift/Deliverfile.swift +1 -1
  30. data/fastlane/swift/Fastlane.swift +79 -22
  31. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
  32. data/fastlane/swift/Gymfile.swift +1 -1
  33. data/fastlane/swift/GymfileProtocol.swift +1 -1
  34. data/fastlane/swift/LaneFileProtocol.swift +2 -5
  35. data/fastlane/swift/Matchfile.swift +1 -1
  36. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  37. data/fastlane/swift/Precheckfile.swift +1 -1
  38. data/fastlane/swift/RubyCommand.swift +29 -6
  39. data/fastlane/swift/RubyCommandable.swift +1 -0
  40. data/fastlane/swift/Runner.swift +85 -13
  41. data/fastlane/swift/Scanfile.swift +1 -1
  42. data/fastlane/swift/ScanfileProtocol.swift +2 -2
  43. data/fastlane/swift/Screengrabfile.swift +1 -1
  44. data/fastlane/swift/Snapshotfile.swift +1 -1
  45. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  46. data/fastlane/swift/SocketClient.swift +76 -45
  47. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  48. data/fastlane/swift/SocketResponse.swift +1 -0
  49. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -3
  50. data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
  51. data/frameit/lib/frameit/device_types.rb +100 -100
  52. data/gym/lib/gym/options.rb +1 -1
  53. data/match/lib/match/nuke.rb +21 -16
  54. data/match/lib/match/storage/git_storage.rb +4 -0
  55. data/match/lib/match/storage/google_cloud_storage.rb +4 -0
  56. data/match/lib/match/storage/interface.rb +4 -0
  57. data/match/lib/match/storage/s3_storage.rb +4 -0
  58. data/produce/lib/produce/itunes_connect.rb +32 -21
  59. data/produce/lib/produce/options.rb +3 -3
  60. data/scan/lib/scan/options.rb +1 -1
  61. data/scan/lib/scan/test_result_parser.rb +9 -2
  62. data/sigh/lib/assets/resign.sh +7 -7
  63. data/snapshot/lib/assets/SnapshotHelper.swift +5 -5
  64. data/snapshot/lib/assets/SnapshotHelperXcode8.swift +3 -3
  65. data/snapshot/lib/snapshot/options.rb +11 -1
  66. data/snapshot/lib/snapshot/reports_generator.rb +8 -1
  67. data/snapshot/lib/snapshot/test_command_generator.rb +8 -3
  68. data/spaceship/lib/spaceship/.DS_Store +0 -0
  69. data/spaceship/lib/spaceship/client.rb +13 -4
  70. data/spaceship/lib/spaceship/connect_api.rb +25 -2
  71. data/spaceship/lib/spaceship/connect_api/client.rb +97 -31
  72. data/spaceship/lib/spaceship/connect_api/file_uploader.rb +66 -0
  73. data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
  74. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +113 -0
  75. data/spaceship/lib/spaceship/connect_api/models/app.rb +115 -3
  76. data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
  77. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +66 -0
  78. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
  79. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +77 -0
  80. data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +71 -0
  81. data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
  82. data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
  83. data/spaceship/lib/spaceship/connect_api/models/app_review_attachment.rb +81 -0
  84. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +97 -0
  85. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +101 -0
  86. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
  87. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +182 -0
  88. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +86 -0
  89. data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +36 -0
  90. data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
  91. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
  92. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +40 -0
  93. data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
  94. data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
  95. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +10 -3
  96. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +33 -0
  97. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +831 -0
  98. data/spaceship/lib/spaceship/errors.rb +3 -0
  99. data/spaceship/lib/spaceship/spaceauth_runner.rb +2 -2
  100. data/supply/lib/supply/client.rb +19 -0
  101. data/supply/lib/supply/reader.rb +16 -0
  102. metadata +51 -42
  103. data/deliver/lib/deliver/upload_assets.rb +0 -27
@@ -171,9 +171,10 @@ A common Play publishing scenario might involve uploading an APK version to a te
171
171
 
172
172
  This can be done using the `--track_promote_to` parameter. The `--track_promote_to` parameter works with the `--track` parameter to command the Play API to promote existing Play track APK version(s) (those active on the track identified by the `--track` param value) to a new track (`--track_promote_to` value).
173
173
 
174
- ## Retrieve Track Version Codes
174
+ ## Retrieve Track Release Names & Version Codes
175
175
 
176
- Before performing a new APK upload you may want to check existing track version codes, or you may simply want to provide an informational lane that displays the currently promoted version codes for the production track. You can use the `google_play_track_version_codes` action to retrieve existing version codes for a package and track. For more information, see `fastlane action google_play_track_version_codes` help output.
176
+ Before performing a new APK upload you may want to check existing track version codes or release names, or you may simply want to provide an informational lane that displays the currently promoted version codes or release name for the production track. You can use the `google_play_track_version_codes` action to retrieve existing version codes for a package and track. You can use the `google_play_track_release_names` action to retrieve existing release names for a package and track.
177
+ For more information, see the `fastlane action google_play_track_version_codes` and `fastlane action google_play_track_release_names` help output.
177
178
 
178
179
  ## Migration from AndroidPublisherV2 to AndroidPublisherV3 in _fastlane_ 2.135.0
179
180
 
@@ -164,7 +164,13 @@ module Fastlane
164
164
 
165
165
  def self.download_file(url)
166
166
  uri = URI.parse(url)
167
- http = Net::HTTP.new(uri.host, uri.port)
167
+ if ENV['http_proxy']
168
+ UI.verbose("Found 'http_proxy' environment variable so connect via proxy")
169
+ proxy_uri = URI.parse(ENV['http_proxy'])
170
+ http = Net::HTTP.new(uri.host, uri.port, proxy_uri.host, proxy_uri.port)
171
+ else
172
+ http = Net::HTTP.new(uri.host, uri.port)
173
+ end
168
174
  http.use_ssl = (uri.scheme == "https")
169
175
  res = http.get(uri.request_uri)
170
176
  res.body
@@ -0,0 +1,74 @@
1
+ module Fastlane
2
+ module Actions
3
+ class GooglePlayTrackReleaseNamesAction < Action
4
+ # Supply::Options.available_options keys that apply to this action.
5
+ OPTIONS = [
6
+ :package_name,
7
+ :track,
8
+ :key,
9
+ :issuer,
10
+ :json_key,
11
+ :json_key_data,
12
+ :root_url,
13
+ :timeout
14
+ ]
15
+
16
+ def self.run(params)
17
+ require 'supply'
18
+ require 'supply/options'
19
+ require 'supply/reader'
20
+
21
+ Supply.config = params
22
+
23
+ release_names = Supply::Reader.new.track_release_names || []
24
+ return release_names.compact
25
+ end
26
+
27
+ #####################################################
28
+ # @!group Documentation
29
+ #####################################################
30
+
31
+ def self.description
32
+ "Retrieves release names for a Google Play track"
33
+ end
34
+
35
+ def self.details
36
+ "More information: [https://docs.fastlane.tools/actions/supply/](https://docs.fastlane.tools/actions/supply/)"
37
+ end
38
+
39
+ def self.available_options
40
+ require 'supply'
41
+ require 'supply/options'
42
+
43
+ Supply::Options.available_options.select do |option|
44
+ OPTIONS.include?(option.key)
45
+ end
46
+ end
47
+
48
+ def self.output
49
+ end
50
+
51
+ def self.return_value
52
+ "Array of strings representing the release names for the given Google Play track"
53
+ end
54
+
55
+ def self.authors
56
+ ["raldred"]
57
+ end
58
+
59
+ def self.is_supported?(platform)
60
+ platform == :android
61
+ end
62
+
63
+ def self.example_code
64
+ [
65
+ 'google_play_track_release_names'
66
+ ]
67
+ end
68
+
69
+ def self.category
70
+ :misc
71
+ end
72
+ end
73
+ end
74
+ end
@@ -25,7 +25,7 @@ module Fastlane
25
25
 
26
26
  message = options[:message]
27
27
  if (message_format == "html") && (options[:include_html_header] == true)
28
- message = "<table><tr><td><img src='https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png' width='50' height='50'></td><td>#{message[0..9999]}</td></tr></table>"
28
+ message = "<table><tr><td><img src='https://fastlane.tools/assets/img/fastlane_icon.png' width='50' height='50'></td><td>#{message[0..9999]}</td></tr></table>"
29
29
  end
30
30
 
31
31
  if api_version.to_i == 1
@@ -9,16 +9,18 @@ module Fastlane
9
9
  Spaceship::Tunes.select_team
10
10
  UI.message("Login successful")
11
11
 
12
- app = Spaceship::Application.find(params[:app_identifier]) || Spaceship::Application.find(params[:app_identifier], mac: true)
12
+ app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
13
13
  UI.user_error!("Couldn't find app with identifier #{params[:app_identifier]}") if app.nil?
14
14
 
15
15
  version_number = params[:version]
16
- platform = params[:platform]
16
+ platform = Spaceship::ConnectAPI::Platform.map(params[:platform])
17
+
17
18
  unless version_number
18
19
  # Automatically fetch the latest version
19
20
  UI.message("Fetching the latest version for this app")
20
- if app.edit_version(platform: platform) && app.edit_version(platform: platform).version
21
- version_number = app.edit_version(platform: platform).version
21
+ edit_version = app.get_edit_app_store_version(platform: platform)
22
+ if edit_version
23
+ version_number = edit_version.version_string
22
24
  else
23
25
  UI.message("You have to specify a new version number: ")
24
26
  version_number = STDIN.gets.strip
@@ -42,31 +44,32 @@ module Fastlane
42
44
 
43
45
  UI.important("Going to update the changelog to:\n\n#{changelog}\n\n")
44
46
 
45
- if (v = app.edit_version(platform: platform))
46
- if v.version != version_number
47
+ edit_version = app.get_edit_app_store_version(platform: platform)
48
+ if edit_version
49
+ if edit_version.version_string != version_number
47
50
  # Version is already there, make sure it matches the one we want to create
48
- UI.message("Changing existing version number from '#{v.version}' to '#{version_number}'")
49
- v.version = version_number
50
- v.save!
51
+ UI.message("Changing existing version number from '#{edit_version.version_string}' to '#{version_number}'")
52
+ edit_version = edit_version.update(attributes: {
53
+ versionString: version_number
54
+ })
51
55
  else
52
- UI.message("Updating changelog for existing version #{v.version}")
56
+ UI.message("Updating changelog for existing version #{edit_version.version_string}")
53
57
  end
54
58
  else
55
59
  UI.message("Creating the new version: #{version_number}")
56
- app.create_version!(version_number)
57
- app = Spaceship::Application.find(params[:app_identifier]) # Replace with .reload method once available
58
- v = app.edit_version(platform: platform)
60
+ attributes = { versionString: version_number, platform: platform }
61
+ edit_version = Spaceship::ConnectAPI.post_app_store_version(app_id: app.id, attributes: attributes).first
59
62
  end
60
63
 
61
- v.release_notes.languages.each do |lang|
62
- v.release_notes[lang] = changelog
64
+ localizations = edit_version.get_app_store_version_localizations
65
+ localizations.each do |localization|
66
+ UI.message("Updating changelog for the '#{localization.locale}'")
67
+ localization.update(attributes: {
68
+ whatsNew: changelog
69
+ })
63
70
  end
64
71
 
65
- UI.message("Found and updated changelog for the following languages: #{v.release_notes.languages.join(', ')}")
66
- UI.message("Uploading changes to App Store Connect...")
67
- v.save!
68
-
69
- UI.success("👼 Successfully pushed the new changelog to #{v.url}")
72
+ UI.success("👼 Successfully pushed the new changelog to for #{edit_version.version_string}")
70
73
  end
71
74
 
72
75
  def self.default_changelog_path
@@ -105,7 +105,7 @@ module Fastlane
105
105
  FastlaneCore::ConfigItem.new(key: :icon_url,
106
106
  env_name: "FL_SLACK_ICON_URL",
107
107
  description: "Overrides the webhook's image property if use_webhook_configured_username_and_icon is false",
108
- default_value: "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
108
+ default_value: "https://fastlane.tools/assets/img/fastlane_icon.png",
109
109
  is_string: true,
110
110
  optional: true),
111
111
  FastlaneCore::ConfigItem.new(key: :payload,
@@ -159,7 +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 a whitelist of default payloads to include. Pass an empty array to suppress all the default payloads.
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
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`.
164
164
  attachment_properties: { # Optional, lets you specify any other properties available for attachments in the slack API (see https://api.slack.com/docs/attachments).
165
165
  # 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.
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  class SlatherAction < Action
4
- # https://github.com/SlatherOrg/slather/blob/v2.4.2/lib/slather/command/coverage_command.rb
4
+ # https://github.com/SlatherOrg/slather/blob/v2.4.9/lib/slather/command/coverage_command.rb
5
5
  ARGS_MAP = {
6
6
  travis: '--travis',
7
7
  travis_pro: '--travispro',
@@ -14,6 +14,7 @@ module Fastlane
14
14
  simple_output: '--simple-output',
15
15
  gutter_json: '--gutter-json',
16
16
  cobertura_xml: '--cobertura-xml',
17
+ sonarqube_xml: '--sonarqube-xml',
17
18
  llvm_cov: '--llvm-cov',
18
19
  html: '--html',
19
20
  show: '--show',
@@ -213,6 +214,12 @@ module Fastlane
213
214
  is_string: false,
214
215
  type: Boolean,
215
216
  optional: true),
217
+ FastlaneCore::ConfigItem.new(key: :sonarqube_xml,
218
+ env_name: "FL_SLATHER_SONARQUBE_XML_ENABLED",
219
+ description: "Tell slather that it should output results as SonarQube Generic XML format",
220
+ is_string: false,
221
+ type: Boolean,
222
+ optional: true),
216
223
  FastlaneCore::ConfigItem.new(key: :llvm_cov,
217
224
  env_name: "FL_SLATHER_LLVM_COV_ENABLED",
218
225
  description: "Tell slather that it should output results as llvm-cov show format",
@@ -8,6 +8,7 @@ module Fastlane
8
8
  cmd << "--build-path #{params[:build_path]}" if params[:build_path]
9
9
  cmd << "--package-path #{params[:package_path]}" if params[:package_path]
10
10
  cmd << "--configuration #{params[:configuration]}" if params[:configuration]
11
+ cmd << "--disable-sandbox" if params[:disable_sandbox]
11
12
  cmd << "--verbose" if params[:verbose]
12
13
  cmd << params[:command] if package_commands.include?(params[:command])
13
14
  if params[:xcconfig]
@@ -63,6 +64,12 @@ module Fastlane
63
64
  verify_block: proc do |value|
64
65
  UI.user_error!("Please pass a valid configuration: (debug|release)") unless valid_configurations.include?(value)
65
66
  end),
67
+ FastlaneCore::ConfigItem.new(key: :disable_sandbox,
68
+ env_name: "FL_SPM_DISABLE_SANDBOX",
69
+ description: "Disable using the sandbox when executing subprocesses",
70
+ optional: true,
71
+ is_string: false,
72
+ default_value: false),
66
73
  FastlaneCore::ConfigItem.new(key: :xcpretty_output,
67
74
  env_name: "FL_SPM_XCPRETTY_OUTPUT",
68
75
  description: "Specifies the output type for xcpretty. eg. 'test', or 'simple'",
@@ -45,44 +45,13 @@ module Fastlane
45
45
  # @param current_path this is a path to either a dSYM or a zipped dSYM
46
46
  # this might also be either nested or not, we're flexible
47
47
  def self.handle_dsym(params, current_path, max_worker_threads)
48
- if current_path.end_with?(".dSYM")
48
+ if current_path.end_with?(".dSYM", ".zip")
49
49
  upload_dsym(params, current_path)
50
- elsif current_path.end_with?(".zip")
51
- UI.message("Extracting '#{current_path}'...")
52
-
53
- current_path = File.expand_path(current_path)
54
- Dir.mktmpdir do |dir|
55
- Dir.chdir(dir) do
56
- Actions.sh("unzip -qo #{current_path.shellescape}")
57
- work_q = Queue.new
58
- Dir["*.dSYM"].each do |sub|
59
- work_q.push(sub)
60
- end
61
- execute_uploads(params, max_worker_threads, work_q)
62
- end
63
- end
64
50
  else
65
51
  UI.error("Don't know how to handle '#{current_path}'")
66
52
  end
67
53
  end
68
54
 
69
- def self.execute_uploads(params, max_worker_threads, work_q)
70
- number_of_threads = [max_worker_threads, work_q.size].min
71
- workers = (0...number_of_threads).map do
72
- Thread.new do
73
- begin
74
- while work_q.size > 0
75
- current_path = work_q.pop(true)
76
- upload_dsym(params, current_path)
77
- end
78
- rescue => ex
79
- UI.error(ex.to_s)
80
- end
81
- end
82
- end
83
- workers.map(&:join)
84
- end
85
-
86
55
  def self.upload_dsym(params, path)
87
56
  UI.message("Uploading '#{path}'...")
88
57
  command = []
@@ -119,7 +88,7 @@ module Fastlane
119
88
  end
120
89
 
121
90
  def self.find_gsp_path(params)
122
- return if params[:api_token]
91
+ return if params[:api_token] && params[:gsp_path].nil?
123
92
 
124
93
  if params[:gsp_path].to_s.length > 0
125
94
  params[:gsp_path] = File.expand_path(params[:gsp_path])
@@ -41,8 +41,8 @@ module Fastlane
41
41
  class << self
42
42
  # Makes sure the lane name is valid
43
43
  def verify_lane_name(name)
44
- if self.black_list.include?(name.to_s)
45
- UI.error("Lane name '#{name}' is invalid! Invalid names are #{self.black_list.join(', ')}.")
44
+ if self.deny_list.include?(name.to_s)
45
+ UI.error("Lane name '#{name}' is invalid! Invalid names are #{self.deny_list.join(', ')}.")
46
46
  UI.user_error!("Lane name '#{name}' is invalid")
47
47
  end
48
48
 
@@ -59,7 +59,7 @@ module Fastlane
59
59
  self.ensure_name_not_conflicts(name.to_s)
60
60
  end
61
61
 
62
- def black_list
62
+ def deny_list
63
63
  %w(
64
64
  run
65
65
  init
@@ -95,8 +95,14 @@ module Fastlane
95
95
  return "Int"
96
96
  elsif type_override == Boolean
97
97
  return "Bool"
98
+ elsif type_override == Float
99
+ return "Float"
98
100
  elsif type_override == :string_callback
99
- return "((String) -> Void)"
101
+ # David Hart:
102
+ # It doesn't make sense to add escaping annotations to optional closures because they aren't function types:
103
+ # they are basically an enum (Optional) containing a function, the same way you would store a closure in any type:
104
+ # it's implicitly escaping because it's owned by another type.
105
+ return "((String) -> Void)?"
100
106
  else
101
107
  return default_type
102
108
  end
@@ -104,7 +110,7 @@ module Fastlane
104
110
 
105
111
  def override_default_value_if_not_correct_type(param_name: nil, param_type: nil, default_value: nil)
106
112
  return "[]" if param_type == "[String]" && default_value == ""
107
- return "{_ in }" if param_type == "((String) -> Void)"
113
+ return "nil" if param_type == "((String) -> Void)?"
108
114
 
109
115
  return default_value
110
116
  end
@@ -119,7 +125,7 @@ module Fastlane
119
125
 
120
126
  optional_specifier = ""
121
127
  # if we are optional and don't have a default value, we'll need to use ?
122
- optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)"
128
+ optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)?"
123
129
 
124
130
  # If we have a default value of true or false, we can infer it is a Bool
125
131
  if default_value.class == FalseClass
@@ -130,8 +136,19 @@ module Fastlane
130
136
  type = "[String]"
131
137
  elsif default_value.kind_of?(Hash)
132
138
  type = "[String : Any]"
139
+ # Altough we can have a default value of Integer type, if param_type_override overridden that value, respect it.
133
140
  elsif default_value.kind_of?(Integer)
134
- type = "Int"
141
+ if type == "Double" || type == "Float"
142
+ begin
143
+ # If we're not able to instantiate
144
+ _ = BigDecimal(default_value)
145
+ rescue
146
+ # We set it as a Int
147
+ type = "Int"
148
+ end
149
+ else
150
+ type = "Int"
151
+ end
135
152
  end
136
153
  return "#{type}#{optional_specifier}"
137
154
  end
@@ -149,7 +166,7 @@ module Fastlane
149
166
  # we can't handle default values for Hashes, yet
150
167
  # see method swift_default_implementations for similar behavior
151
168
  default_value = "[:]"
152
- elsif type != "Bool" && type != "[String]" && type != "Int" && type != "((String) -> Void)"
169
+ elsif type != "Bool" && type != "[String]" && type != "Int" && type != "@escaping ((String) -> Void)" && type != "Float" && type != "Double"
153
170
  default_value = "\"#{default_value}\""
154
171
  end
155
172
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.148.1'.freeze
2
+ VERSION = '2.150.0.rc3'.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
@@ -49,6 +49,7 @@ struct ControlCommand: RubyCommandable {
49
49
  }
50
50
 
51
51
  let message: String?
52
+ let id: String = UUID().uuidString
52
53
  let shutdownCommandType: ShutdownCommandType
53
54
  var commandJson: String {
54
55
  var jsonDictionary: [String: Any] = [ControlCommand.commandKey : self.shutdownCommandType.token]
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.148.1
21
+ // Generated with fastlane 2.149.1
@@ -894,7 +894,7 @@ func buildAndroidApp(task: String? = nil,
894
894
  - skipArchive: After building, don't archive, effectively not including -archivePath param
895
895
  - skipCodesigning: Build without codesigning
896
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)`
897
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
898
898
  - buildPath: The directory in which the archive should be stored in
899
899
  - archivePath: The path to the created archive
900
900
  - derivedDataPath: The directory where built products and other derived data will go
@@ -1171,7 +1171,7 @@ func buildIosApp(workspace: String? = nil,
1171
1171
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
1172
1172
  - skipArchive: After building, don't archive, effectively not including -archivePath param
1173
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)`
1174
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
1175
1175
  - buildPath: The directory in which the archive should be stored in
1176
1176
  - archivePath: The path to the created archive
1177
1177
  - derivedDataPath: The directory where built products and other derived data will go
@@ -1448,6 +1448,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1448
1448
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
1449
1449
  - addPhotos: A list of photos that should be added to the simulator before running the application
1450
1450
  - addVideos: A list of videos that should be added to the simulator before running the application
1451
+ - htmlTemplate: A path to screenshots.html template
1451
1452
  - buildlogPath: The directory where to store the build log
1452
1453
  - clean: Should the project be cleaned before building it?
1453
1454
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -1467,6 +1468,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1467
1468
  - testplan: The testplan associated with the scheme that should be used for testing
1468
1469
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1469
1470
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1471
+ - disableXcpretty: Disable xcpretty formatting of build
1470
1472
  */
1471
1473
  func captureIosScreenshots(workspace: String? = nil,
1472
1474
  project: String? = nil,
@@ -1489,6 +1491,7 @@ func captureIosScreenshots(workspace: String? = nil,
1489
1491
  appIdentifier: String? = nil,
1490
1492
  addPhotos: [String]? = nil,
1491
1493
  addVideos: [String]? = nil,
1494
+ htmlTemplate: String? = nil,
1492
1495
  buildlogPath: String = "~/Library/Logs/snapshot",
1493
1496
  clean: Bool = false,
1494
1497
  testWithoutBuilding: Bool? = nil,
@@ -1507,7 +1510,8 @@ func captureIosScreenshots(workspace: String? = nil,
1507
1510
  clonedSourcePackagesPath: String? = nil,
1508
1511
  testplan: String? = nil,
1509
1512
  onlyTesting: Any? = nil,
1510
- skipTesting: Any? = nil) {
1513
+ skipTesting: Any? = nil,
1514
+ disableXcpretty: Bool? = nil) {
1511
1515
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1512
1516
  RubyCommand.Argument(name: "project", value: project),
1513
1517
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1529,6 +1533,7 @@ func captureIosScreenshots(workspace: String? = nil,
1529
1533
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1530
1534
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
1531
1535
  RubyCommand.Argument(name: "add_videos", value: addVideos),
1536
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
1532
1537
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1533
1538
  RubyCommand.Argument(name: "clean", value: clean),
1534
1539
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -1547,7 +1552,8 @@ func captureIosScreenshots(workspace: String? = nil,
1547
1552
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1548
1553
  RubyCommand.Argument(name: "testplan", value: testplan),
1549
1554
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1550
- RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
1555
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1556
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1551
1557
  _ = runner.executeCommand(command)
1552
1558
  }
1553
1559
 
@@ -1576,6 +1582,7 @@ func captureIosScreenshots(workspace: String? = nil,
1576
1582
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
1577
1583
  - addPhotos: A list of photos that should be added to the simulator before running the application
1578
1584
  - addVideos: A list of videos that should be added to the simulator before running the application
1585
+ - htmlTemplate: A path to screenshots.html template
1579
1586
  - buildlogPath: The directory where to store the build log
1580
1587
  - clean: Should the project be cleaned before building it?
1581
1588
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -1595,6 +1602,7 @@ func captureIosScreenshots(workspace: String? = nil,
1595
1602
  - testplan: The testplan associated with the scheme that should be used for testing
1596
1603
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1597
1604
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1605
+ - disableXcpretty: Disable xcpretty formatting of build
1598
1606
  */
1599
1607
  func captureScreenshots(workspace: String? = nil,
1600
1608
  project: String? = nil,
@@ -1617,6 +1625,7 @@ func captureScreenshots(workspace: String? = nil,
1617
1625
  appIdentifier: String? = nil,
1618
1626
  addPhotos: [String]? = nil,
1619
1627
  addVideos: [String]? = nil,
1628
+ htmlTemplate: String? = nil,
1620
1629
  buildlogPath: String = "~/Library/Logs/snapshot",
1621
1630
  clean: Bool = false,
1622
1631
  testWithoutBuilding: Bool? = nil,
@@ -1635,7 +1644,8 @@ func captureScreenshots(workspace: String? = nil,
1635
1644
  clonedSourcePackagesPath: String? = nil,
1636
1645
  testplan: String? = nil,
1637
1646
  onlyTesting: Any? = nil,
1638
- skipTesting: Any? = nil) {
1647
+ skipTesting: Any? = nil,
1648
+ disableXcpretty: Bool? = nil) {
1639
1649
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1640
1650
  RubyCommand.Argument(name: "project", value: project),
1641
1651
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1657,6 +1667,7 @@ func captureScreenshots(workspace: String? = nil,
1657
1667
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1658
1668
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
1659
1669
  RubyCommand.Argument(name: "add_videos", value: addVideos),
1670
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
1660
1671
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1661
1672
  RubyCommand.Argument(name: "clean", value: clean),
1662
1673
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -1675,7 +1686,8 @@ func captureScreenshots(workspace: String? = nil,
1675
1686
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1676
1687
  RubyCommand.Argument(name: "testplan", value: testplan),
1677
1688
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1678
- RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
1689
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1690
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1679
1691
  _ = runner.executeCommand(command)
1680
1692
  }
1681
1693
 
@@ -2027,7 +2039,7 @@ func cocoapods(repoUpdate: Bool = false,
2027
2039
  ansi: Bool = true,
2028
2040
  useBundleExec: Bool = true,
2029
2041
  podfile: String? = nil,
2030
- errorCallback: Any? = nil,
2042
+ errorCallback: ((String) -> Void)? = nil,
2031
2043
  tryRepoUpdateOnError: Bool = false,
2032
2044
  deployment: Bool = false,
2033
2045
  clean: Bool = true,
@@ -2039,7 +2051,7 @@ func cocoapods(repoUpdate: Bool = false,
2039
2051
  RubyCommand.Argument(name: "ansi", value: ansi),
2040
2052
  RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
2041
2053
  RubyCommand.Argument(name: "podfile", value: podfile),
2042
- RubyCommand.Argument(name: "error_callback", value: errorCallback),
2054
+ RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure),
2043
2055
  RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError),
2044
2056
  RubyCommand.Argument(name: "deployment", value: deployment),
2045
2057
  RubyCommand.Argument(name: "clean", value: clean),
@@ -3042,7 +3054,7 @@ func frameScreenshots(white: Bool? = nil,
3042
3054
  useLegacyIphonexr: Bool = false,
3043
3055
  useLegacyIphonexs: Bool = false,
3044
3056
  useLegacyIphonexsmax: Bool = false,
3045
- forceOrientationBlock: String? = nil,
3057
+ forceOrientationBlock: ((String) -> Void)? = nil,
3046
3058
  debugMode: Bool = false,
3047
3059
  resume: Bool = false,
3048
3060
  usePlatform: String = "IOS",
@@ -3059,7 +3071,7 @@ func frameScreenshots(white: Bool? = nil,
3059
3071
  RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3060
3072
  RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3061
3073
  RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3062
- RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3074
+ RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
3063
3075
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3064
3076
  RubyCommand.Argument(name: "resume", value: resume),
3065
3077
  RubyCommand.Argument(name: "use_platform", value: usePlatform),
@@ -3104,7 +3116,7 @@ func frameit(white: Bool? = nil,
3104
3116
  useLegacyIphonexr: Bool = false,
3105
3117
  useLegacyIphonexs: Bool = false,
3106
3118
  useLegacyIphonexsmax: Bool = false,
3107
- forceOrientationBlock: String? = nil,
3119
+ forceOrientationBlock: ((String) -> Void)? = nil,
3108
3120
  debugMode: Bool = false,
3109
3121
  resume: Bool = false,
3110
3122
  usePlatform: String = "IOS",
@@ -3121,7 +3133,7 @@ func frameit(white: Bool? = nil,
3121
3133
  RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3122
3134
  RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3123
3135
  RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3124
- RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3136
+ RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
3125
3137
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3126
3138
  RubyCommand.Argument(name: "resume", value: resume),
3127
3139
  RubyCommand.Argument(name: "use_platform", value: usePlatform),
@@ -3627,6 +3639,42 @@ func githubApi(serverUrl: String = "https://api.github.com",
3627
3639
  _ = runner.executeCommand(command)
3628
3640
  }
3629
3641
 
3642
+ /**
3643
+ Retrieves release names for a Google Play track
3644
+
3645
+ - parameters:
3646
+ - packageName: The package name of the application to use
3647
+ - track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
3648
+ - key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
3649
+ - issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
3650
+ - jsonKey: The path to a file containing service account JSON, used to authenticate with Google
3651
+ - jsonKeyData: The raw service account JSON data used to authenticate with Google
3652
+ - rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
3653
+ - timeout: Timeout for read, open, and send (in seconds)
3654
+
3655
+ - returns: Array of strings representing the release names for the given Google Play track
3656
+
3657
+ More information: [https://docs.fastlane.tools/actions/supply/](https://docs.fastlane.tools/actions/supply/)
3658
+ */
3659
+ func googlePlayTrackReleaseNames(packageName: String,
3660
+ track: String = "production",
3661
+ key: String? = nil,
3662
+ issuer: String? = nil,
3663
+ jsonKey: String? = nil,
3664
+ jsonKeyData: String? = nil,
3665
+ rootUrl: String? = nil,
3666
+ timeout: Int = 300) {
3667
+ let command = RubyCommand(commandID: "", methodName: "google_play_track_release_names", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
3668
+ RubyCommand.Argument(name: "track", value: track),
3669
+ RubyCommand.Argument(name: "key", value: key),
3670
+ RubyCommand.Argument(name: "issuer", value: issuer),
3671
+ RubyCommand.Argument(name: "json_key", value: jsonKey),
3672
+ RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
3673
+ RubyCommand.Argument(name: "root_url", value: rootUrl),
3674
+ RubyCommand.Argument(name: "timeout", value: timeout)])
3675
+ _ = runner.executeCommand(command)
3676
+ }
3677
+
3630
3678
  /**
3631
3679
  Retrieves version codes for a Google Play track
3632
3680
 
@@ -3735,7 +3783,7 @@ func gradle(task: String? = nil,
3735
3783
  - skipArchive: After building, don't archive, effectively not including -archivePath param
3736
3784
  - skipCodesigning: Build without codesigning
3737
3785
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
3738
- - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3786
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3739
3787
  - buildPath: The directory in which the archive should be stored in
3740
3788
  - archivePath: The path to the created archive
3741
3789
  - derivedDataPath: The directory where built products and other derived data will go
@@ -5801,7 +5849,7 @@ func runTests(workspace: String? = nil,
5801
5849
  slackMessage: String? = nil,
5802
5850
  slackUseWebhookConfiguredUsernameAndIcon: Bool = false,
5803
5851
  slackUsername: String = "fastlane",
5804
- slackIconUrl: String = "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
5852
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
5805
5853
  skipSlack: Bool = false,
5806
5854
  slackOnlyOnFailure: Bool = false,
5807
5855
  destination: Any? = nil,
@@ -6508,10 +6556,10 @@ func setupTravis(force: Bool = false) {
6508
6556
  */
6509
6557
  @discardableResult func sh(command: String,
6510
6558
  log: Bool = true,
6511
- errorCallback: Any? = nil) -> String {
6559
+ errorCallback: ((String) -> Void)? = nil) -> String {
6512
6560
  let command = RubyCommand(commandID: "", methodName: "sh", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
6513
6561
  RubyCommand.Argument(name: "log", value: log),
6514
- RubyCommand.Argument(name: "error_callback", value: errorCallback)])
6562
+ RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure)])
6515
6563
  return runner.executeCommand(command)
6516
6564
  }
6517
6565
 
@@ -6626,7 +6674,7 @@ func slack(message: String? = nil,
6626
6674
  useWebhookConfiguredUsernameAndIcon: Bool = false,
6627
6675
  slackUrl: String,
6628
6676
  username: String = "fastlane",
6629
- iconUrl: String = "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
6677
+ iconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
6630
6678
  payload: [String : Any] = [:],
6631
6679
  defaultPayloads: [String]? = nil,
6632
6680
  attachmentProperties: [String : Any] = [:],
@@ -6707,6 +6755,7 @@ func slackTrainStart(distance: Int = 5,
6707
6755
  - simpleOutput: Tell slather that it should output results to the terminal
6708
6756
  - gutterJson: Tell slather that it should output results as Gutter JSON format
6709
6757
  - coberturaXml: Tell slather that it should output results as Cobertura XML format
6758
+ - sonarqubeXml: Tell slather that it should output results as SonarQube Generic XML format
6710
6759
  - llvmCov: Tell slather that it should output results as llvm-cov show format
6711
6760
  - html: Tell slather that it should output results as static HTML pages
6712
6761
  - show: Tell slather that it should open static html pages automatically
@@ -6740,6 +6789,7 @@ func slather(buildDirectory: String? = nil,
6740
6789
  simpleOutput: Bool? = nil,
6741
6790
  gutterJson: Bool? = nil,
6742
6791
  coberturaXml: Bool? = nil,
6792
+ sonarqubeXml: Bool? = nil,
6743
6793
  llvmCov: Any? = nil,
6744
6794
  html: Bool? = nil,
6745
6795
  show: Bool = false,
@@ -6769,6 +6819,7 @@ func slather(buildDirectory: String? = nil,
6769
6819
  RubyCommand.Argument(name: "simple_output", value: simpleOutput),
6770
6820
  RubyCommand.Argument(name: "gutter_json", value: gutterJson),
6771
6821
  RubyCommand.Argument(name: "cobertura_xml", value: coberturaXml),
6822
+ RubyCommand.Argument(name: "sonarqube_xml", value: sonarqubeXml),
6772
6823
  RubyCommand.Argument(name: "llvm_cov", value: llvmCov),
6773
6824
  RubyCommand.Argument(name: "html", value: html),
6774
6825
  RubyCommand.Argument(name: "show", value: show),
@@ -6810,6 +6861,7 @@ func slather(buildDirectory: String? = nil,
6810
6861
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
6811
6862
  - addPhotos: A list of photos that should be added to the simulator before running the application
6812
6863
  - addVideos: A list of videos that should be added to the simulator before running the application
6864
+ - htmlTemplate: A path to screenshots.html template
6813
6865
  - buildlogPath: The directory where to store the build log
6814
6866
  - clean: Should the project be cleaned before building it?
6815
6867
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -6829,6 +6881,7 @@ func slather(buildDirectory: String? = nil,
6829
6881
  - testplan: The testplan associated with the scheme that should be used for testing
6830
6882
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
6831
6883
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
6884
+ - disableXcpretty: Disable xcpretty formatting of build
6832
6885
  */
6833
6886
  func snapshot(workspace: Any? = snapshotfile.workspace,
6834
6887
  project: Any? = snapshotfile.project,
@@ -6851,6 +6904,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6851
6904
  appIdentifier: Any? = snapshotfile.appIdentifier,
6852
6905
  addPhotos: [String]? = snapshotfile.addPhotos,
6853
6906
  addVideos: [String]? = snapshotfile.addVideos,
6907
+ htmlTemplate: Any? = snapshotfile.htmlTemplate,
6854
6908
  buildlogPath: Any = snapshotfile.buildlogPath,
6855
6909
  clean: Bool = snapshotfile.clean,
6856
6910
  testWithoutBuilding: Bool? = snapshotfile.testWithoutBuilding,
@@ -6869,7 +6923,8 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6869
6923
  clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath,
6870
6924
  testplan: Any? = snapshotfile.testplan,
6871
6925
  onlyTesting: Any? = snapshotfile.onlyTesting,
6872
- skipTesting: Any? = snapshotfile.skipTesting) {
6926
+ skipTesting: Any? = snapshotfile.skipTesting,
6927
+ disableXcpretty: Bool? = snapshotfile.disableXcpretty) {
6873
6928
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6874
6929
  RubyCommand.Argument(name: "project", value: project),
6875
6930
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6891,6 +6946,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6891
6946
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6892
6947
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
6893
6948
  RubyCommand.Argument(name: "add_videos", value: addVideos),
6949
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
6894
6950
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
6895
6951
  RubyCommand.Argument(name: "clean", value: clean),
6896
6952
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -6909,7 +6965,8 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6909
6965
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
6910
6966
  RubyCommand.Argument(name: "testplan", value: testplan),
6911
6967
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6912
- RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
6968
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6969
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
6913
6970
  _ = runner.executeCommand(command)
6914
6971
  }
6915
6972
 
@@ -8742,7 +8799,7 @@ func xcov(workspace: String? = nil,
8742
8799
  htmlReport: Bool = true,
8743
8800
  markdownReport: Bool = false,
8744
8801
  jsonReport: Bool = false,
8745
- minimumCoveragePercentage: Int = 0,
8802
+ minimumCoveragePercentage: Float = 0,
8746
8803
  slackUrl: String? = nil,
8747
8804
  slackChannel: String? = nil,
8748
8805
  skipSlack: Bool = false,
@@ -8758,7 +8815,7 @@ func xcov(workspace: String? = nil,
8758
8815
  coverallsServiceJobId: String? = nil,
8759
8816
  coverallsRepoToken: String? = nil,
8760
8817
  xcconfig: String? = nil,
8761
- ideFoundationPath: String = "/Applications/Xcode-11.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8818
+ ideFoundationPath: String = "/Applications/Xcode-11.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8762
8819
  legacySupport: Bool = false) {
8763
8820
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8764
8821
  RubyCommand.Argument(name: "project", value: project),
@@ -8903,4 +8960,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8903
8960
 
8904
8961
  // Please don't remove the lines below
8905
8962
  // They are used to detect outdated files
8906
- // FastlaneRunnerAPIVersion [0.9.76]
8963
+ // FastlaneRunnerAPIVersion [0.9.71]