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.
- checksums.yaml +4 -4
- data/README.md +84 -84
- data/deliver/lib/deliver.rb +0 -1
- data/deliver/lib/deliver/app_screenshot.rb +28 -27
- data/deliver/lib/deliver/options.rb +6 -11
- data/deliver/lib/deliver/runner.rb +7 -21
- data/deliver/lib/deliver/setup.rb +5 -30
- data/deliver/lib/deliver/submit_for_review.rb +155 -90
- data/deliver/lib/deliver/upload_metadata.rb +355 -143
- data/deliver/lib/deliver/upload_price_tier.rb +22 -8
- data/deliver/lib/deliver/upload_screenshots.rb +112 -37
- data/fastlane/lib/assets/s3_html_template.erb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +42 -2
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +77 -96
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +3 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -1
- data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
- data/fastlane/lib/fastlane/actions/hipchat.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +23 -20
- data/fastlane/lib/fastlane/actions/slack.rb +2 -2
- data/fastlane/lib/fastlane/actions/slather.rb +8 -1
- data/fastlane/lib/fastlane/actions/spm.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +2 -33
- data/fastlane/lib/fastlane/lane.rb +3 -3
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +22 -5
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -0
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +79 -22
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +2 -5
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +29 -6
- data/fastlane/swift/RubyCommandable.swift +1 -0
- data/fastlane/swift/Runner.swift +85 -13
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +2 -2
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
- data/fastlane/swift/SocketClient.swift +76 -45
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -3
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
- data/frameit/lib/frameit/device_types.rb +100 -100
- data/gym/lib/gym/options.rb +1 -1
- data/match/lib/match/nuke.rb +21 -16
- data/match/lib/match/storage/git_storage.rb +4 -0
- data/match/lib/match/storage/google_cloud_storage.rb +4 -0
- data/match/lib/match/storage/interface.rb +4 -0
- data/match/lib/match/storage/s3_storage.rb +4 -0
- data/produce/lib/produce/itunes_connect.rb +32 -21
- data/produce/lib/produce/options.rb +3 -3
- data/scan/lib/scan/options.rb +1 -1
- data/scan/lib/scan/test_result_parser.rb +9 -2
- data/sigh/lib/assets/resign.sh +7 -7
- data/snapshot/lib/assets/SnapshotHelper.swift +5 -5
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +3 -3
- data/snapshot/lib/snapshot/options.rb +11 -1
- data/snapshot/lib/snapshot/reports_generator.rb +8 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +8 -3
- data/spaceship/lib/spaceship/.DS_Store +0 -0
- data/spaceship/lib/spaceship/client.rb +13 -4
- data/spaceship/lib/spaceship/connect_api.rb +25 -2
- data/spaceship/lib/spaceship/connect_api/client.rb +97 -31
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +66 -0
- data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +113 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +115 -3
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +66 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +77 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_review_attachment.rb +81 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +97 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +101 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +182 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +86 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +40 -0
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +10 -3
- data/spaceship/lib/spaceship/connect_api/tunes/client.rb +33 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +831 -0
- data/spaceship/lib/spaceship/errors.rb +3 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +2 -2
- data/supply/lib/supply/client.rb +19 -0
- data/supply/lib/supply/reader.rb +16 -0
- metadata +51 -42
- 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.
|
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
|
-
|
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://
|
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::
|
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
|
-
|
21
|
-
|
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
|
-
|
46
|
-
|
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 '#{
|
49
|
-
|
50
|
-
|
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 #{
|
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
|
-
|
57
|
-
|
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
|
-
|
62
|
-
|
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.
|
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://
|
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
|
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.
|
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.
|
45
|
-
UI.error("Lane name '#{name}' is invalid! Invalid names are #{self.
|
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
|
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
|
-
|
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 "
|
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
|
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
|
@@ -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]
|
@@ -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
|
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
|
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:
|
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
|
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://
|
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:
|
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://
|
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:
|
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.
|
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.
|
8963
|
+
// FastlaneRunnerAPIVersion [0.9.71]
|