fastlane 2.149.0 → 2.150.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/deliver/lib/deliver.rb +0 -1
- data/deliver/lib/deliver/app_screenshot.rb +26 -25
- 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 +134 -39
- 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/set_changelog.rb +23 -20
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/actions/spm.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -32
- data/fastlane/lib/fastlane/lane.rb +3 -3
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +8 -4
- 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 +48 -12
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
- data/fastlane/swift/Gymfile.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 +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +3 -3
- 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/itunes_transporter.rb +89 -52
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
- data/fastlane_core/lib/fastlane_core/project.rb +0 -1
- data/frameit/lib/frameit/device_types.rb +100 -100
- data/produce/lib/produce/itunes_connect.rb +32 -21
- data/produce/lib/produce/options.rb +3 -3
- 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 +0 -1
- data/snapshot/lib/snapshot/reports_generator.rb +8 -1
- data/spaceship/lib/spaceship/.DS_Store +0 -0
- data/spaceship/lib/spaceship/client.rb +4 -3
- 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 +98 -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 +120 -3
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +129 -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 +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +93 -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 +183 -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 +841 -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 +44 -39
- data/deliver/lib/deliver/upload_assets.rb +0 -27
- data/fastlane/lib/assets/.s3_html_template.erb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.hipchat.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/scan/lib/scan/.options.rb.swp +0 -0
@@ -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
|
@@ -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
|
@@ -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.
|
@@ -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 = []
|
@@ -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
|
@@ -98,7 +98,11 @@ module Fastlane
|
|
98
98
|
elsif type_override == Float
|
99
99
|
return "Float"
|
100
100
|
elsif type_override == :string_callback
|
101
|
-
|
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)?"
|
102
106
|
else
|
103
107
|
return default_type
|
104
108
|
end
|
@@ -106,7 +110,7 @@ module Fastlane
|
|
106
110
|
|
107
111
|
def override_default_value_if_not_correct_type(param_name: nil, param_type: nil, default_value: nil)
|
108
112
|
return "[]" if param_type == "[String]" && default_value == ""
|
109
|
-
return "
|
113
|
+
return "nil" if param_type == "((String) -> Void)?"
|
110
114
|
|
111
115
|
return default_value
|
112
116
|
end
|
@@ -121,7 +125,7 @@ module Fastlane
|
|
121
125
|
|
122
126
|
optional_specifier = ""
|
123
127
|
# if we are optional and don't have a default value, we'll need to use ?
|
124
|
-
optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)"
|
128
|
+
optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)?"
|
125
129
|
|
126
130
|
# If we have a default value of true or false, we can infer it is a Bool
|
127
131
|
if default_value.class == FalseClass
|
@@ -162,7 +166,7 @@ module Fastlane
|
|
162
166
|
# we can't handle default values for Hashes, yet
|
163
167
|
# see method swift_default_implementations for similar behavior
|
164
168
|
default_value = "[:]"
|
165
|
-
elsif type != "Bool" && type != "[String]" && type != "Int" && type != "((String) -> Void)" && type != "Float" && type != "Double"
|
169
|
+
elsif type != "Bool" && type != "[String]" && type != "Int" && type != "@escaping ((String) -> Void)" && type != "Float" && type != "Double"
|
166
170
|
default_value = "\"#{default_value}\""
|
167
171
|
end
|
168
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]
|
@@ -1491,7 +1491,7 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1491
1491
|
appIdentifier: String? = nil,
|
1492
1492
|
addPhotos: [String]? = nil,
|
1493
1493
|
addVideos: [String]? = nil,
|
1494
|
-
htmlTemplate: String =
|
1494
|
+
htmlTemplate: String? = nil,
|
1495
1495
|
buildlogPath: String = "~/Library/Logs/snapshot",
|
1496
1496
|
clean: Bool = false,
|
1497
1497
|
testWithoutBuilding: Bool? = nil,
|
@@ -1625,7 +1625,7 @@ func captureScreenshots(workspace: String? = nil,
|
|
1625
1625
|
appIdentifier: String? = nil,
|
1626
1626
|
addPhotos: [String]? = nil,
|
1627
1627
|
addVideos: [String]? = nil,
|
1628
|
-
htmlTemplate: String =
|
1628
|
+
htmlTemplate: String? = nil,
|
1629
1629
|
buildlogPath: String = "~/Library/Logs/snapshot",
|
1630
1630
|
clean: Bool = false,
|
1631
1631
|
testWithoutBuilding: Bool? = nil,
|
@@ -2039,7 +2039,7 @@ func cocoapods(repoUpdate: Bool = false,
|
|
2039
2039
|
ansi: Bool = true,
|
2040
2040
|
useBundleExec: Bool = true,
|
2041
2041
|
podfile: String? = nil,
|
2042
|
-
errorCallback:
|
2042
|
+
errorCallback: ((String) -> Void)? = nil,
|
2043
2043
|
tryRepoUpdateOnError: Bool = false,
|
2044
2044
|
deployment: Bool = false,
|
2045
2045
|
clean: Bool = true,
|
@@ -2051,7 +2051,7 @@ func cocoapods(repoUpdate: Bool = false,
|
|
2051
2051
|
RubyCommand.Argument(name: "ansi", value: ansi),
|
2052
2052
|
RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
|
2053
2053
|
RubyCommand.Argument(name: "podfile", value: podfile),
|
2054
|
-
RubyCommand.Argument(name: "error_callback", value: errorCallback),
|
2054
|
+
RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure),
|
2055
2055
|
RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError),
|
2056
2056
|
RubyCommand.Argument(name: "deployment", value: deployment),
|
2057
2057
|
RubyCommand.Argument(name: "clean", value: clean),
|
@@ -3054,7 +3054,7 @@ func frameScreenshots(white: Bool? = nil,
|
|
3054
3054
|
useLegacyIphonexr: Bool = false,
|
3055
3055
|
useLegacyIphonexs: Bool = false,
|
3056
3056
|
useLegacyIphonexsmax: Bool = false,
|
3057
|
-
forceOrientationBlock: String? = nil,
|
3057
|
+
forceOrientationBlock: ((String) -> Void)? = nil,
|
3058
3058
|
debugMode: Bool = false,
|
3059
3059
|
resume: Bool = false,
|
3060
3060
|
usePlatform: String = "IOS",
|
@@ -3071,7 +3071,7 @@ func frameScreenshots(white: Bool? = nil,
|
|
3071
3071
|
RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
|
3072
3072
|
RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
|
3073
3073
|
RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
|
3074
|
-
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
|
3074
|
+
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
|
3075
3075
|
RubyCommand.Argument(name: "debug_mode", value: debugMode),
|
3076
3076
|
RubyCommand.Argument(name: "resume", value: resume),
|
3077
3077
|
RubyCommand.Argument(name: "use_platform", value: usePlatform),
|
@@ -3116,7 +3116,7 @@ func frameit(white: Bool? = nil,
|
|
3116
3116
|
useLegacyIphonexr: Bool = false,
|
3117
3117
|
useLegacyIphonexs: Bool = false,
|
3118
3118
|
useLegacyIphonexsmax: Bool = false,
|
3119
|
-
forceOrientationBlock: String? = nil,
|
3119
|
+
forceOrientationBlock: ((String) -> Void)? = nil,
|
3120
3120
|
debugMode: Bool = false,
|
3121
3121
|
resume: Bool = false,
|
3122
3122
|
usePlatform: String = "IOS",
|
@@ -3133,7 +3133,7 @@ func frameit(white: Bool? = nil,
|
|
3133
3133
|
RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
|
3134
3134
|
RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
|
3135
3135
|
RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
|
3136
|
-
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
|
3136
|
+
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
|
3137
3137
|
RubyCommand.Argument(name: "debug_mode", value: debugMode),
|
3138
3138
|
RubyCommand.Argument(name: "resume", value: resume),
|
3139
3139
|
RubyCommand.Argument(name: "use_platform", value: usePlatform),
|
@@ -3639,6 +3639,42 @@ func githubApi(serverUrl: String = "https://api.github.com",
|
|
3639
3639
|
_ = runner.executeCommand(command)
|
3640
3640
|
}
|
3641
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
|
+
|
3642
3678
|
/**
|
3643
3679
|
Retrieves version codes for a Google Play track
|
3644
3680
|
|
@@ -6520,10 +6556,10 @@ func setupTravis(force: Bool = false) {
|
|
6520
6556
|
*/
|
6521
6557
|
@discardableResult func sh(command: String,
|
6522
6558
|
log: Bool = true,
|
6523
|
-
errorCallback:
|
6559
|
+
errorCallback: ((String) -> Void)? = nil) -> String {
|
6524
6560
|
let command = RubyCommand(commandID: "", methodName: "sh", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
|
6525
6561
|
RubyCommand.Argument(name: "log", value: log),
|
6526
|
-
RubyCommand.Argument(name: "error_callback", value: errorCallback)])
|
6562
|
+
RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure)])
|
6527
6563
|
return runner.executeCommand(command)
|
6528
6564
|
}
|
6529
6565
|
|
@@ -6868,7 +6904,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6868
6904
|
appIdentifier: Any? = snapshotfile.appIdentifier,
|
6869
6905
|
addPhotos: [String]? = snapshotfile.addPhotos,
|
6870
6906
|
addVideos: [String]? = snapshotfile.addVideos,
|
6871
|
-
htmlTemplate: Any = snapshotfile.htmlTemplate,
|
6907
|
+
htmlTemplate: Any? = snapshotfile.htmlTemplate,
|
6872
6908
|
buildlogPath: Any = snapshotfile.buildlogPath,
|
6873
6909
|
clean: Bool = snapshotfile.clean,
|
6874
6910
|
testWithoutBuilding: Bool? = snapshotfile.testWithoutBuilding,
|
@@ -8924,4 +8960,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8924
8960
|
|
8925
8961
|
// Please don't remove the lines below
|
8926
8962
|
// They are used to detect outdated files
|
8927
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8963
|
+
// FastlaneRunnerAPIVersion [0.9.71]
|