fastlane 2.175.0 → 2.180.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +95 -82
- data/cert/lib/cert/options.rb +1 -0
- data/cert/lib/cert/runner.rb +5 -1
- data/deliver/lib/deliver/app_screenshot.rb +6 -2
- data/deliver/lib/deliver/download_screenshots.rb +1 -2
- data/deliver/lib/deliver/options.rb +1 -0
- data/deliver/lib/deliver/runner.rb +12 -4
- data/deliver/lib/deliver/setup.rb +0 -1
- data/deliver/lib/deliver/upload_metadata.rb +5 -4
- data/deliver/lib/deliver/upload_screenshots.rb +10 -10
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +6 -1
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +8 -5
- data/fastlane/lib/fastlane/actions/appaloosa.rb +7 -2
- data/fastlane/lib/fastlane/actions/backup_file.rb +1 -1
- data/fastlane/lib/fastlane/actions/build_app.rb +4 -0
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +4 -0
- data/fastlane/lib/fastlane/actions/commit_github_file.rb +11 -1
- data/fastlane/lib/fastlane/actions/create_xcframework.rb +5 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -1
- data/fastlane/lib/fastlane/actions/get_github_release.rb +11 -1
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +4 -0
- data/fastlane/lib/fastlane/actions/get_version_number.rb +17 -10
- data/fastlane/lib/fastlane/actions/git_branch.rb +4 -10
- data/fastlane/lib/fastlane/actions/git_tag_exists.rb +4 -0
- data/fastlane/lib/fastlane/actions/github_api.rb +2 -1
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +8 -1
- data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +4 -0
- data/fastlane/lib/fastlane/actions/jazzy.rb +10 -1
- data/fastlane/lib/fastlane/actions/jira.rb +61 -14
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -0
- data/fastlane/lib/fastlane/actions/match_nuke.rb +59 -0
- data/fastlane/lib/fastlane/actions/notarize.rb +98 -51
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +0 -1
- data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
- data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
- data/fastlane/lib/fastlane/actions/restore_file.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
- data/fastlane/lib/fastlane/actions/sourcedocs.rb +164 -0
- data/fastlane/lib/fastlane/actions/spaceship_logs.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +4 -5
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +5 -1
- data/fastlane/lib/fastlane/erb_template_helper.rb +7 -1
- data/fastlane/lib/fastlane/fast_file.rb +9 -5
- data/fastlane/lib/fastlane/helper/git_helper.rb +11 -7
- data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +1 -2
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +1 -2
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -2
- data/fastlane/lib/fastlane/setup/setup.rb +23 -10
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +4 -0
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +2 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +3 -3
- data/fastlane/swift/Fastlane.swift +574 -332
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +9 -3
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +13 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/SocketClient.swift +2 -1
- data/fastlane/swift/SocketResponse.swift +4 -2
- data/fastlane/swift/formatting/Brewfile.lock.json +12 -12
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -3
- data/fastlane_core/lib/fastlane_core/helper.rb +24 -1
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +3 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +14 -8
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +3 -2
- data/fastlane_core/lib/fastlane_core/project.rb +3 -14
- data/{deliver/lib/deliver → fastlane_core/lib/fastlane_core}/queue_worker.rb +4 -4
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +12 -1
- data/fastlane_core/lib/fastlane_core/ui/interface.rb +1 -1
- data/gym/lib/gym/generators/.package_command_generator_xcode7.rb.swp +0 -0
- data/gym/lib/gym/generators/package_command_generator.rb +4 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +13 -8
- data/gym/lib/gym/runner.rb +11 -4
- data/match/lib/match/change_password.rb +3 -3
- data/match/lib/match/encryption/interface.rb +1 -1
- data/match/lib/match/encryption/openssl.rb +2 -2
- data/match/lib/match/importer.rb +1 -1
- data/match/lib/match/migrate.rb +1 -1
- data/match/lib/match/module.rb +1 -0
- data/match/lib/match/nuke.rb +1 -1
- data/match/lib/match/runner.rb +1 -1
- data/match/lib/match/storage/google_cloud_storage.rb +1 -1
- data/match/lib/match/storage/s3_storage.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +25 -8
- data/pilot/lib/pilot/manager.rb +5 -1
- data/pilot/lib/pilot/options.rb +4 -3
- data/precheck/lib/precheck/options.rb +1 -0
- data/precheck/lib/precheck/runner.rb +6 -2
- data/scan/lib/scan/detect_values.rb +4 -1
- data/scan/lib/scan/options.rb +20 -5
- data/scan/lib/scan/runner.rb +79 -1
- data/scan/lib/scan/test_command_generator.rb +8 -8
- data/screengrab/lib/screengrab/android_environment.rb +6 -4
- data/screengrab/lib/screengrab/runner.rb +2 -3
- data/sigh/lib/sigh/download_all.rb +1 -1
- data/sigh/lib/sigh/options.rb +1 -0
- data/sigh/lib/sigh/runner.rb +5 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
- data/spaceship/lib/spaceship/client.rb +18 -17
- data/spaceship/lib/spaceship/connect_api/api_client.rb +24 -6
- data/spaceship/lib/spaceship/connect_api/models/app.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +8 -2
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +15 -0
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +41 -28
- metadata +26 -21
@@ -21,9 +21,8 @@ module Fastlane
|
|
21
21
|
# download certificate
|
22
22
|
unless File.exist?(params[:certificate])
|
23
23
|
UI.message("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
|
24
|
-
require 'open-uri'
|
25
24
|
File.open(params[:certificate], "w:ASCII-8BIT") do |file|
|
26
|
-
file.write(
|
25
|
+
file.write(FastlaneCore::Helper.open_uri(ROOT_CERTIFICATE_URL, "rb").read)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'thread'
|
2
|
-
|
3
1
|
module Fastlane
|
4
2
|
module Actions
|
5
3
|
class UploadSymbolsToCrashlyticsAction < Action
|
@@ -35,10 +33,11 @@ module Fastlane
|
|
35
33
|
UI.message("Using #{max_worker_threads} threads for Crashlytics dSYM upload 🏎")
|
36
34
|
end
|
37
35
|
|
38
|
-
|
39
|
-
handle_dsym(params,
|
36
|
+
worker = FastlaneCore::QueueWorker.new(max_worker_threads) do |dsym_path|
|
37
|
+
handle_dsym(params, dsym_path, max_worker_threads)
|
40
38
|
end
|
41
|
-
|
39
|
+
worker.batch_enqueue(dsym_paths)
|
40
|
+
worker.start
|
42
41
|
UI.success("Successfully uploaded dSYM files to Crashlytics 💯")
|
43
42
|
end
|
44
43
|
|
@@ -22,7 +22,11 @@ module Fastlane
|
|
22
22
|
return values if Helper.test?
|
23
23
|
|
24
24
|
if distribute_only
|
25
|
-
Pilot::BuildManager.new
|
25
|
+
build_manager = Pilot::BuildManager.new
|
26
|
+
build_manager.start(values, should_login: true)
|
27
|
+
|
28
|
+
build_manager.wait_for_build_processing_to_be_complete(false) unless values[:skip_waiting_for_build_processing]
|
29
|
+
build_manager.distribute(values) # we already have the finished config
|
26
30
|
else
|
27
31
|
Pilot::BuildManager.new.upload(values) # we already have the finished config
|
28
32
|
end
|
@@ -24,7 +24,13 @@ module Fastlane
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def render(template)
|
27
|
-
ERB.new
|
27
|
+
# From Ruby 2.6, ERB.new takes keyword arguments and positional ones are deprecated
|
28
|
+
# https://bugs.ruby-lang.org/issues/14256
|
29
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
|
30
|
+
ERB.new(template, trim_mode: @trim_mode).result(binding)
|
31
|
+
else
|
32
|
+
ERB.new(template, nil, @trim_mode).result(binding)
|
33
|
+
end
|
28
34
|
end
|
29
35
|
end
|
30
36
|
end
|
@@ -201,13 +201,17 @@ module Fastlane
|
|
201
201
|
# First accepts hash (or named keywords) like other actions
|
202
202
|
# Otherwise uses sh method that doesn't have an interface like an action
|
203
203
|
if args.count == 1 && args.first.kind_of?(Hash)
|
204
|
-
|
205
|
-
command =
|
204
|
+
options = args.first
|
205
|
+
command = options.delete(:command)
|
206
206
|
|
207
207
|
raise ArgumentError, "sh requires :command keyword in argument" if command.nil?
|
208
|
-
|
209
|
-
|
210
|
-
|
208
|
+
log = options[:log].nil? ? true : options[:log]
|
209
|
+
FastFile.sh(*command, step_name: options[:step_name], log: log, error_callback: options[:error_callback], &b)
|
210
|
+
elsif args.count != 1 && args.last.kind_of?(Hash)
|
211
|
+
new_args = args.dup
|
212
|
+
options = new_args.pop
|
213
|
+
log = options[:log].nil? ? true : options[:log]
|
214
|
+
FastFile.sh(*new_args, step_name: options[:step_name], log: log, error_callback: options[:error_callback], &b)
|
211
215
|
else
|
212
216
|
FastFile.sh(*args, &b)
|
213
217
|
end
|
@@ -2,6 +2,13 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
GIT_MERGE_COMMIT_FILTERING_OPTIONS = [:include_merges, :exclude_merges, :only_include_merges].freeze
|
4
4
|
|
5
|
+
module SharedValues
|
6
|
+
GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH CIRCLE_BRANCH).reject do |branch|
|
7
|
+
# Removing because tests break on CircleCI
|
8
|
+
Helper.test? && branch == "CIRCLE_BRANCH"
|
9
|
+
end.freeze
|
10
|
+
end
|
11
|
+
|
5
12
|
def self.git_log_between(pretty_format, from, to, merge_commit_filtering, date_format = nil, ancestry_path)
|
6
13
|
command = %w(git log)
|
7
14
|
command << "--pretty=#{pretty_format}"
|
@@ -112,14 +119,11 @@ module Fastlane
|
|
112
119
|
return nil
|
113
120
|
end
|
114
121
|
|
115
|
-
# Returns the current git branch
|
122
|
+
# Returns the current git branch, or "HEAD" if it's not checked out to any branch
|
123
|
+
# Can be replaced using the environment variable `GIT_BRANCH`
|
116
124
|
def self.git_branch
|
117
|
-
|
118
|
-
|
119
|
-
return s.to_s.strip if s.to_s.length > 0
|
120
|
-
nil
|
121
|
-
rescue
|
122
|
-
nil
|
125
|
+
env_name = SharedValues::GIT_BRANCH_ENV_VARS.find { |env_var| FastlaneCore::Env.truthy?(env_var) }
|
126
|
+
ENV.fetch(env_name.to_s) { Actions.sh("git rev-parse --abbrev-ref HEAD", log: false).chomp }
|
123
127
|
end
|
124
128
|
|
125
129
|
private_class_method
|
@@ -7,14 +7,13 @@ module Fastlane
|
|
7
7
|
# Returns an array of FastlanePlugin objects
|
8
8
|
def self.fetch_gems(search_query: nil)
|
9
9
|
require 'json'
|
10
|
-
require 'open-uri'
|
11
10
|
|
12
11
|
page = 1
|
13
12
|
plugins = []
|
14
13
|
loop do
|
15
14
|
url = "https://rubygems.org/api/v1/search.json?query=#{PluginManager.plugin_prefix}&page=#{page}"
|
16
15
|
FastlaneCore::UI.verbose("RubyGems API Request: #{url}")
|
17
|
-
results = JSON.parse(
|
16
|
+
results = JSON.parse(FastlaneCore::Helper.open_uri(url).read)
|
18
17
|
break if results.count == 0
|
19
18
|
|
20
19
|
plugins += results.collect do |current|
|
@@ -65,10 +65,9 @@ module Fastlane
|
|
65
65
|
|
66
66
|
# Checks if the gem name is still free on RubyGems
|
67
67
|
def gem_name_taken?(name)
|
68
|
-
require 'open-uri'
|
69
68
|
require 'json'
|
70
69
|
url = "https://rubygems.org/api/v1/gems/#{name}.json"
|
71
|
-
response = JSON.parse(
|
70
|
+
response = JSON.parse(FastlaneCore::Helper.open_uri(url).read)
|
72
71
|
return !!response['version']
|
73
72
|
rescue
|
74
73
|
false
|
@@ -155,11 +155,10 @@ module Fastlane
|
|
155
155
|
#####################################################
|
156
156
|
|
157
157
|
def self.fetch_gem_info_from_rubygems(gem_name)
|
158
|
-
require 'open-uri'
|
159
158
|
require 'json'
|
160
159
|
url = "https://rubygems.org/api/v1/gems/#{gem_name}.json"
|
161
160
|
begin
|
162
|
-
JSON.parse(
|
161
|
+
JSON.parse(FastlaneCore::Helper.open_uri(url).read)
|
163
162
|
rescue
|
164
163
|
nil
|
165
164
|
end
|
@@ -35,6 +35,10 @@ module Fastlane
|
|
35
35
|
# rubocop:disable Metrics/BlockNesting
|
36
36
|
def self.start(user: nil, is_swift_fastfile: false)
|
37
37
|
if FastlaneCore::FastlaneFolder.setup? && !Helper.test?
|
38
|
+
|
39
|
+
# If Fastfile.swift exists, but the swift sources folder does not, rebuild it
|
40
|
+
setup_swift_support if is_swift_fastfile
|
41
|
+
|
38
42
|
require 'fastlane/lane_list'
|
39
43
|
Fastlane::LaneList.output(FastlaneCore::FastlaneFolder.fastfile_path)
|
40
44
|
UI.important("------------------")
|
@@ -127,6 +131,24 @@ module Fastlane
|
|
127
131
|
end
|
128
132
|
# rubocop:enable Metrics/BlockNesting
|
129
133
|
|
134
|
+
def self.setup_swift_support
|
135
|
+
runner_source_resources = "#{Fastlane::ROOT}/swift/."
|
136
|
+
destination_path = File.expand_path('swift', FastlaneCore::FastlaneFolder.path)
|
137
|
+
|
138
|
+
# Return eearly if already setup
|
139
|
+
return if File.exist?(destination_path)
|
140
|
+
|
141
|
+
# Show message if Fastfile.swift exists but missing Swift classes and Xcode project
|
142
|
+
if FastlaneCore::FastlaneFolder.swift?
|
143
|
+
UI.important("Restoring Swift classes and FastlaneSwiftRunner.xcodeproj...")
|
144
|
+
end
|
145
|
+
|
146
|
+
FileUtils.cp_r(runner_source_resources, destination_path)
|
147
|
+
UI.success("Copied Swift fastlane runner project to '#{destination_path}'.")
|
148
|
+
|
149
|
+
Fastlane::SwiftLaneManager.first_time_setup
|
150
|
+
end
|
151
|
+
|
130
152
|
def initialize(is_swift_fastfile: nil, user: nil, project_path: nil, had_multiple_projects_to_choose_from: nil, preferred_setup_method: nil)
|
131
153
|
self.is_swift_fastfile = is_swift_fastfile
|
132
154
|
self.user = user
|
@@ -260,21 +282,12 @@ module Fastlane
|
|
260
282
|
|
261
283
|
def finish_up
|
262
284
|
write_fastfile!
|
263
|
-
setup_swift_support if is_swift_fastfile
|
285
|
+
self.class.setup_swift_support if is_swift_fastfile
|
264
286
|
show_analytics_note
|
265
287
|
explain_concepts
|
266
288
|
suggest_next_steps
|
267
289
|
end
|
268
290
|
|
269
|
-
def setup_swift_support
|
270
|
-
runner_source_resources = "#{Fastlane::ROOT}/swift/."
|
271
|
-
destination_path = File.expand_path('swift', FastlaneCore::FastlaneFolder.path)
|
272
|
-
FileUtils.cp_r(runner_source_resources, destination_path)
|
273
|
-
UI.success("Copied Swift fastlane runner project to '#{destination_path}'.")
|
274
|
-
|
275
|
-
Fastlane::SwiftLaneManager.first_time_setup
|
276
|
-
end
|
277
|
-
|
278
291
|
def fastfile_template_content
|
279
292
|
if self.is_swift_fastfile
|
280
293
|
path = "#{Fastlane::ROOT}/lib/assets/DefaultFastfileTemplate.swift"
|
@@ -116,6 +116,7 @@ module Fastlane
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def get_type(param: nil, default_value: nil, optional: nil, param_type_override: nil, is_string: true)
|
119
|
+
require 'bigdecimal'
|
119
120
|
unless param_type_override.nil?
|
120
121
|
type = determine_type_from_override(type_override: param_type_override)
|
121
122
|
end
|
@@ -168,6 +169,9 @@ module Fastlane
|
|
168
169
|
default_value = "[:]"
|
169
170
|
elsif type != "Bool" && type != "[String]" && type != "Int" && type != "@escaping ((String) -> Void)" && type != "Float" && type != "Double"
|
170
171
|
default_value = "\"#{default_value}\""
|
172
|
+
elsif type == "Float" || type == "Double"
|
173
|
+
require 'bigdecimal'
|
174
|
+
default_value = BigDecimal(default_value).to_s
|
171
175
|
end
|
172
176
|
end
|
173
177
|
|
@@ -29,6 +29,8 @@ module Fastlane
|
|
29
29
|
@source_swift_code_file_folder_path = File.expand_path(File.join(Fastlane::ROOT, "/swift"))
|
30
30
|
@target_swift_code_file_folder_path = FastlaneCore::FastlaneFolder.swift_folder_path
|
31
31
|
|
32
|
+
Fastlane::Setup.setup_swift_support
|
33
|
+
|
32
34
|
manifest_file = File.join(@source_swift_code_file_folder_path, "/upgrade_manifest.json")
|
33
35
|
UI.success("loading manifest: #{manifest_file}")
|
34
36
|
@manifest_hash = JSON.parse(File.read(manifest_file))
|
@@ -9,7 +9,7 @@ public protocol DeliverfileProtocol: class {
|
|
9
9
|
var apiKey: [String: Any]? { get }
|
10
10
|
|
11
11
|
/// Your Apple ID Username
|
12
|
-
var username: String { get }
|
12
|
+
var username: String? { get }
|
13
13
|
|
14
14
|
/// The bundle identifier of your app
|
15
15
|
var appIdentifier: String? { get }
|
@@ -192,7 +192,7 @@ public protocol DeliverfileProtocol: class {
|
|
192
192
|
public extension DeliverfileProtocol {
|
193
193
|
var apiKeyPath: String? { return nil }
|
194
194
|
var apiKey: [String: Any]? { return nil }
|
195
|
-
var username: String { return
|
195
|
+
var username: String? { return nil }
|
196
196
|
var appIdentifier: String? { return nil }
|
197
197
|
var appVersion: String? { return nil }
|
198
198
|
var ipa: String? { return nil }
|
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
|
|
256
256
|
|
257
257
|
// Please don't remove the lines below
|
258
258
|
// They are used to detect outdated files
|
259
|
-
// FastlaneRunnerAPIVersion [0.9.
|
259
|
+
// FastlaneRunnerAPIVersion [0.9.63]
|
@@ -119,7 +119,7 @@ public func appStoreBuildNumber(apiKeyPath: String? = nil,
|
|
119
119
|
apiKey: [String: Any]? = nil,
|
120
120
|
initialBuildNumber: Any,
|
121
121
|
appIdentifier: String,
|
122
|
-
username: String,
|
122
|
+
username: String? = nil,
|
123
123
|
teamId: Any? = nil,
|
124
124
|
live: Bool = true,
|
125
125
|
version: String? = nil,
|
@@ -149,7 +149,7 @@ public func appStoreBuildNumber(apiKeyPath: String? = nil,
|
|
149
149
|
- keyContent: The content of the key p8 file
|
150
150
|
- isKeyContentBase64: Whether :key_content is Base64 encoded or not
|
151
151
|
- duration: The token session duration
|
152
|
-
- inHouse: Is App Store or Enterprise (in house) team? App Store Connect API cannot
|
152
|
+
- inHouse: Is App Store or Enterprise (in house) team? App Store Connect API cannot determine this on its own (yet)
|
153
153
|
|
154
154
|
Load the App Store Connect API token to use in other fastlane tools and actions
|
155
155
|
*/
|
@@ -183,6 +183,7 @@ public func appStoreConnectApiKey(keyId: String,
|
|
183
183
|
- locale: Select the folder locale for your screenshots
|
184
184
|
- device: Select the device format for your screenshots
|
185
185
|
- description: Your app description
|
186
|
+
- changelog: Your app changelog
|
186
187
|
|
187
188
|
Appaloosa is a private mobile application store. This action offers a quick deployment on the platform.
|
188
189
|
You can create an account, push to your existing account, or manage your user groups.
|
@@ -195,7 +196,8 @@ public func appaloosa(binary: String,
|
|
195
196
|
screenshots: String,
|
196
197
|
locale: String = "en-US",
|
197
198
|
device: String? = nil,
|
198
|
-
description: String? = nil
|
199
|
+
description: String? = nil,
|
200
|
+
changelog: String? = nil)
|
199
201
|
{
|
200
202
|
let command = RubyCommand(commandID: "", methodName: "appaloosa", className: nil, args: [RubyCommand.Argument(name: "binary", value: binary),
|
201
203
|
RubyCommand.Argument(name: "api_token", value: apiToken),
|
@@ -204,7 +206,8 @@ public func appaloosa(binary: String,
|
|
204
206
|
RubyCommand.Argument(name: "screenshots", value: screenshots),
|
205
207
|
RubyCommand.Argument(name: "locale", value: locale),
|
206
208
|
RubyCommand.Argument(name: "device", value: device),
|
207
|
-
RubyCommand.Argument(name: "description", value: description)
|
209
|
+
RubyCommand.Argument(name: "description", value: description),
|
210
|
+
RubyCommand.Argument(name: "changelog", value: changelog)])
|
208
211
|
_ = runner.executeCommand(command)
|
209
212
|
}
|
210
213
|
|
@@ -549,7 +552,7 @@ public func appledoc(input: Any,
|
|
549
552
|
*/
|
550
553
|
public func appstore(apiKeyPath: String? = nil,
|
551
554
|
apiKey: [String: Any]? = nil,
|
552
|
-
username: String,
|
555
|
+
username: String? = nil,
|
553
556
|
appIdentifier: String? = nil,
|
554
557
|
appVersion: String? = nil,
|
555
558
|
ipa: String? = nil,
|
@@ -1003,53 +1006,53 @@ public func buildAndroidApp(task: String? = nil,
|
|
1003
1006
|
|
1004
1007
|
More information: https://fastlane.tools/gym
|
1005
1008
|
*/
|
1006
|
-
public func buildApp(workspace: String? = nil,
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1009
|
+
@discardableResult public func buildApp(workspace: String? = nil,
|
1010
|
+
project: String? = nil,
|
1011
|
+
scheme: String? = nil,
|
1012
|
+
clean: Bool = false,
|
1013
|
+
outputDirectory: String = ".",
|
1014
|
+
outputName: String? = nil,
|
1015
|
+
configuration: String? = nil,
|
1016
|
+
silent: Bool = false,
|
1017
|
+
codesigningIdentity: String? = nil,
|
1018
|
+
skipPackageIpa: Bool = false,
|
1019
|
+
skipPackagePkg: Bool = false,
|
1020
|
+
includeSymbols: Bool? = nil,
|
1021
|
+
includeBitcode: Bool? = nil,
|
1022
|
+
exportMethod: String? = nil,
|
1023
|
+
exportOptions: [String: Any]? = nil,
|
1024
|
+
exportXcargs: String? = nil,
|
1025
|
+
skipBuildArchive: Bool? = nil,
|
1026
|
+
skipArchive: Bool? = nil,
|
1027
|
+
skipCodesigning: Bool? = nil,
|
1028
|
+
catalystPlatform: String? = nil,
|
1029
|
+
installerCertName: String? = nil,
|
1030
|
+
buildPath: String? = nil,
|
1031
|
+
archivePath: String? = nil,
|
1032
|
+
derivedDataPath: String? = nil,
|
1033
|
+
resultBundle: Bool = false,
|
1034
|
+
resultBundlePath: String? = nil,
|
1035
|
+
buildlogPath: String = "~/Library/Logs/gym",
|
1036
|
+
sdk: String? = nil,
|
1037
|
+
toolchain: String? = nil,
|
1038
|
+
destination: String? = nil,
|
1039
|
+
exportTeamId: String? = nil,
|
1040
|
+
xcargs: String? = nil,
|
1041
|
+
xcconfig: String? = nil,
|
1042
|
+
suppressXcodeOutput: Bool? = nil,
|
1043
|
+
disableXcpretty: Bool? = nil,
|
1044
|
+
xcprettyTestFormat: Bool? = nil,
|
1045
|
+
xcprettyFormatter: String? = nil,
|
1046
|
+
xcprettyReportJunit: String? = nil,
|
1047
|
+
xcprettyReportHtml: String? = nil,
|
1048
|
+
xcprettyReportJson: String? = nil,
|
1049
|
+
analyzeBuildTime: Bool? = nil,
|
1050
|
+
xcprettyUtf: Bool? = nil,
|
1051
|
+
skipProfileDetection: Bool = false,
|
1052
|
+
clonedSourcePackagesPath: String? = nil,
|
1053
|
+
skipPackageDependenciesResolution: Bool = false,
|
1054
|
+
disablePackageAutomaticUpdates: Bool = false,
|
1055
|
+
useSystemScm: Bool = false) -> String
|
1053
1056
|
{
|
1054
1057
|
let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1055
1058
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1098,7 +1101,7 @@ public func buildApp(workspace: String? = nil,
|
|
1098
1101
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
1099
1102
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
1100
1103
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1101
|
-
|
1104
|
+
return runner.executeCommand(command)
|
1102
1105
|
}
|
1103
1106
|
|
1104
1107
|
/**
|
@@ -1154,50 +1157,50 @@ public func buildApp(workspace: String? = nil,
|
|
1154
1157
|
|
1155
1158
|
More information: https://fastlane.tools/gym
|
1156
1159
|
*/
|
1157
|
-
public func buildIosApp(workspace: String? = nil,
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1160
|
+
@discardableResult public func buildIosApp(workspace: String? = nil,
|
1161
|
+
project: String? = nil,
|
1162
|
+
scheme: String? = nil,
|
1163
|
+
clean: Bool = false,
|
1164
|
+
outputDirectory: String = ".",
|
1165
|
+
outputName: String? = nil,
|
1166
|
+
configuration: String? = nil,
|
1167
|
+
silent: Bool = false,
|
1168
|
+
codesigningIdentity: String? = nil,
|
1169
|
+
skipPackageIpa: Bool = false,
|
1170
|
+
includeSymbols: Bool? = nil,
|
1171
|
+
includeBitcode: Bool? = nil,
|
1172
|
+
exportMethod: String? = nil,
|
1173
|
+
exportOptions: [String: Any]? = nil,
|
1174
|
+
exportXcargs: String? = nil,
|
1175
|
+
skipBuildArchive: Bool? = nil,
|
1176
|
+
skipArchive: Bool? = nil,
|
1177
|
+
skipCodesigning: Bool? = nil,
|
1178
|
+
buildPath: String? = nil,
|
1179
|
+
archivePath: String? = nil,
|
1180
|
+
derivedDataPath: String? = nil,
|
1181
|
+
resultBundle: Bool = false,
|
1182
|
+
resultBundlePath: String? = nil,
|
1183
|
+
buildlogPath: String = "~/Library/Logs/gym",
|
1184
|
+
sdk: String? = nil,
|
1185
|
+
toolchain: String? = nil,
|
1186
|
+
destination: String? = nil,
|
1187
|
+
exportTeamId: String? = nil,
|
1188
|
+
xcargs: String? = nil,
|
1189
|
+
xcconfig: String? = nil,
|
1190
|
+
suppressXcodeOutput: Bool? = nil,
|
1191
|
+
disableXcpretty: Bool? = nil,
|
1192
|
+
xcprettyTestFormat: Bool? = nil,
|
1193
|
+
xcprettyFormatter: String? = nil,
|
1194
|
+
xcprettyReportJunit: String? = nil,
|
1195
|
+
xcprettyReportHtml: String? = nil,
|
1196
|
+
xcprettyReportJson: String? = nil,
|
1197
|
+
analyzeBuildTime: Bool? = nil,
|
1198
|
+
xcprettyUtf: Bool? = nil,
|
1199
|
+
skipProfileDetection: Bool = false,
|
1200
|
+
clonedSourcePackagesPath: String? = nil,
|
1201
|
+
skipPackageDependenciesResolution: Bool = false,
|
1202
|
+
disablePackageAutomaticUpdates: Bool = false,
|
1203
|
+
useSystemScm: Bool = false) -> String
|
1201
1204
|
{
|
1202
1205
|
let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1203
1206
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1243,7 +1246,7 @@ public func buildIosApp(workspace: String? = nil,
|
|
1243
1246
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
1244
1247
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
1245
1248
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1246
|
-
|
1249
|
+
return runner.executeCommand(command)
|
1247
1250
|
}
|
1248
1251
|
|
1249
1252
|
/**
|
@@ -1300,51 +1303,51 @@ public func buildIosApp(workspace: String? = nil,
|
|
1300
1303
|
|
1301
1304
|
More information: https://fastlane.tools/gym
|
1302
1305
|
*/
|
1303
|
-
public func buildMacApp(workspace: String? = nil,
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1306
|
+
@discardableResult public func buildMacApp(workspace: String? = nil,
|
1307
|
+
project: String? = nil,
|
1308
|
+
scheme: String? = nil,
|
1309
|
+
clean: Bool = false,
|
1310
|
+
outputDirectory: String = ".",
|
1311
|
+
outputName: String? = nil,
|
1312
|
+
configuration: String? = nil,
|
1313
|
+
silent: Bool = false,
|
1314
|
+
codesigningIdentity: String? = nil,
|
1315
|
+
skipPackagePkg: Bool = false,
|
1316
|
+
includeSymbols: Bool? = nil,
|
1317
|
+
includeBitcode: Bool? = nil,
|
1318
|
+
exportMethod: String? = nil,
|
1319
|
+
exportOptions: [String: Any]? = nil,
|
1320
|
+
exportXcargs: String? = nil,
|
1321
|
+
skipBuildArchive: Bool? = nil,
|
1322
|
+
skipArchive: Bool? = nil,
|
1323
|
+
skipCodesigning: Bool? = nil,
|
1324
|
+
installerCertName: String? = nil,
|
1325
|
+
buildPath: String? = nil,
|
1326
|
+
archivePath: String? = nil,
|
1327
|
+
derivedDataPath: String? = nil,
|
1328
|
+
resultBundle: Bool = false,
|
1329
|
+
resultBundlePath: String? = nil,
|
1330
|
+
buildlogPath: String = "~/Library/Logs/gym",
|
1331
|
+
sdk: String? = nil,
|
1332
|
+
toolchain: String? = nil,
|
1333
|
+
destination: String? = nil,
|
1334
|
+
exportTeamId: String? = nil,
|
1335
|
+
xcargs: String? = nil,
|
1336
|
+
xcconfig: String? = nil,
|
1337
|
+
suppressXcodeOutput: Bool? = nil,
|
1338
|
+
disableXcpretty: Bool? = nil,
|
1339
|
+
xcprettyTestFormat: Bool? = nil,
|
1340
|
+
xcprettyFormatter: String? = nil,
|
1341
|
+
xcprettyReportJunit: String? = nil,
|
1342
|
+
xcprettyReportHtml: String? = nil,
|
1343
|
+
xcprettyReportJson: String? = nil,
|
1344
|
+
analyzeBuildTime: Bool? = nil,
|
1345
|
+
xcprettyUtf: Bool? = nil,
|
1346
|
+
skipProfileDetection: Bool = false,
|
1347
|
+
clonedSourcePackagesPath: String? = nil,
|
1348
|
+
skipPackageDependenciesResolution: Bool = false,
|
1349
|
+
disablePackageAutomaticUpdates: Bool = false,
|
1350
|
+
useSystemScm: Bool = false) -> String
|
1348
1351
|
{
|
1349
1352
|
let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1350
1353
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1391,7 +1394,7 @@ public func buildMacApp(workspace: String? = nil,
|
|
1391
1394
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
1392
1395
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
1393
1396
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1394
|
-
|
1397
|
+
return runner.executeCommand(command)
|
1395
1398
|
}
|
1396
1399
|
|
1397
1400
|
/**
|
@@ -1939,7 +1942,7 @@ public func cert(development: Bool = false,
|
|
1939
1942
|
generateAppleCerts: Bool = true,
|
1940
1943
|
apiKeyPath: String? = nil,
|
1941
1944
|
apiKey: [String: Any]? = nil,
|
1942
|
-
username: String,
|
1945
|
+
username: String? = nil,
|
1943
1946
|
teamId: String? = nil,
|
1944
1947
|
teamName: String? = nil,
|
1945
1948
|
filename: String? = nil,
|
@@ -2065,26 +2068,26 @@ public func chatwork(apiToken: String,
|
|
2065
2068
|
|
2066
2069
|
More information: https://fastlane.tools/precheck
|
2067
2070
|
*/
|
2068
|
-
public func checkAppStoreMetadata(apiKeyPath: String? = nil,
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2086
|
-
|
2087
|
-
|
2071
|
+
@discardableResult public func checkAppStoreMetadata(apiKeyPath: String? = nil,
|
2072
|
+
apiKey: [String: Any]? = nil,
|
2073
|
+
appIdentifier: String,
|
2074
|
+
username: String? = nil,
|
2075
|
+
teamId: String? = nil,
|
2076
|
+
teamName: String? = nil,
|
2077
|
+
platform: String = "ios",
|
2078
|
+
defaultRuleLevel: Any = "error",
|
2079
|
+
includeInAppPurchases: Bool = true,
|
2080
|
+
useLive: Bool = false,
|
2081
|
+
negativeAppleSentiment: Any? = nil,
|
2082
|
+
placeholderText: Any? = nil,
|
2083
|
+
otherPlatforms: Any? = nil,
|
2084
|
+
futureFunctionality: Any? = nil,
|
2085
|
+
testWords: Any? = nil,
|
2086
|
+
curseWords: Any? = nil,
|
2087
|
+
freeStuffInIap: Any? = nil,
|
2088
|
+
customText: Any? = nil,
|
2089
|
+
copyrightDate: Any? = nil,
|
2090
|
+
unreachableUrls: Any? = nil) -> Bool
|
2088
2091
|
{
|
2089
2092
|
let command = RubyCommand(commandID: "", methodName: "check_app_store_metadata", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
2090
2093
|
RubyCommand.Argument(name: "api_key", value: apiKey),
|
@@ -2106,7 +2109,7 @@ public func checkAppStoreMetadata(apiKeyPath: String? = nil,
|
|
2106
2109
|
RubyCommand.Argument(name: "custom_text", value: customText),
|
2107
2110
|
RubyCommand.Argument(name: "copyright_date", value: copyrightDate),
|
2108
2111
|
RubyCommand.Argument(name: "unreachable_urls", value: unreachableUrls)])
|
2109
|
-
|
2112
|
+
return parseBool(fromString: runner.executeCommand(command))
|
2110
2113
|
}
|
2111
2114
|
|
2112
2115
|
/**
|
@@ -2247,6 +2250,7 @@ public func cocoapods(repoUpdate: Bool = false,
|
|
2247
2250
|
- repositoryName: The path to your repo, e.g. 'fastlane/fastlane'
|
2248
2251
|
- serverUrl: The server url. e.g. 'https://your.internal.github.host/api/v3' (Default: 'https://api.github.com')
|
2249
2252
|
- apiToken: Personal API Token for GitHub - generate one at https://github.com/settings/tokens
|
2253
|
+
- apiBearer: Use a Bearer authorization token. Usually generated by Github Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable
|
2250
2254
|
- branch: The branch that the file should be committed on (default: master)
|
2251
2255
|
- path: The relative path to your file from project root e.g. assets/my_app.xcarchive
|
2252
2256
|
- message: The commit message. Defaults to the file name
|
@@ -2261,7 +2265,8 @@ public func cocoapods(repoUpdate: Bool = false,
|
|
2261
2265
|
*/
|
2262
2266
|
@discardableResult public func commitGithubFile(repositoryName: String,
|
2263
2267
|
serverUrl: String = "https://api.github.com",
|
2264
|
-
apiToken: String,
|
2268
|
+
apiToken: String? = nil,
|
2269
|
+
apiBearer: String? = nil,
|
2265
2270
|
branch: String = "master",
|
2266
2271
|
path: String,
|
2267
2272
|
message: String? = nil,
|
@@ -2270,6 +2275,7 @@ public func cocoapods(repoUpdate: Bool = false,
|
|
2270
2275
|
let command = RubyCommand(commandID: "", methodName: "commit_github_file", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
|
2271
2276
|
RubyCommand.Argument(name: "server_url", value: serverUrl),
|
2272
2277
|
RubyCommand.Argument(name: "api_token", value: apiToken),
|
2278
|
+
RubyCommand.Argument(name: "api_bearer", value: apiBearer),
|
2273
2279
|
RubyCommand.Argument(name: "branch", value: branch),
|
2274
2280
|
RubyCommand.Argument(name: "path", value: path),
|
2275
2281
|
RubyCommand.Argument(name: "message", value: message),
|
@@ -2774,7 +2780,7 @@ public func deleteKeychain(name: String? = nil,
|
|
2774
2780
|
*/
|
2775
2781
|
public func deliver(apiKeyPath: Any? = deliverfile.apiKeyPath,
|
2776
2782
|
apiKey: [String: Any]? = deliverfile.apiKey,
|
2777
|
-
username: Any = deliverfile.username,
|
2783
|
+
username: Any? = deliverfile.username,
|
2778
2784
|
appIdentifier: Any? = deliverfile.appIdentifier,
|
2779
2785
|
appVersion: Any? = deliverfile.appVersion,
|
2780
2786
|
ipa: Any? = deliverfile.ipa,
|
@@ -3498,7 +3504,7 @@ public func getCertificates(development: Bool = false,
|
|
3498
3504
|
generateAppleCerts: Bool = true,
|
3499
3505
|
apiKeyPath: String? = nil,
|
3500
3506
|
apiKey: [String: Any]? = nil,
|
3501
|
-
username: String,
|
3507
|
+
username: String? = nil,
|
3502
3508
|
teamId: String? = nil,
|
3503
3509
|
teamName: String? = nil,
|
3504
3510
|
filename: String? = nil,
|
@@ -3534,6 +3540,7 @@ public func getCertificates(development: Bool = false,
|
|
3534
3540
|
- serverUrl: The server url. e.g. 'https://your.github.server/api/v3' (Default: 'https://api.github.com')
|
3535
3541
|
- version: The version tag of the release to check
|
3536
3542
|
- apiToken: GitHub Personal Token (required for private repositories)
|
3543
|
+
- apiBearer: Use a Bearer authorization token. Usually generated by Github Apps, e.g. GitHub Actions GITHUB_TOKEN environment variable
|
3537
3544
|
|
3538
3545
|
This will return all information about a release. For example:|
|
3539
3546
|
|
|
@@ -3581,12 +3588,14 @@ public func getCertificates(development: Bool = false,
|
|
3581
3588
|
public func getGithubRelease(url: String,
|
3582
3589
|
serverUrl: String = "https://api.github.com",
|
3583
3590
|
version: String,
|
3584
|
-
apiToken: String? = nil
|
3591
|
+
apiToken: String? = nil,
|
3592
|
+
apiBearer: String? = nil)
|
3585
3593
|
{
|
3586
3594
|
let command = RubyCommand(commandID: "", methodName: "get_github_release", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
|
3587
3595
|
RubyCommand.Argument(name: "server_url", value: serverUrl),
|
3588
3596
|
RubyCommand.Argument(name: "version", value: version),
|
3589
|
-
RubyCommand.Argument(name: "api_token", value: apiToken)
|
3597
|
+
RubyCommand.Argument(name: "api_token", value: apiToken),
|
3598
|
+
RubyCommand.Argument(name: "api_bearer", value: apiBearer)])
|
3590
3599
|
_ = runner.executeCommand(command)
|
3591
3600
|
}
|
3592
3601
|
|
@@ -3680,29 +3689,29 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
|
|
3680
3689
|
|
3681
3690
|
**Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
|
3682
3691
|
*/
|
3683
|
-
public func getProvisioningProfile(adhoc: Bool = false,
|
3684
|
-
|
3685
|
-
|
3686
|
-
|
3687
|
-
|
3688
|
-
|
3689
|
-
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
|
3694
|
-
|
3695
|
-
|
3696
|
-
|
3697
|
-
|
3698
|
-
|
3699
|
-
|
3700
|
-
|
3701
|
-
|
3702
|
-
|
3703
|
-
|
3704
|
-
|
3705
|
-
|
3692
|
+
@discardableResult public func getProvisioningProfile(adhoc: Bool = false,
|
3693
|
+
developerId: Bool = false,
|
3694
|
+
development: Bool = false,
|
3695
|
+
skipInstall: Bool = false,
|
3696
|
+
force: Bool = false,
|
3697
|
+
appIdentifier: String,
|
3698
|
+
apiKeyPath: String? = nil,
|
3699
|
+
apiKey: [String: Any]? = nil,
|
3700
|
+
username: String? = nil,
|
3701
|
+
teamId: String? = nil,
|
3702
|
+
teamName: String? = nil,
|
3703
|
+
provisioningName: String? = nil,
|
3704
|
+
ignoreProfilesWithDifferentName: Bool = false,
|
3705
|
+
outputPath: String = ".",
|
3706
|
+
certId: String? = nil,
|
3707
|
+
certOwnerName: String? = nil,
|
3708
|
+
filename: String? = nil,
|
3709
|
+
skipFetchProfiles: Bool = false,
|
3710
|
+
skipCertificateVerification: Bool = false,
|
3711
|
+
platform: Any = "ios",
|
3712
|
+
readonly: Bool = false,
|
3713
|
+
templateName: String? = nil,
|
3714
|
+
failOnNameTaken: Bool = false) -> String
|
3706
3715
|
{
|
3707
3716
|
let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
|
3708
3717
|
RubyCommand.Argument(name: "developer_id", value: developerId),
|
@@ -3727,7 +3736,7 @@ public func getProvisioningProfile(adhoc: Bool = false,
|
|
3727
3736
|
RubyCommand.Argument(name: "readonly", value: readonly),
|
3728
3737
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
3729
3738
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
|
3730
|
-
|
3739
|
+
return runner.executeCommand(command)
|
3731
3740
|
}
|
3732
3741
|
|
3733
3742
|
/**
|
@@ -3797,7 +3806,7 @@ public func getPushCertificate(development: Bool = false,
|
|
3797
3806
|
Get the version number of your project
|
3798
3807
|
|
3799
3808
|
- parameters:
|
3800
|
-
- xcodeproj: Path to the
|
3809
|
+
- xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
|
3801
3810
|
- target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
|
3802
3811
|
- configuration: Configuration name, optional. Will be needed if you have altered the configurations from the default or your version number depends on the configuration selected
|
3803
3812
|
|
@@ -3834,7 +3843,7 @@ public func gitAdd(path: Any? = nil,
|
|
3834
3843
|
/**
|
3835
3844
|
Returns the name of the current git branch, possibly as managed by CI ENV vars
|
3836
3845
|
|
3837
|
-
If no branch could be found, this action will return an empty string
|
3846
|
+
If no branch could be found, this action will return an empty string. This is a wrapper for the internal action Actions.git_branch
|
3838
3847
|
*/
|
3839
3848
|
@discardableResult public func gitBranch() -> String {
|
3840
3849
|
let command = RubyCommand(commandID: "", methodName: "git_branch", className: nil, args: [])
|
@@ -3902,14 +3911,14 @@ public func gitSubmoduleUpdate(recursive: Bool = false,
|
|
3902
3911
|
|
3903
3912
|
- returns: Boolean value whether the tag exists or not
|
3904
3913
|
*/
|
3905
|
-
public func gitTagExists(tag: String,
|
3906
|
-
|
3907
|
-
|
3914
|
+
@discardableResult public func gitTagExists(tag: String,
|
3915
|
+
remote: Bool = false,
|
3916
|
+
remoteName: String = "origin") -> Bool
|
3908
3917
|
{
|
3909
3918
|
let command = RubyCommand(commandID: "", methodName: "git_tag_exists", className: nil, args: [RubyCommand.Argument(name: "tag", value: tag),
|
3910
3919
|
RubyCommand.Argument(name: "remote", value: remote),
|
3911
3920
|
RubyCommand.Argument(name: "remote_name", value: remoteName)])
|
3912
|
-
|
3921
|
+
return parseBool(fromString: runner.executeCommand(command))
|
3913
3922
|
}
|
3914
3923
|
|
3915
3924
|
/**
|
@@ -4139,53 +4148,53 @@ public func gradle(task: String? = nil,
|
|
4139
4148
|
|
4140
4149
|
More information: https://fastlane.tools/gym
|
4141
4150
|
*/
|
4142
|
-
public func gym(workspace: Any? = gymfile.workspace,
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4146
|
-
|
4147
|
-
|
4148
|
-
|
4149
|
-
|
4150
|
-
|
4151
|
-
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
4163
|
-
|
4164
|
-
|
4165
|
-
|
4166
|
-
|
4167
|
-
|
4168
|
-
|
4169
|
-
|
4170
|
-
|
4171
|
-
|
4172
|
-
|
4173
|
-
|
4174
|
-
|
4175
|
-
|
4176
|
-
|
4177
|
-
|
4178
|
-
|
4179
|
-
|
4180
|
-
|
4181
|
-
|
4182
|
-
|
4183
|
-
|
4184
|
-
|
4185
|
-
|
4186
|
-
|
4187
|
-
|
4188
|
-
|
4151
|
+
@discardableResult public func gym(workspace: Any? = gymfile.workspace,
|
4152
|
+
project: Any? = gymfile.project,
|
4153
|
+
scheme: Any? = gymfile.scheme,
|
4154
|
+
clean: Bool = gymfile.clean,
|
4155
|
+
outputDirectory: Any = gymfile.outputDirectory,
|
4156
|
+
outputName: Any? = gymfile.outputName,
|
4157
|
+
configuration: Any? = gymfile.configuration,
|
4158
|
+
silent: Bool = gymfile.silent,
|
4159
|
+
codesigningIdentity: Any? = gymfile.codesigningIdentity,
|
4160
|
+
skipPackageIpa: Bool = gymfile.skipPackageIpa,
|
4161
|
+
skipPackagePkg: Bool = gymfile.skipPackagePkg,
|
4162
|
+
includeSymbols: Bool? = gymfile.includeSymbols,
|
4163
|
+
includeBitcode: Bool? = gymfile.includeBitcode,
|
4164
|
+
exportMethod: Any? = gymfile.exportMethod,
|
4165
|
+
exportOptions: [String: Any]? = gymfile.exportOptions,
|
4166
|
+
exportXcargs: Any? = gymfile.exportXcargs,
|
4167
|
+
skipBuildArchive: Bool? = gymfile.skipBuildArchive,
|
4168
|
+
skipArchive: Bool? = gymfile.skipArchive,
|
4169
|
+
skipCodesigning: Bool? = gymfile.skipCodesigning,
|
4170
|
+
catalystPlatform: Any? = gymfile.catalystPlatform,
|
4171
|
+
installerCertName: Any? = gymfile.installerCertName,
|
4172
|
+
buildPath: Any? = gymfile.buildPath,
|
4173
|
+
archivePath: Any? = gymfile.archivePath,
|
4174
|
+
derivedDataPath: Any? = gymfile.derivedDataPath,
|
4175
|
+
resultBundle: Bool = gymfile.resultBundle,
|
4176
|
+
resultBundlePath: Any? = gymfile.resultBundlePath,
|
4177
|
+
buildlogPath: Any = gymfile.buildlogPath,
|
4178
|
+
sdk: Any? = gymfile.sdk,
|
4179
|
+
toolchain: Any? = gymfile.toolchain,
|
4180
|
+
destination: Any? = gymfile.destination,
|
4181
|
+
exportTeamId: Any? = gymfile.exportTeamId,
|
4182
|
+
xcargs: Any? = gymfile.xcargs,
|
4183
|
+
xcconfig: Any? = gymfile.xcconfig,
|
4184
|
+
suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
|
4185
|
+
disableXcpretty: Bool? = gymfile.disableXcpretty,
|
4186
|
+
xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
|
4187
|
+
xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
|
4188
|
+
xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
|
4189
|
+
xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
|
4190
|
+
xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
|
4191
|
+
analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
|
4192
|
+
xcprettyUtf: Bool? = gymfile.xcprettyUtf,
|
4193
|
+
skipProfileDetection: Bool = gymfile.skipProfileDetection,
|
4194
|
+
clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
|
4195
|
+
skipPackageDependenciesResolution: Bool = gymfile.skipPackageDependenciesResolution,
|
4196
|
+
disablePackageAutomaticUpdates: Bool = gymfile.disablePackageAutomaticUpdates,
|
4197
|
+
useSystemScm: Bool = gymfile.useSystemScm) -> String
|
4189
4198
|
{
|
4190
4199
|
let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
4191
4200
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -4234,7 +4243,7 @@ public func gym(workspace: Any? = gymfile.workspace,
|
|
4234
4243
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
4235
4244
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
4236
4245
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
4237
|
-
|
4246
|
+
return runner.executeCommand(command)
|
4238
4247
|
}
|
4239
4248
|
|
4240
4249
|
/**
|
@@ -4508,14 +4517,17 @@ public func importCertificate(certificatePath: String,
|
|
4508
4517
|
|
4509
4518
|
- parameters:
|
4510
4519
|
- buildNumber: Change to a specific version. When you provide this parameter, Apple Generic Versioning does not have to be enabled
|
4520
|
+
- skipInfoPlist: Don't update Info.plist files when updating the build version
|
4511
4521
|
- xcodeproj: optional, you must specify the path to your main Xcode project if it is not in the project root directory
|
4512
4522
|
|
4513
4523
|
- returns: The new build number
|
4514
4524
|
*/
|
4515
4525
|
@discardableResult public func incrementBuildNumber(buildNumber: Any? = nil,
|
4526
|
+
skipInfoPlist: Bool = false,
|
4516
4527
|
xcodeproj: String? = nil) -> String
|
4517
4528
|
{
|
4518
4529
|
let command = RubyCommand(commandID: "", methodName: "increment_build_number", className: nil, args: [RubyCommand.Argument(name: "build_number", value: buildNumber),
|
4530
|
+
RubyCommand.Argument(name: "skip_info_plist", value: skipInfoPlist),
|
4519
4531
|
RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
|
4520
4532
|
return runner.executeCommand(command)
|
4521
4533
|
}
|
@@ -4575,9 +4587,9 @@ public func installOnDevice(extra: String? = nil,
|
|
4575
4587
|
|
4576
4588
|
Install provisioning profile from path for current user
|
4577
4589
|
*/
|
4578
|
-
public func installProvisioningProfile(path: String) {
|
4590
|
+
@discardableResult public func installProvisioningProfile(path: String) -> String {
|
4579
4591
|
let command = RubyCommand(commandID: "", methodName: "install_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "path", value: path)])
|
4580
|
-
|
4592
|
+
return runner.executeCommand(command)
|
4581
4593
|
}
|
4582
4594
|
|
4583
4595
|
/**
|
@@ -4680,38 +4692,49 @@ public func ipa(workspace: String? = nil,
|
|
4680
4692
|
/**
|
4681
4693
|
Generate docs using Jazzy
|
4682
4694
|
|
4683
|
-
-
|
4695
|
+
- parameters:
|
4696
|
+
- config: Path to jazzy config file
|
4697
|
+
- moduleVersion: Version string to use as part of the the default docs title and inside the docset
|
4684
4698
|
*/
|
4685
|
-
public func jazzy(config: String? = nil
|
4686
|
-
|
4699
|
+
public func jazzy(config: String? = nil,
|
4700
|
+
moduleVersion: String? = nil)
|
4701
|
+
{
|
4702
|
+
let command = RubyCommand(commandID: "", methodName: "jazzy", className: nil, args: [RubyCommand.Argument(name: "config", value: config),
|
4703
|
+
RubyCommand.Argument(name: "module_version", value: moduleVersion)])
|
4687
4704
|
_ = runner.executeCommand(command)
|
4688
4705
|
}
|
4689
4706
|
|
4690
4707
|
/**
|
4691
|
-
|
4708
|
+
Leave a comment on a Jira ticket
|
4692
4709
|
|
4693
|
-
|
4694
|
-
|
4695
|
-
|
4696
|
-
|
4697
|
-
|
4698
|
-
|
4699
|
-
|
4700
|
-
|
4701
|
-
|
4702
|
-
|
4703
|
-
|
4704
|
-
|
4705
|
-
|
4706
|
-
|
4710
|
+
- parameters:
|
4711
|
+
- url: URL for Jira instance
|
4712
|
+
- contextPath: Appends to the url (ex: "/jira")
|
4713
|
+
- username: Username for Jira instance
|
4714
|
+
- password: Password or API token for Jira
|
4715
|
+
- ticketId: Ticket ID for Jira, i.e. IOS-123
|
4716
|
+
- commentText: Text to add to the ticket as a comment
|
4717
|
+
- failOnError: Should an error adding the Jira comment cause a failure?
|
4718
|
+
|
4719
|
+
- returns: A hash containing all relevant information of the Jira comment
|
4720
|
+
Access Jira comment 'id', 'author', 'body', and more
|
4721
|
+
*/
|
4722
|
+
@discardableResult public func jira(url: String,
|
4723
|
+
contextPath: String = "",
|
4724
|
+
username: String,
|
4725
|
+
password: String,
|
4726
|
+
ticketId: String,
|
4727
|
+
commentText: String,
|
4728
|
+
failOnError: Bool = true) -> [String: Any]
|
4707
4729
|
{
|
4708
4730
|
let command = RubyCommand(commandID: "", methodName: "jira", className: nil, args: [RubyCommand.Argument(name: "url", value: url),
|
4709
4731
|
RubyCommand.Argument(name: "context_path", value: contextPath),
|
4710
4732
|
RubyCommand.Argument(name: "username", value: username),
|
4711
4733
|
RubyCommand.Argument(name: "password", value: password),
|
4712
4734
|
RubyCommand.Argument(name: "ticket_id", value: ticketId),
|
4713
|
-
RubyCommand.Argument(name: "comment_text", value: commentText)
|
4714
|
-
|
4735
|
+
RubyCommand.Argument(name: "comment_text", value: commentText),
|
4736
|
+
RubyCommand.Argument(name: "fail_on_error", value: failOnError)])
|
4737
|
+
return parseDictionary(fromString: runner.executeCommand(command))
|
4715
4738
|
}
|
4716
4739
|
|
4717
4740
|
/**
|
@@ -4772,7 +4795,7 @@ public func jira(url: String,
|
|
4772
4795
|
apiKey: [String: Any]? = nil,
|
4773
4796
|
live: Bool = false,
|
4774
4797
|
appIdentifier: String,
|
4775
|
-
username: String,
|
4798
|
+
username: String? = nil,
|
4776
4799
|
version: String? = nil,
|
4777
4800
|
platform: String = "ios",
|
4778
4801
|
initialBuildNumber: Int = 1,
|
@@ -5030,6 +5053,153 @@ public func match(type: Any = matchfile.type,
|
|
5030
5053
|
_ = runner.executeCommand(command)
|
5031
5054
|
}
|
5032
5055
|
|
5056
|
+
/**
|
5057
|
+
Easily nuke your certificate and provisioning profiles (via _match_)
|
5058
|
+
|
5059
|
+
- parameters:
|
5060
|
+
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
|
5061
|
+
- additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
5062
|
+
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
5063
|
+
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
5064
|
+
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
5065
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
5066
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
5067
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
5068
|
+
- username: Your Apple ID Username
|
5069
|
+
- teamId: The ID of your Developer Portal team if you're in multiple teams
|
5070
|
+
- teamName: The name of your Developer Portal team if you're in multiple teams
|
5071
|
+
- storageMode: Define where you want to store your certificates
|
5072
|
+
- gitUrl: URL to the git repo containing all the certificates
|
5073
|
+
- gitBranch: Specific git branch to use
|
5074
|
+
- gitFullName: git user full name to commit
|
5075
|
+
- gitUserEmail: git user email to commit
|
5076
|
+
- shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
|
5077
|
+
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
5078
|
+
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
5079
|
+
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure DevOps repository), usually a string in Base64
|
5080
|
+
- gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
5081
|
+
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
5082
|
+
- googleCloudKeysFile: Path to the gc_keys.json file
|
5083
|
+
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
5084
|
+
- s3Region: Name of the S3 region
|
5085
|
+
- s3AccessKey: S3 access key
|
5086
|
+
- s3SecretAccessKey: S3 secret access key
|
5087
|
+
- s3Bucket: Name of the S3 bucket
|
5088
|
+
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
5089
|
+
- keychainName: Keychain the items should be imported to
|
5090
|
+
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
5091
|
+
- force: Renew the provisioning profiles every time you run match
|
5092
|
+
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
|
5093
|
+
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
5094
|
+
- skipDocs: Skip generation of a README.md for the created git repository
|
5095
|
+
- platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
|
5096
|
+
- deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
|
5097
|
+
- templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
5098
|
+
- profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
|
5099
|
+
- failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
|
5100
|
+
- skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
|
5101
|
+
- outputPath: Path in which to export certificates, key and profile
|
5102
|
+
- skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
|
5103
|
+
- verbose: Print out extra information and all commands
|
5104
|
+
|
5105
|
+
Use the match_nuke action to revoke your certificates and provisioning profiles.
|
5106
|
+
Don't worry, apps that are already available in the App Store / TestFlight will still work.
|
5107
|
+
Builds distributed via Ad Hoc or Enterprise will be disabled after nuking your account, so you'll have to re-upload a new build.
|
5108
|
+
After clearing your account you'll start from a clean state, and you can run match to generate your certificates and profiles again.
|
5109
|
+
More information: https://docs.fastlane.tools/actions/match/
|
5110
|
+
*/
|
5111
|
+
public func matchNuke(type: String = "development",
|
5112
|
+
additionalCertTypes: [String]? = nil,
|
5113
|
+
readonly: Bool = false,
|
5114
|
+
generateAppleCerts: Bool = true,
|
5115
|
+
skipProvisioningProfiles: Bool = false,
|
5116
|
+
appIdentifier: [String],
|
5117
|
+
apiKeyPath: String? = nil,
|
5118
|
+
apiKey: [String: Any]? = nil,
|
5119
|
+
username: String? = nil,
|
5120
|
+
teamId: String? = nil,
|
5121
|
+
teamName: String? = nil,
|
5122
|
+
storageMode: String = "git",
|
5123
|
+
gitUrl: String,
|
5124
|
+
gitBranch: String = "master",
|
5125
|
+
gitFullName: String? = nil,
|
5126
|
+
gitUserEmail: String? = nil,
|
5127
|
+
shallowClone: Bool = false,
|
5128
|
+
cloneBranchDirectly: Bool = false,
|
5129
|
+
gitBasicAuthorization: String? = nil,
|
5130
|
+
gitBearerAuthorization: String? = nil,
|
5131
|
+
gitPrivateKey: String? = nil,
|
5132
|
+
googleCloudBucketName: String? = nil,
|
5133
|
+
googleCloudKeysFile: String? = nil,
|
5134
|
+
googleCloudProjectId: String? = nil,
|
5135
|
+
s3Region: String? = nil,
|
5136
|
+
s3AccessKey: String? = nil,
|
5137
|
+
s3SecretAccessKey: String? = nil,
|
5138
|
+
s3Bucket: String? = nil,
|
5139
|
+
s3ObjectPrefix: String? = nil,
|
5140
|
+
keychainName: String = "login.keychain",
|
5141
|
+
keychainPassword: String? = nil,
|
5142
|
+
force: Bool = false,
|
5143
|
+
forceForNewDevices: Bool = false,
|
5144
|
+
skipConfirmation: Bool = false,
|
5145
|
+
skipDocs: Bool = false,
|
5146
|
+
platform: String = "ios",
|
5147
|
+
deriveCatalystAppIdentifier: Bool = false,
|
5148
|
+
templateName: String? = nil,
|
5149
|
+
profileName: String? = nil,
|
5150
|
+
failOnNameTaken: Bool = false,
|
5151
|
+
skipCertificateMatching: Bool = false,
|
5152
|
+
outputPath: String? = nil,
|
5153
|
+
skipSetPartitionList: Bool = false,
|
5154
|
+
verbose: Bool = false)
|
5155
|
+
{
|
5156
|
+
let command = RubyCommand(commandID: "", methodName: "match_nuke", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
5157
|
+
RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
|
5158
|
+
RubyCommand.Argument(name: "readonly", value: readonly),
|
5159
|
+
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
5160
|
+
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
5161
|
+
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
5162
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
5163
|
+
RubyCommand.Argument(name: "api_key", value: apiKey),
|
5164
|
+
RubyCommand.Argument(name: "username", value: username),
|
5165
|
+
RubyCommand.Argument(name: "team_id", value: teamId),
|
5166
|
+
RubyCommand.Argument(name: "team_name", value: teamName),
|
5167
|
+
RubyCommand.Argument(name: "storage_mode", value: storageMode),
|
5168
|
+
RubyCommand.Argument(name: "git_url", value: gitUrl),
|
5169
|
+
RubyCommand.Argument(name: "git_branch", value: gitBranch),
|
5170
|
+
RubyCommand.Argument(name: "git_full_name", value: gitFullName),
|
5171
|
+
RubyCommand.Argument(name: "git_user_email", value: gitUserEmail),
|
5172
|
+
RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
|
5173
|
+
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
5174
|
+
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
5175
|
+
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
5176
|
+
RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
|
5177
|
+
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
5178
|
+
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
5179
|
+
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
5180
|
+
RubyCommand.Argument(name: "s3_region", value: s3Region),
|
5181
|
+
RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
|
5182
|
+
RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
|
5183
|
+
RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
|
5184
|
+
RubyCommand.Argument(name: "s3_object_prefix", value: s3ObjectPrefix),
|
5185
|
+
RubyCommand.Argument(name: "keychain_name", value: keychainName),
|
5186
|
+
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
5187
|
+
RubyCommand.Argument(name: "force", value: force),
|
5188
|
+
RubyCommand.Argument(name: "force_for_new_devices", value: forceForNewDevices),
|
5189
|
+
RubyCommand.Argument(name: "skip_confirmation", value: skipConfirmation),
|
5190
|
+
RubyCommand.Argument(name: "skip_docs", value: skipDocs),
|
5191
|
+
RubyCommand.Argument(name: "platform", value: platform),
|
5192
|
+
RubyCommand.Argument(name: "derive_catalyst_app_identifier", value: deriveCatalystAppIdentifier),
|
5193
|
+
RubyCommand.Argument(name: "template_name", value: templateName),
|
5194
|
+
RubyCommand.Argument(name: "profile_name", value: profileName),
|
5195
|
+
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
|
5196
|
+
RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
|
5197
|
+
RubyCommand.Argument(name: "output_path", value: outputPath),
|
5198
|
+
RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
|
5199
|
+
RubyCommand.Argument(name: "verbose", value: verbose)])
|
5200
|
+
_ = runner.executeCommand(command)
|
5201
|
+
}
|
5202
|
+
|
5033
5203
|
/**
|
5034
5204
|
Verifies the minimum fastlane version required
|
5035
5205
|
|
@@ -5138,14 +5308,16 @@ public func nexusUpload(file: String,
|
|
5138
5308
|
- ascProvider: Provider short name for accounts associated with multiple providers
|
5139
5309
|
- printLog: Whether to print notarization log file, listing issues on failure and warnings on success
|
5140
5310
|
- verbose: Whether to log requests
|
5311
|
+
- apiKeyPath: Path to AppStore Connect API key
|
5141
5312
|
*/
|
5142
5313
|
public func notarize(package: String,
|
5143
5314
|
tryEarlyStapling: Bool = false,
|
5144
5315
|
bundleId: String? = nil,
|
5145
|
-
username: String,
|
5316
|
+
username: String? = nil,
|
5146
5317
|
ascProvider: String? = nil,
|
5147
5318
|
printLog: Bool = false,
|
5148
|
-
verbose: Bool = false
|
5319
|
+
verbose: Bool = false,
|
5320
|
+
apiKeyPath: String? = nil)
|
5149
5321
|
{
|
5150
5322
|
let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
|
5151
5323
|
RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
|
@@ -5153,7 +5325,8 @@ public func notarize(package: String,
|
|
5153
5325
|
RubyCommand.Argument(name: "username", value: username),
|
5154
5326
|
RubyCommand.Argument(name: "asc_provider", value: ascProvider),
|
5155
5327
|
RubyCommand.Argument(name: "print_log", value: printLog),
|
5156
|
-
RubyCommand.Argument(name: "verbose", value: verbose)
|
5328
|
+
RubyCommand.Argument(name: "verbose", value: verbose),
|
5329
|
+
RubyCommand.Argument(name: "api_key_path", value: apiKeyPath)])
|
5157
5330
|
_ = runner.executeCommand(command)
|
5158
5331
|
}
|
5159
5332
|
|
@@ -5430,7 +5603,7 @@ public func pem(development: Bool = false,
|
|
5430
5603
|
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
5431
5604
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
5432
5605
|
- distributeExternal: Should the build be distributed to external testers?
|
5433
|
-
- notifyExternalTesters: Should notify external testers?
|
5606
|
+
- notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
|
5434
5607
|
- appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
|
5435
5608
|
- buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
|
5436
5609
|
- expirePreviousBuilds: Should expire previous builds?
|
@@ -5452,12 +5625,12 @@ public func pem(development: Bool = false,
|
|
5452
5625
|
*/
|
5453
5626
|
public func pilot(apiKeyPath: String? = nil,
|
5454
5627
|
apiKey: [String: Any]? = nil,
|
5455
|
-
username: String,
|
5628
|
+
username: String? = nil,
|
5456
5629
|
appIdentifier: String? = nil,
|
5457
5630
|
appPlatform: String = "ios",
|
5458
5631
|
appleId: String? = nil,
|
5459
5632
|
ipa: String? = nil,
|
5460
|
-
demoAccountRequired: Bool =
|
5633
|
+
demoAccountRequired: Bool? = nil,
|
5461
5634
|
betaAppReviewInfo: [String: Any]? = nil,
|
5462
5635
|
localizedAppInfo: [String: Any]? = nil,
|
5463
5636
|
betaAppDescription: String? = nil,
|
@@ -5470,7 +5643,7 @@ public func pilot(apiKeyPath: String? = nil,
|
|
5470
5643
|
distributeOnly: Bool = false,
|
5471
5644
|
usesNonExemptEncryption: Bool = false,
|
5472
5645
|
distributeExternal: Bool = false,
|
5473
|
-
notifyExternalTesters:
|
5646
|
+
notifyExternalTesters: Any? = nil,
|
5474
5647
|
appVersion: String? = nil,
|
5475
5648
|
buildNumber: String? = nil,
|
5476
5649
|
expirePreviousBuilds: Bool = false,
|
@@ -5717,17 +5890,17 @@ public func podioItem(clientId: String,
|
|
5717
5890
|
|
5718
5891
|
More information: https://fastlane.tools/precheck
|
5719
5892
|
*/
|
5720
|
-
public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
|
5721
|
-
|
5722
|
-
|
5723
|
-
|
5724
|
-
|
5725
|
-
|
5726
|
-
|
5727
|
-
|
5728
|
-
|
5729
|
-
|
5730
|
-
|
5893
|
+
@discardableResult public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
|
5894
|
+
apiKey: [String: Any]? = precheckfile.apiKey,
|
5895
|
+
appIdentifier: Any = precheckfile.appIdentifier,
|
5896
|
+
username: Any? = precheckfile.username,
|
5897
|
+
teamId: Any? = precheckfile.teamId,
|
5898
|
+
teamName: Any? = precheckfile.teamName,
|
5899
|
+
platform: Any = precheckfile.platform,
|
5900
|
+
defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
|
5901
|
+
includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
|
5902
|
+
useLive: Bool = precheckfile.useLive,
|
5903
|
+
freeStuffInIap: Any? = precheckfile.freeStuffInIap) -> Bool
|
5731
5904
|
{
|
5732
5905
|
let command = RubyCommand(commandID: "", methodName: "precheck", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
|
5733
5906
|
RubyCommand.Argument(name: "api_key", value: apiKey),
|
@@ -5740,7 +5913,7 @@ public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
|
|
5740
5913
|
RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases),
|
5741
5914
|
RubyCommand.Argument(name: "use_live", value: useLive),
|
5742
5915
|
RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap)])
|
5743
|
-
|
5916
|
+
return parseBool(fromString: runner.executeCommand(command))
|
5744
5917
|
}
|
5745
5918
|
|
5746
5919
|
/**
|
@@ -6184,6 +6357,7 @@ public func rubyVersion() {
|
|
6184
6357
|
- device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6')
|
6185
6358
|
- devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air'])
|
6186
6359
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
6360
|
+
- ensureDevicesFound: Should fail if devices not found
|
6187
6361
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
6188
6362
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
6189
6363
|
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
@@ -6214,6 +6388,7 @@ public func rubyVersion() {
|
|
6214
6388
|
- xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
|
6215
6389
|
- derivedDataPath: The directory where build products and other derived data will go
|
6216
6390
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
6391
|
+
- outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
|
6217
6392
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
6218
6393
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
6219
6394
|
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
@@ -6245,6 +6420,7 @@ public func rubyVersion() {
|
|
6245
6420
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
6246
6421
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
6247
6422
|
- useSystemScm: Lets xcodebuild use system's scm configuration
|
6423
|
+
- numberOfRetries: The number of times a test can fail before scan should stop retrying
|
6248
6424
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
6249
6425
|
|
6250
6426
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -6255,6 +6431,7 @@ public func runTests(workspace: String? = nil,
|
|
6255
6431
|
device: String? = nil,
|
6256
6432
|
devices: [String]? = nil,
|
6257
6433
|
skipDetectDevices: Bool = false,
|
6434
|
+
ensureDevicesFound: Bool = false,
|
6258
6435
|
forceQuitSimulator: Bool = false,
|
6259
6436
|
resetSimulator: Bool = false,
|
6260
6437
|
disableSlideToType: Bool = true,
|
@@ -6285,6 +6462,7 @@ public func runTests(workspace: String? = nil,
|
|
6285
6462
|
xcprettyArgs: String? = nil,
|
6286
6463
|
derivedDataPath: String? = nil,
|
6287
6464
|
shouldZipBuildProducts: Bool = false,
|
6465
|
+
outputXctestrun: Bool = false,
|
6288
6466
|
resultBundle: Bool = false,
|
6289
6467
|
useClangReportName: Bool = false,
|
6290
6468
|
concurrentWorkers: Int? = nil,
|
@@ -6316,6 +6494,7 @@ public func runTests(workspace: String? = nil,
|
|
6316
6494
|
skipPackageDependenciesResolution: Bool = false,
|
6317
6495
|
disablePackageAutomaticUpdates: Bool = false,
|
6318
6496
|
useSystemScm: Bool = false,
|
6497
|
+
numberOfRetries: Int = 0,
|
6319
6498
|
failBuild: Bool = true)
|
6320
6499
|
{
|
6321
6500
|
let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -6324,6 +6503,7 @@ public func runTests(workspace: String? = nil,
|
|
6324
6503
|
RubyCommand.Argument(name: "device", value: device),
|
6325
6504
|
RubyCommand.Argument(name: "devices", value: devices),
|
6326
6505
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
6506
|
+
RubyCommand.Argument(name: "ensure_devices_found", value: ensureDevicesFound),
|
6327
6507
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
6328
6508
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
6329
6509
|
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
@@ -6354,6 +6534,7 @@ public func runTests(workspace: String? = nil,
|
|
6354
6534
|
RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
|
6355
6535
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
6356
6536
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
6537
|
+
RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
|
6357
6538
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
6358
6539
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
6359
6540
|
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
@@ -6385,6 +6566,7 @@ public func runTests(workspace: String? = nil,
|
|
6385
6566
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
6386
6567
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
6387
6568
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
|
6569
|
+
RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries),
|
6388
6570
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
6389
6571
|
_ = runner.executeCommand(command)
|
6390
6572
|
}
|
@@ -6475,6 +6657,7 @@ public func say(text: Any,
|
|
6475
6657
|
- device: The name of the simulator type you want to run tests on (e.g. 'iPhone 6')
|
6476
6658
|
- devices: Array of devices to run the tests on (e.g. ['iPhone 6', 'iPad Air'])
|
6477
6659
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
6660
|
+
- ensureDevicesFound: Should fail if devices not found
|
6478
6661
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
6479
6662
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
6480
6663
|
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
@@ -6505,6 +6688,7 @@ public func say(text: Any,
|
|
6505
6688
|
- xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
|
6506
6689
|
- derivedDataPath: The directory where build products and other derived data will go
|
6507
6690
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
6691
|
+
- outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
|
6508
6692
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
6509
6693
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
6510
6694
|
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
@@ -6536,6 +6720,7 @@ public func say(text: Any,
|
|
6536
6720
|
- skipPackageDependenciesResolution: Skips resolution of Swift Package Manager dependencies
|
6537
6721
|
- disablePackageAutomaticUpdates: Prevents packages from automatically being resolved to versions other than those recorded in the `Package.resolved` file
|
6538
6722
|
- useSystemScm: Lets xcodebuild use system's scm configuration
|
6723
|
+
- numberOfRetries: The number of times a test can fail before scan should stop retrying
|
6539
6724
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
6540
6725
|
|
6541
6726
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -6546,6 +6731,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6546
6731
|
device: Any? = scanfile.device,
|
6547
6732
|
devices: [String]? = scanfile.devices,
|
6548
6733
|
skipDetectDevices: Bool = scanfile.skipDetectDevices,
|
6734
|
+
ensureDevicesFound: Bool = scanfile.ensureDevicesFound,
|
6549
6735
|
forceQuitSimulator: Bool = scanfile.forceQuitSimulator,
|
6550
6736
|
resetSimulator: Bool = scanfile.resetSimulator,
|
6551
6737
|
disableSlideToType: Bool = scanfile.disableSlideToType,
|
@@ -6576,6 +6762,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6576
6762
|
xcprettyArgs: Any? = scanfile.xcprettyArgs,
|
6577
6763
|
derivedDataPath: Any? = scanfile.derivedDataPath,
|
6578
6764
|
shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
|
6765
|
+
outputXctestrun: Bool = scanfile.outputXctestrun,
|
6579
6766
|
resultBundle: Bool = scanfile.resultBundle,
|
6580
6767
|
useClangReportName: Bool = scanfile.useClangReportName,
|
6581
6768
|
concurrentWorkers: Int? = scanfile.concurrentWorkers,
|
@@ -6607,6 +6794,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6607
6794
|
skipPackageDependenciesResolution: Bool = scanfile.skipPackageDependenciesResolution,
|
6608
6795
|
disablePackageAutomaticUpdates: Bool = scanfile.disablePackageAutomaticUpdates,
|
6609
6796
|
useSystemScm: Bool = scanfile.useSystemScm,
|
6797
|
+
numberOfRetries: Int = scanfile.numberOfRetries,
|
6610
6798
|
failBuild: Bool = scanfile.failBuild)
|
6611
6799
|
{
|
6612
6800
|
let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -6615,6 +6803,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6615
6803
|
RubyCommand.Argument(name: "device", value: device),
|
6616
6804
|
RubyCommand.Argument(name: "devices", value: devices),
|
6617
6805
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
6806
|
+
RubyCommand.Argument(name: "ensure_devices_found", value: ensureDevicesFound),
|
6618
6807
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
6619
6808
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
6620
6809
|
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
@@ -6645,6 +6834,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6645
6834
|
RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
|
6646
6835
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
6647
6836
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
6837
|
+
RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
|
6648
6838
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
6649
6839
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
6650
6840
|
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
@@ -6676,6 +6866,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6676
6866
|
RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
|
6677
6867
|
RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
|
6678
6868
|
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
|
6869
|
+
RubyCommand.Argument(name: "number_of_retries", value: numberOfRetries),
|
6679
6870
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
6680
6871
|
_ = runner.executeCommand(command)
|
6681
6872
|
}
|
@@ -7098,29 +7289,29 @@ public func setupTravis(force: Bool = false) {
|
|
7098
7289
|
|
7099
7290
|
**Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
|
7100
7291
|
*/
|
7101
|
-
public func sigh(adhoc: Bool = false,
|
7102
|
-
|
7103
|
-
|
7104
|
-
|
7105
|
-
|
7106
|
-
|
7107
|
-
|
7108
|
-
|
7109
|
-
|
7110
|
-
|
7111
|
-
|
7112
|
-
|
7113
|
-
|
7114
|
-
|
7115
|
-
|
7116
|
-
|
7117
|
-
|
7118
|
-
|
7119
|
-
|
7120
|
-
|
7121
|
-
|
7122
|
-
|
7123
|
-
|
7292
|
+
@discardableResult public func sigh(adhoc: Bool = false,
|
7293
|
+
developerId: Bool = false,
|
7294
|
+
development: Bool = false,
|
7295
|
+
skipInstall: Bool = false,
|
7296
|
+
force: Bool = false,
|
7297
|
+
appIdentifier: String,
|
7298
|
+
apiKeyPath: String? = nil,
|
7299
|
+
apiKey: [String: Any]? = nil,
|
7300
|
+
username: String? = nil,
|
7301
|
+
teamId: String? = nil,
|
7302
|
+
teamName: String? = nil,
|
7303
|
+
provisioningName: String? = nil,
|
7304
|
+
ignoreProfilesWithDifferentName: Bool = false,
|
7305
|
+
outputPath: String = ".",
|
7306
|
+
certId: String? = nil,
|
7307
|
+
certOwnerName: String? = nil,
|
7308
|
+
filename: String? = nil,
|
7309
|
+
skipFetchProfiles: Bool = false,
|
7310
|
+
skipCertificateVerification: Bool = false,
|
7311
|
+
platform: Any = "ios",
|
7312
|
+
readonly: Bool = false,
|
7313
|
+
templateName: String? = nil,
|
7314
|
+
failOnNameTaken: Bool = false) -> String
|
7124
7315
|
{
|
7125
7316
|
let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
|
7126
7317
|
RubyCommand.Argument(name: "developer_id", value: developerId),
|
@@ -7145,7 +7336,7 @@ public func sigh(adhoc: Bool = false,
|
|
7145
7336
|
RubyCommand.Argument(name: "readonly", value: readonly),
|
7146
7337
|
RubyCommand.Argument(name: "template_name", value: templateName),
|
7147
7338
|
RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
|
7148
|
-
|
7339
|
+
return runner.executeCommand(command)
|
7149
7340
|
}
|
7150
7341
|
|
7151
7342
|
/**
|
@@ -7564,6 +7755,57 @@ public func sonar(projectConfigurationPath: String? = nil,
|
|
7564
7755
|
_ = runner.executeCommand(command)
|
7565
7756
|
}
|
7566
7757
|
|
7758
|
+
/**
|
7759
|
+
Generate docs using SourceDocs
|
7760
|
+
|
7761
|
+
- parameters:
|
7762
|
+
- allModules: Generate documentation for all modules in a Swift package
|
7763
|
+
- spmModule: Generate documentation for Swift Package Manager module
|
7764
|
+
- moduleName: Generate documentation for a Swift module
|
7765
|
+
- linkBeginning: The text to begin links with
|
7766
|
+
- linkEnding: The text to end links with (default: .md)
|
7767
|
+
- outputFolder: Output directory to clean (default: Documentation/Reference)
|
7768
|
+
- minAcl: Access level to include in documentation [private, fileprivate, internal, public, open] (default: public)
|
7769
|
+
- moduleNamePath: Include the module name as part of the output folder path
|
7770
|
+
- clean: Delete output folder before generating documentation
|
7771
|
+
- collapsible: Put methods, properties and enum cases inside collapsible blocks
|
7772
|
+
- tableOfContents: Generate a table of contents with properties and methods for each type
|
7773
|
+
- reproducible: Generate documentation that is reproducible: only depends on the sources
|
7774
|
+
- scheme: Create documentation for specific scheme
|
7775
|
+
- sdkPlatform: Create documentation for specific sdk platform
|
7776
|
+
*/
|
7777
|
+
public func sourcedocs(allModules: Bool? = nil,
|
7778
|
+
spmModule: String? = nil,
|
7779
|
+
moduleName: String? = nil,
|
7780
|
+
linkBeginning: String? = nil,
|
7781
|
+
linkEnding: String? = nil,
|
7782
|
+
outputFolder: String,
|
7783
|
+
minAcl: String? = nil,
|
7784
|
+
moduleNamePath: Bool? = nil,
|
7785
|
+
clean: Bool? = nil,
|
7786
|
+
collapsible: Bool? = nil,
|
7787
|
+
tableOfContents: Bool? = nil,
|
7788
|
+
reproducible: Bool? = nil,
|
7789
|
+
scheme: String? = nil,
|
7790
|
+
sdkPlatform: String? = nil)
|
7791
|
+
{
|
7792
|
+
let command = RubyCommand(commandID: "", methodName: "sourcedocs", className: nil, args: [RubyCommand.Argument(name: "all_modules", value: allModules),
|
7793
|
+
RubyCommand.Argument(name: "spm_module", value: spmModule),
|
7794
|
+
RubyCommand.Argument(name: "module_name", value: moduleName),
|
7795
|
+
RubyCommand.Argument(name: "link_beginning", value: linkBeginning),
|
7796
|
+
RubyCommand.Argument(name: "link_ending", value: linkEnding),
|
7797
|
+
RubyCommand.Argument(name: "output_folder", value: outputFolder),
|
7798
|
+
RubyCommand.Argument(name: "min_acl", value: minAcl),
|
7799
|
+
RubyCommand.Argument(name: "module_name_path", value: moduleNamePath),
|
7800
|
+
RubyCommand.Argument(name: "clean", value: clean),
|
7801
|
+
RubyCommand.Argument(name: "collapsible", value: collapsible),
|
7802
|
+
RubyCommand.Argument(name: "table_of_contents", value: tableOfContents),
|
7803
|
+
RubyCommand.Argument(name: "reproducible", value: reproducible),
|
7804
|
+
RubyCommand.Argument(name: "scheme", value: scheme),
|
7805
|
+
RubyCommand.Argument(name: "sdk_platform", value: sdkPlatform)])
|
7806
|
+
_ = runner.executeCommand(command)
|
7807
|
+
}
|
7808
|
+
|
7567
7809
|
/**
|
7568
7810
|
Find, print, and copy Spaceship logs
|
7569
7811
|
|
@@ -7576,18 +7818,18 @@ public func sonar(projectConfigurationPath: String? = nil,
|
|
7576
7818
|
|
7577
7819
|
- returns: The array of Spaceship logs
|
7578
7820
|
*/
|
7579
|
-
public func spaceshipLogs(latest: Bool = true,
|
7580
|
-
|
7581
|
-
|
7582
|
-
|
7583
|
-
|
7821
|
+
@discardableResult public func spaceshipLogs(latest: Bool = true,
|
7822
|
+
printContents: Bool = false,
|
7823
|
+
printPaths: Bool = false,
|
7824
|
+
copyToPath: String? = nil,
|
7825
|
+
copyToClipboard: Bool = false) -> [String]
|
7584
7826
|
{
|
7585
7827
|
let command = RubyCommand(commandID: "", methodName: "spaceship_logs", className: nil, args: [RubyCommand.Argument(name: "latest", value: latest),
|
7586
7828
|
RubyCommand.Argument(name: "print_contents", value: printContents),
|
7587
7829
|
RubyCommand.Argument(name: "print_paths", value: printPaths),
|
7588
7830
|
RubyCommand.Argument(name: "copy_to_path", value: copyToPath),
|
7589
7831
|
RubyCommand.Argument(name: "copy_to_clipboard", value: copyToClipboard)])
|
7590
|
-
|
7832
|
+
return parseArray(fromString: runner.executeCommand(command))
|
7591
7833
|
}
|
7592
7834
|
|
7593
7835
|
/**
|
@@ -8107,7 +8349,7 @@ public func testfairy(apiKey: String,
|
|
8107
8349
|
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
8108
8350
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
8109
8351
|
- distributeExternal: Should the build be distributed to external testers?
|
8110
|
-
- notifyExternalTesters: Should notify external testers?
|
8352
|
+
- notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
|
8111
8353
|
- appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
|
8112
8354
|
- buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
|
8113
8355
|
- expirePreviousBuilds: Should expire previous builds?
|
@@ -8129,12 +8371,12 @@ public func testfairy(apiKey: String,
|
|
8129
8371
|
*/
|
8130
8372
|
public func testflight(apiKeyPath: String? = nil,
|
8131
8373
|
apiKey: [String: Any]? = nil,
|
8132
|
-
username: String,
|
8374
|
+
username: String? = nil,
|
8133
8375
|
appIdentifier: String? = nil,
|
8134
8376
|
appPlatform: String = "ios",
|
8135
8377
|
appleId: String? = nil,
|
8136
8378
|
ipa: String? = nil,
|
8137
|
-
demoAccountRequired: Bool =
|
8379
|
+
demoAccountRequired: Bool? = nil,
|
8138
8380
|
betaAppReviewInfo: [String: Any]? = nil,
|
8139
8381
|
localizedAppInfo: [String: Any]? = nil,
|
8140
8382
|
betaAppDescription: String? = nil,
|
@@ -8147,7 +8389,7 @@ public func testflight(apiKeyPath: String? = nil,
|
|
8147
8389
|
distributeOnly: Bool = false,
|
8148
8390
|
usesNonExemptEncryption: Bool = false,
|
8149
8391
|
distributeExternal: Bool = false,
|
8150
|
-
notifyExternalTesters:
|
8392
|
+
notifyExternalTesters: Any? = nil,
|
8151
8393
|
appVersion: String? = nil,
|
8152
8394
|
buildNumber: String? = nil,
|
8153
8395
|
expirePreviousBuilds: Bool = false,
|
@@ -8791,7 +9033,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
|
|
8791
9033
|
*/
|
8792
9034
|
public func uploadToAppStore(apiKeyPath: String? = nil,
|
8793
9035
|
apiKey: [String: Any]? = nil,
|
8794
|
-
username: String,
|
9036
|
+
username: String? = nil,
|
8795
9037
|
appIdentifier: String? = nil,
|
8796
9038
|
appVersion: String? = nil,
|
8797
9039
|
ipa: String? = nil,
|
@@ -9100,7 +9342,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
|
|
9100
9342
|
- distributeOnly: Distribute a previously uploaded build (equivalent to the `fastlane pilot distribute` command)
|
9101
9343
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
9102
9344
|
- distributeExternal: Should the build be distributed to external testers?
|
9103
|
-
- notifyExternalTesters: Should notify external testers?
|
9345
|
+
- notifyExternalTesters: Should notify external testers? (Not setting a value will use App Store Connect's default which is to notify)
|
9104
9346
|
- appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
|
9105
9347
|
- buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
|
9106
9348
|
- expirePreviousBuilds: Should expire previous builds?
|
@@ -9122,12 +9364,12 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
|
|
9122
9364
|
*/
|
9123
9365
|
public func uploadToTestflight(apiKeyPath: String? = nil,
|
9124
9366
|
apiKey: [String: Any]? = nil,
|
9125
|
-
username: String,
|
9367
|
+
username: String? = nil,
|
9126
9368
|
appIdentifier: String? = nil,
|
9127
9369
|
appPlatform: String = "ios",
|
9128
9370
|
appleId: String? = nil,
|
9129
9371
|
ipa: String? = nil,
|
9130
|
-
demoAccountRequired: Bool =
|
9372
|
+
demoAccountRequired: Bool? = nil,
|
9131
9373
|
betaAppReviewInfo: [String: Any]? = nil,
|
9132
9374
|
localizedAppInfo: [String: Any]? = nil,
|
9133
9375
|
betaAppDescription: String? = nil,
|
@@ -9140,7 +9382,7 @@ public func uploadToTestflight(apiKeyPath: String? = nil,
|
|
9140
9382
|
distributeOnly: Bool = false,
|
9141
9383
|
usesNonExemptEncryption: Bool = false,
|
9142
9384
|
distributeExternal: Bool = false,
|
9143
|
-
notifyExternalTesters:
|
9385
|
+
notifyExternalTesters: Any? = nil,
|
9144
9386
|
appVersion: String? = nil,
|
9145
9387
|
buildNumber: String? = nil,
|
9146
9388
|
expirePreviousBuilds: Bool = false,
|
@@ -9483,7 +9725,7 @@ public func xcov(workspace: String? = nil,
|
|
9483
9725
|
htmlReport: Bool = true,
|
9484
9726
|
markdownReport: Bool = false,
|
9485
9727
|
jsonReport: Bool = false,
|
9486
|
-
minimumCoveragePercentage: Float = 0,
|
9728
|
+
minimumCoveragePercentage: Float = 0.0,
|
9487
9729
|
slackUrl: String? = nil,
|
9488
9730
|
slackChannel: String? = nil,
|
9489
9731
|
skipSlack: Bool = false,
|
@@ -9645,4 +9887,4 @@ public let snapshotfile = Snapshotfile()
|
|
9645
9887
|
|
9646
9888
|
// Please don't remove the lines below
|
9647
9889
|
// They are used to detect outdated files
|
9648
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9890
|
+
// FastlaneRunnerAPIVersion [0.9.116]
|