fastlane 2.164.0 → 2.169.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -80
- data/cert/lib/cert/.options.rb.swp +0 -0
- data/cert/lib/cert/.runner.rb.swp +0 -0
- data/cert/lib/cert/options.rb +3 -3
- data/cert/lib/cert/runner.rb +2 -2
- data/deliver/lib/deliver/app_screenshot.rb +6 -2
- data/deliver/lib/deliver/loader.rb +136 -18
- data/deliver/lib/deliver/upload_metadata.rb +4 -10
- data/deliver/lib/deliver/upload_screenshots.rb +1 -64
- data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/add_git_tag.rb +9 -2
- data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +4 -0
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +2 -2
- data/fastlane/lib/fastlane/actions/spm.rb +6 -0
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +29 -8
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -3
- data/fastlane/lib/fastlane/actions/xcode_install.rb +8 -5
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +2 -2
- data/fastlane/lib/fastlane/features.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +56 -26
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +5 -1
- data/fastlane/swift/LaneFileProtocol.swift +2 -2
- data/fastlane/swift/MainProcess.swift +2 -0
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +4 -4
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Runner.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +9 -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 +1 -1
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
- data/fastlane_core/lib/fastlane_core/helper.rb +10 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
- data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
- data/gym/lib/gym/code_signing_mapping.rb +1 -1
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/options.rb +7 -1
- data/match/lib/match/.options.rb.swp +0 -0
- data/match/lib/match/module.rb +1 -1
- data/match/lib/match/nuke.rb +9 -5
- data/match/lib/match/options.rb +2 -2
- data/pilot/lib/pilot/build_manager.rb +9 -3
- data/scan/lib/scan/detect_values.rb +3 -1
- data/scan/lib/scan/module.rb +4 -0
- data/scan/lib/scan/options.rb +16 -1
- data/scan/lib/scan/runner.rb +2 -2
- data/scan/lib/scan/test_command_generator.rb +1 -0
- data/{match/lib/match/.commands_generator.rb.swp → sigh/lib/sigh/.options.rb.swp} +0 -0
- data/sigh/lib/sigh/runner.rb +2 -2
- data/snapshot/lib/assets/SnapshotHelper.swift +5 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +14 -0
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/app.rb +139 -54
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +16 -10
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +8 -4
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +15 -11
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +13 -9
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +9 -7
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +15 -11
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_attachment.rb +7 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +55 -36
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +21 -14
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_app_review_submission.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +12 -2
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/build.rb +24 -16
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +12 -8
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/user.rb +6 -4
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +9 -6
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +71 -0
- data/spaceship/lib/spaceship/errors.rb +19 -0
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +18 -6
- data/supply/lib/supply.rb +1 -1
- data/supply/lib/supply/options.rb +1 -1
- data/supply/lib/supply/uploader.rb +3 -2
- metadata +26 -22
- data/match/lib/match/.importer.rb.swp +0 -0
@@ -375,9 +375,7 @@ module Deliver
|
|
375
375
|
# Check folder list (an empty folder signifies a language is required)
|
376
376
|
ignore_validation = options[:ignore_language_directory_validation]
|
377
377
|
Loader.language_folders(options[:metadata_path], ignore_validation).each do |lang_folder|
|
378
|
-
|
379
|
-
language = File.basename(lang_folder)
|
380
|
-
enabled_languages << language unless enabled_languages.include?(language)
|
378
|
+
enabled_languages << lang_folder.language unless enabled_languages.include?(lang_folder.language)
|
381
379
|
end
|
382
380
|
|
383
381
|
return unless enabled_languages.include?("default")
|
@@ -416,10 +414,7 @@ module Deliver
|
|
416
414
|
# Check folder list (an empty folder signifies a language is required)
|
417
415
|
ignore_validation = options[:ignore_language_directory_validation]
|
418
416
|
Loader.language_folders(options[:metadata_path], ignore_validation).each do |lang_folder|
|
419
|
-
|
420
|
-
|
421
|
-
language = File.basename(lang_folder)
|
422
|
-
enabled_languages << language unless enabled_languages.include?(language)
|
417
|
+
enabled_languages << lang_folder.language unless enabled_languages.include?(lang_folder.language)
|
423
418
|
end
|
424
419
|
|
425
420
|
# Mapping to strings because :default symbol can be passed in
|
@@ -530,14 +525,13 @@ module Deliver
|
|
530
525
|
# Load localised data
|
531
526
|
ignore_validation = options[:ignore_language_directory_validation]
|
532
527
|
Loader.language_folders(options[:metadata_path], ignore_validation).each do |lang_folder|
|
533
|
-
language = File.basename(lang_folder)
|
534
528
|
(LOCALISED_VERSION_VALUES.keys + LOCALISED_APP_VALUES.keys).each do |key|
|
535
|
-
path = File.join(lang_folder, "#{key}.txt")
|
529
|
+
path = File.join(lang_folder.path, "#{key}.txt")
|
536
530
|
next unless File.exist?(path)
|
537
531
|
|
538
532
|
UI.message("Loading '#{path}'...")
|
539
533
|
options[key] ||= {}
|
540
|
-
options[key][language] ||= File.read(path)
|
534
|
+
options[key][lang_folder.language] ||= File.read(path)
|
541
535
|
end
|
542
536
|
end
|
543
537
|
|
@@ -251,70 +251,7 @@ module Deliver
|
|
251
251
|
|
252
252
|
def collect_screenshots(options)
|
253
253
|
return [] if options[:skip_screenshots]
|
254
|
-
return
|
255
|
-
end
|
256
|
-
|
257
|
-
def collect_screenshots_for_languages(path, ignore_validation)
|
258
|
-
screenshots = []
|
259
|
-
extensions = '{png,jpg,jpeg}'
|
260
|
-
|
261
|
-
available_languages = UploadScreenshots.available_languages.each_with_object({}) do |lang, lang_hash|
|
262
|
-
lang_hash[lang.downcase] = lang
|
263
|
-
end
|
264
|
-
|
265
|
-
Loader.language_folders(path, ignore_validation).each do |lng_folder|
|
266
|
-
language = File.basename(lng_folder)
|
267
|
-
|
268
|
-
# Check to see if we need to traverse multiple platforms or just a single platform
|
269
|
-
if language == Loader::APPLE_TV_DIR_NAME || language == Loader::IMESSAGE_DIR_NAME
|
270
|
-
screenshots.concat(collect_screenshots_for_languages(File.join(path, language), ignore_validation))
|
271
|
-
next
|
272
|
-
end
|
273
|
-
|
274
|
-
files = Dir.glob(File.join(lng_folder, "*.#{extensions}"), File::FNM_CASEFOLD).sort
|
275
|
-
next if files.count == 0
|
276
|
-
|
277
|
-
framed_screenshots_found = Dir.glob(File.join(lng_folder, "*_framed.#{extensions}"), File::FNM_CASEFOLD).count > 0
|
278
|
-
|
279
|
-
UI.important("Framed screenshots are detected! 🖼 Non-framed screenshot files may be skipped. 🏃") if framed_screenshots_found
|
280
|
-
|
281
|
-
language_dir_name = File.basename(lng_folder)
|
282
|
-
|
283
|
-
if available_languages[language_dir_name.downcase].nil?
|
284
|
-
UI.user_error!("#{language_dir_name} is not an available language. Please verify that your language codes are available in iTunesConnect. See https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/AppStoreTerritories.html for more information.")
|
285
|
-
end
|
286
|
-
|
287
|
-
language = available_languages[language_dir_name.downcase]
|
288
|
-
|
289
|
-
files.each do |file_path|
|
290
|
-
is_framed = file_path.downcase.include?("_framed.")
|
291
|
-
is_watch = file_path.downcase.include?("watch")
|
292
|
-
|
293
|
-
if framed_screenshots_found && !is_framed && !is_watch
|
294
|
-
UI.important("🏃 Skipping screenshot file: #{file_path}")
|
295
|
-
next
|
296
|
-
end
|
297
|
-
|
298
|
-
screenshots << AppScreenshot.new(file_path, language)
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
# Checking if the device type exists in spaceship
|
303
|
-
# Ex: iPhone 6.1 inch isn't supported in App Store Connect but need
|
304
|
-
# to have it in there for frameit support
|
305
|
-
unaccepted_device_shown = false
|
306
|
-
screenshots.select! do |screenshot|
|
307
|
-
exists = !screenshot.device_type.nil?
|
308
|
-
unless exists
|
309
|
-
UI.important("Unaccepted device screenshots are detected! 🚫 Screenshot file will be skipped. 🏃") unless unaccepted_device_shown
|
310
|
-
unaccepted_device_shown = true
|
311
|
-
|
312
|
-
UI.important("🏃 Skipping screenshot file: #{screenshot.path} - Not an accepted App Store Connect device...")
|
313
|
-
end
|
314
|
-
exists
|
315
|
-
end
|
316
|
-
|
317
|
-
return screenshots
|
254
|
+
return Loader.load_app_screenshots(options[:screenshots_path], options[:ignore_language_directory_validation])
|
318
255
|
end
|
319
256
|
|
320
257
|
# helper method so Spaceship::Tunes.client.available_languages is easier to test
|
Binary file
|
@@ -5,7 +5,7 @@ module Fastlane
|
|
5
5
|
PLATFORM_NAME = :PLATFORM_NAME
|
6
6
|
ENVIRONMENT = :ENVIRONMENT
|
7
7
|
|
8
|
-
# A
|
8
|
+
# A slightly decorated hash that will store and fetch sensitive data
|
9
9
|
# but not display it while iterating keys and values
|
10
10
|
class LaneContextValues < Hash
|
11
11
|
def initialize
|
@@ -6,7 +6,13 @@ module Fastlane
|
|
6
6
|
# lane name in lane_context could be nil because you can just call $fastlane add_git_tag which has no context
|
7
7
|
lane_name = Actions.lane_context[Actions::SharedValues::LANE_NAME].to_s.delete(' ') # no spaces allowed
|
8
8
|
|
9
|
-
|
9
|
+
if options[:tag]
|
10
|
+
tag = options[:tag]
|
11
|
+
elsif options[:build_number]
|
12
|
+
tag = "#{options[:grouping]}/#{lane_name}/#{options[:prefix]}#{options[:build_number]}#{options[:postfix]}"
|
13
|
+
else
|
14
|
+
UI.user_error!("No value found for 'tag' or 'build_number'. At least one of them must be provided. Note that if you do specify a tag, all other arguments are ignored.")
|
15
|
+
end
|
10
16
|
message = options[:message] || "#{tag} (fastlane)"
|
11
17
|
|
12
18
|
cmd = ['git tag']
|
@@ -64,7 +70,8 @@ module Fastlane
|
|
64
70
|
description: "The build number. Defaults to the result of increment_build_number if you\'re using it",
|
65
71
|
default_value: Actions.lane_context[Actions::SharedValues::BUILD_NUMBER],
|
66
72
|
default_value_dynamic: true,
|
67
|
-
is_string: false
|
73
|
+
is_string: false,
|
74
|
+
optional: true),
|
68
75
|
FastlaneCore::ConfigItem.new(key: :message,
|
69
76
|
env_name: "FL_GIT_TAG_MESSAGE",
|
70
77
|
description: "The tag message. Defaults to the tag's name",
|
@@ -55,7 +55,7 @@ module Fastlane
|
|
55
55
|
|
56
56
|
def self.run(params)
|
57
57
|
unless Helper.test?
|
58
|
-
UI.message("Install using `brew install
|
58
|
+
UI.message("Install using `brew install appledoc`")
|
59
59
|
UI.user_error!("appledoc not installed") if `which appledoc`.length == 0
|
60
60
|
end
|
61
61
|
|
@@ -282,6 +282,10 @@ launch_arguments([
|
|
282
282
|
])
|
283
283
|
```
|
284
284
|
|
285
|
+
## Xcode Environment Variables
|
286
|
+
|
287
|
+
_snapshot_ includes `FASTLANE_SNAPSHOT=YES` and `FASTLANE_LANGUAGE=<language>` as arguments when executing `xcodebuild`. This means you may use these environment variables in a custom build phase run script to do any additional configuration.
|
288
|
+
|
285
289
|
# How does it work?
|
286
290
|
|
287
291
|
The easiest solution would be to just render the UIWindow into a file. That's not possible because UI Tests don't run on a main thread. So _snapshot_ uses a different approach:
|
@@ -237,7 +237,7 @@ The `keyword.strings` and `title.strings` are standard `.strings` file you alrea
|
|
237
237
|
**Notes**
|
238
238
|
|
239
239
|
- These `.strings` files **MUST** be utf-8 (UTF-8) or utf-16 encoded (UTF-16 BE with BOM). They also must begin with an empty line. If you are having trouble see [issue #1740](https://github.com/fastlane/fastlane/issues/1740)
|
240
|
-
- You **MUST** provide a background if you want titles. _frameit_ will not add the
|
240
|
+
- You **MUST** provide a background if you want titles. _frameit_ will not add the titles if a background is not specified.
|
241
241
|
|
242
242
|
### Screenshot orientation
|
243
243
|
|
@@ -272,8 +272,8 @@ module Fastlane
|
|
272
272
|
FastlaneCore::ConfigItem.new(key: :binary_basename,
|
273
273
|
env_name: "FL_SLATHER_BINARY_BASENAME",
|
274
274
|
description: "Basename of the binary file, this should match the name of your bundle excluding its extension (i.e. YourApp [for YourApp.app bundle])",
|
275
|
-
|
276
|
-
|
275
|
+
type: Array,
|
276
|
+
optional: true),
|
277
277
|
FastlaneCore::ConfigItem.new(key: :binary_file,
|
278
278
|
env_name: "FL_SLATHER_BINARY_FILE",
|
279
279
|
description: "Binary file name to be used for code coverage",
|
@@ -11,6 +11,7 @@ module Fastlane
|
|
11
11
|
cmd << "--disable-sandbox" if params[:disable_sandbox]
|
12
12
|
cmd << "--verbose" if params[:verbose]
|
13
13
|
cmd << params[:command] if package_commands.include?(params[:command])
|
14
|
+
cmd << "--enable-code-coverage" if params[:enable_code_coverage] && params[:command] == 'generate-xcodeproj'
|
14
15
|
if params[:xcconfig]
|
15
16
|
cmd << "--xcconfig-overrides #{params[:xcconfig]}"
|
16
17
|
end
|
@@ -44,6 +45,11 @@ module Fastlane
|
|
44
45
|
verify_block: proc do |value|
|
45
46
|
UI.user_error!("Please pass a valid command. Use one of the following: #{available_commands.join(', ')}") unless available_commands.include?(value)
|
46
47
|
end),
|
48
|
+
FastlaneCore::ConfigItem.new(key: :enable_code_coverage,
|
49
|
+
env_name: "FL_SPM_ENABLE_CODE_COVERAGE",
|
50
|
+
description: "Enables code coverage for the generated Xcode project when using the generate-xcodeproj command",
|
51
|
+
is_string: false,
|
52
|
+
optional: true),
|
47
53
|
FastlaneCore::ConfigItem.new(key: :build_path,
|
48
54
|
env_name: "FL_SPM_BUILD_PATH",
|
49
55
|
description: "Specify build/cache directory [default: ./.build]",
|
@@ -45,25 +45,36 @@ module Fastlane
|
|
45
45
|
end
|
46
46
|
|
47
47
|
# suppress updater output - very noisy
|
48
|
-
Gem::DefaultUserInteraction.ui = Gem::SilentUI.new
|
48
|
+
Gem::DefaultUserInteraction.ui = Gem::SilentUI.new unless FastlaneCore::Globals.verbose?
|
49
49
|
|
50
50
|
update_needed.each do |tool_info|
|
51
|
-
tool = tool_info
|
51
|
+
tool = self.get_gem_name(tool_info)
|
52
52
|
local_version = Gem::Version.new(highest_versions[tool].version)
|
53
53
|
latest_official_version = FastlaneCore::UpdateChecker.fetch_latest(tool)
|
54
54
|
|
55
55
|
UI.message("Updating #{tool} from #{local_version.to_s.yellow} to #{latest_official_version.to_s.yellow}... 🚀")
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
if Helper.homebrew?
|
58
|
+
Helper.backticks('brew upgrade fastlane')
|
59
|
+
else
|
60
|
+
# Approximate_recommendation will create a string like "~> 0.10" from a version 0.10.0, e.g. one that is valid for versions >= 0.10 and <1.0
|
61
|
+
requirement_version = local_version.approximate_recommendation
|
62
|
+
updater.update_gem(tool, Gem::Requirement.new(requirement_version))
|
63
|
+
end
|
60
64
|
|
61
65
|
UI.success("Finished updating #{tool}")
|
62
66
|
end
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
|
68
|
+
unless Helper.homebrew?
|
69
|
+
UI.message("Cleaning up old versions...")
|
70
|
+
cleaner.options[:args] = tools_to_update
|
71
|
+
cleaner.execute
|
72
|
+
end
|
73
|
+
|
74
|
+
if FastlaneCore::FastlaneFolder.swift?
|
75
|
+
upgrader = SwiftRunnerUpgrader.new
|
76
|
+
upgrader.upgrade_if_needed!
|
77
|
+
end
|
67
78
|
|
68
79
|
UI.message("fastlane.tools successfully updated! I will now restart myself... 😴")
|
69
80
|
|
@@ -71,6 +82,16 @@ module Fastlane
|
|
71
82
|
exec("FL_NO_UPDATE=true #{$PROGRAM_NAME} #{ARGV.join(' ')}")
|
72
83
|
end
|
73
84
|
|
85
|
+
def self.get_gem_name(tool_info)
|
86
|
+
if tool_info.kind_of?(Array)
|
87
|
+
return tool_info[0]
|
88
|
+
elsif tool_info.respond_to?(:name) # Gem::NameTuple in RubyGems >= 3.1.0
|
89
|
+
return tool_info.name
|
90
|
+
else
|
91
|
+
UI.crash!("Unknown gem update information returned from RubyGems. Please file a new issue for this... 🤷")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
74
95
|
def self.description
|
75
96
|
"Makes sure fastlane-tools are up-to-date when running fastlane"
|
76
97
|
end
|
@@ -9,9 +9,9 @@ module Fastlane
|
|
9
9
|
|
10
10
|
begin
|
11
11
|
config.load_configuration_file("Deliverfile")
|
12
|
-
config[:screenshots_path]
|
13
|
-
config[:ipa]
|
14
|
-
config[:pkg]
|
12
|
+
config[:screenshots_path] ||= Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] if Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
|
13
|
+
config[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] if Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
|
14
|
+
config[:pkg] ||= Actions.lane_context[SharedValues::PKG_OUTPUT_PATH] if Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
|
15
15
|
config[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
|
16
16
|
|
17
17
|
return config if Helper.test?
|
@@ -17,7 +17,7 @@ module Fastlane
|
|
17
17
|
if installer.installed?(params[:version])
|
18
18
|
UI.success("Xcode #{params[:version]} is already installed ✨")
|
19
19
|
else
|
20
|
-
installer.install_version(params[:version], true, true, true, true)
|
20
|
+
installer.install_version(params[:version], true, true, true, true, nil, true, nil, params[:download_retry_attempts])
|
21
21
|
end
|
22
22
|
|
23
23
|
xcode = installer.installed_versions.find { |x| x.version == params[:version] }
|
@@ -49,9 +49,7 @@ module Fastlane
|
|
49
49
|
[
|
50
50
|
FastlaneCore::ConfigItem.new(key: :version,
|
51
51
|
env_name: "FL_XCODE_VERSION",
|
52
|
-
description: "The version number of the version of Xcode to install",
|
53
|
-
verify_block: proc do |value|
|
54
|
-
end),
|
52
|
+
description: "The version number of the version of Xcode to install"),
|
55
53
|
FastlaneCore::ConfigItem.new(key: :username,
|
56
54
|
short_option: "-u",
|
57
55
|
env_name: "XCODE_INSTALL_USER",
|
@@ -65,7 +63,12 @@ module Fastlane
|
|
65
63
|
optional: true,
|
66
64
|
code_gen_sensitive: true,
|
67
65
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
|
68
|
-
default_value_dynamic: true)
|
66
|
+
default_value_dynamic: true),
|
67
|
+
FastlaneCore::ConfigItem.new(key: :download_retry_attempts,
|
68
|
+
env_name: "XCODE_INSTALL_DOWNLOAD_RETRY_ATTEMPTS",
|
69
|
+
description: "Number of times the download will be retried in case of failure",
|
70
|
+
type: Integer,
|
71
|
+
default_value: 3)
|
69
72
|
]
|
70
73
|
end
|
71
74
|
|
@@ -123,9 +123,9 @@ module Fastlane
|
|
123
123
|
end
|
124
124
|
|
125
125
|
# Since loading dotenv should respect additional environments passed using
|
126
|
-
# --env, we must
|
126
|
+
# --env, we must extract the arguments out of ARGV and process them before
|
127
127
|
# calling into commander. This is required since the ENV must be configured
|
128
|
-
# before running any other commands in order to
|
128
|
+
# before running any other commands in order to correctly respect variables
|
129
129
|
# like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
|
130
130
|
def load_dot_env
|
131
131
|
env_cl_param = lambda do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Use this file as the place to register Feature switches for the
|
1
|
+
# Use this file as the place to register Feature switches for the fastlane_core project
|
2
2
|
|
3
3
|
# FastlaneCore::Feature.register(env_var: 'YOUR_FEATURE_SWITCH_ENV_VAR',
|
4
4
|
# description: 'Describe what this feature switch controls')
|
@@ -136,7 +136,7 @@ module Fastlane
|
|
136
136
|
type = "[String]"
|
137
137
|
elsif default_value.kind_of?(Hash)
|
138
138
|
type = "[String : Any]"
|
139
|
-
#
|
139
|
+
# Although we can have a default value of Integer type, if param_type_override overridden that value, respect it.
|
140
140
|
elsif default_value.kind_of?(Integer)
|
141
141
|
if type == "Double" || type == "Float"
|
142
142
|
begin
|
@@ -76,7 +76,7 @@ public func addGitTag(tag: String? = nil,
|
|
76
76
|
grouping: String = "builds",
|
77
77
|
prefix: String = "",
|
78
78
|
postfix: String = "",
|
79
|
-
buildNumber: Any,
|
79
|
+
buildNumber: Any? = nil,
|
80
80
|
message: String? = nil,
|
81
81
|
commit: String? = nil,
|
82
82
|
force: Bool = false,
|
@@ -981,6 +981,7 @@ public func buildAndroidApp(task: String? = nil,
|
|
981
981
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
982
982
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
983
983
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
984
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
984
985
|
|
985
986
|
- returns: The absolute path to the generated ipa file
|
986
987
|
|
@@ -1029,7 +1030,8 @@ public func buildApp(workspace: String? = nil,
|
|
1029
1030
|
analyzeBuildTime: Bool? = nil,
|
1030
1031
|
xcprettyUtf: Bool? = nil,
|
1031
1032
|
skipProfileDetection: Bool = false,
|
1032
|
-
clonedSourcePackagesPath: String? = nil
|
1033
|
+
clonedSourcePackagesPath: String? = nil,
|
1034
|
+
useSystemScm: Bool = false)
|
1033
1035
|
{
|
1034
1036
|
let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1035
1037
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1074,7 +1076,8 @@ public func buildApp(workspace: String? = nil,
|
|
1074
1076
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
1075
1077
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
1076
1078
|
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1077
|
-
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)
|
1079
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
1080
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1078
1081
|
_ = runner.executeCommand(command)
|
1079
1082
|
}
|
1080
1083
|
|
@@ -1123,6 +1126,7 @@ public func buildApp(workspace: String? = nil,
|
|
1123
1126
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1124
1127
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1125
1128
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1129
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
1126
1130
|
|
1127
1131
|
- returns: The absolute path to the generated ipa file
|
1128
1132
|
|
@@ -1168,7 +1172,8 @@ public func buildIosApp(workspace: String? = nil,
|
|
1168
1172
|
analyzeBuildTime: Bool? = nil,
|
1169
1173
|
xcprettyUtf: Bool? = nil,
|
1170
1174
|
skipProfileDetection: Bool = false,
|
1171
|
-
clonedSourcePackagesPath: String? = nil
|
1175
|
+
clonedSourcePackagesPath: String? = nil,
|
1176
|
+
useSystemScm: Bool = false)
|
1172
1177
|
{
|
1173
1178
|
let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1174
1179
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1210,7 +1215,8 @@ public func buildIosApp(workspace: String? = nil,
|
|
1210
1215
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
1211
1216
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
1212
1217
|
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1213
|
-
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)
|
1218
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
1219
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1214
1220
|
_ = runner.executeCommand(command)
|
1215
1221
|
}
|
1216
1222
|
|
@@ -1260,6 +1266,7 @@ public func buildIosApp(workspace: String? = nil,
|
|
1260
1266
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1261
1267
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1262
1268
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1269
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
1263
1270
|
|
1264
1271
|
- returns: The absolute path to the generated ipa file
|
1265
1272
|
|
@@ -1306,7 +1313,8 @@ public func buildMacApp(workspace: String? = nil,
|
|
1306
1313
|
analyzeBuildTime: Bool? = nil,
|
1307
1314
|
xcprettyUtf: Bool? = nil,
|
1308
1315
|
skipProfileDetection: Bool = false,
|
1309
|
-
clonedSourcePackagesPath: String? = nil
|
1316
|
+
clonedSourcePackagesPath: String? = nil,
|
1317
|
+
useSystemScm: Bool = false)
|
1310
1318
|
{
|
1311
1319
|
let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1312
1320
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -1349,7 +1357,8 @@ public func buildMacApp(workspace: String? = nil,
|
|
1349
1357
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
1350
1358
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
1351
1359
|
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1352
|
-
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)
|
1360
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
1361
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
1353
1362
|
_ = runner.executeCommand(command)
|
1354
1363
|
}
|
1355
1364
|
|
@@ -1861,9 +1870,9 @@ public func carthage(command: String = "bootstrap",
|
|
1861
1870
|
- filename: The filename of certificate to store
|
1862
1871
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
1863
1872
|
- keychainPath: Path to a custom keychain
|
1864
|
-
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
1873
|
+
- 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
|
1865
1874
|
- 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
|
1866
|
-
- platform: Set the provisioning profile's platform (ios, macos)
|
1875
|
+
- platform: Set the provisioning profile's platform (ios, macos, tvos)
|
1867
1876
|
|
1868
1877
|
**Important**: 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 certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
1869
1878
|
Use this action to download the latest code signing identity.
|
@@ -3349,9 +3358,9 @@ public func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
3349
3358
|
- filename: The filename of certificate to store
|
3350
3359
|
- outputPath: The path to a directory in which all certificates and private keys should be stored
|
3351
3360
|
- keychainPath: Path to a custom keychain
|
3352
|
-
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
3361
|
+
- 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
|
3353
3362
|
- 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
|
3354
|
-
- platform: Set the provisioning profile's platform (ios, macos)
|
3363
|
+
- platform: Set the provisioning profile's platform (ios, macos, tvos)
|
3355
3364
|
|
3356
3365
|
**Important**: 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 certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.
|
3357
3366
|
Use this action to download the latest code signing identity.
|
@@ -3992,6 +4001,7 @@ public func gradle(task: String? = nil,
|
|
3992
4001
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
3993
4002
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
3994
4003
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
4004
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
3995
4005
|
|
3996
4006
|
- returns: The absolute path to the generated ipa file
|
3997
4007
|
|
@@ -4040,7 +4050,8 @@ public func gym(workspace: Any? = gymfile.workspace,
|
|
4040
4050
|
analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
|
4041
4051
|
xcprettyUtf: Bool? = gymfile.xcprettyUtf,
|
4042
4052
|
skipProfileDetection: Bool = gymfile.skipProfileDetection,
|
4043
|
-
clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath
|
4053
|
+
clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
|
4054
|
+
useSystemScm: Bool = gymfile.useSystemScm)
|
4044
4055
|
{
|
4045
4056
|
let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
4046
4057
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -4085,7 +4096,8 @@ public func gym(workspace: Any? = gymfile.workspace,
|
|
4085
4096
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
4086
4097
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
4087
4098
|
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
4088
|
-
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)
|
4099
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
4100
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
|
4089
4101
|
_ = runner.executeCommand(command)
|
4090
4102
|
}
|
4091
4103
|
|
@@ -4743,12 +4755,12 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4743
4755
|
Alias for the `sync_code_signing` action
|
4744
4756
|
|
4745
4757
|
- parameters:
|
4746
|
-
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
|
4758
|
+
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
|
4747
4759
|
- additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
4748
4760
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
4749
4761
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
4750
4762
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
4751
|
-
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
4763
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
4752
4764
|
- 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)
|
4753
4765
|
- 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)
|
4754
4766
|
- username: Your Apple ID Username
|
@@ -4773,7 +4785,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4773
4785
|
- s3Bucket: Name of the S3 bucket
|
4774
4786
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
4775
4787
|
- keychainName: Keychain the items should be imported to
|
4776
|
-
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
4788
|
+
- 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
|
4777
4789
|
- force: Renew the provisioning profiles every time you run match
|
4778
4790
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
|
4779
4791
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
@@ -6077,9 +6089,11 @@ public func rubyVersion() {
|
|
6077
6089
|
- skipSlack: Don't publish to slack, even when an URL is given
|
6078
6090
|
- slackOnlyOnFailure: Only post on Slack if the tests fail
|
6079
6091
|
- destination: Use only if you're a pro, use the other options instead
|
6092
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
6080
6093
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
6081
6094
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
6082
6095
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
6096
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
6083
6097
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
6084
6098
|
|
6085
6099
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -6143,9 +6157,11 @@ public func runTests(workspace: String? = nil,
|
|
6143
6157
|
skipSlack: Bool = false,
|
6144
6158
|
slackOnlyOnFailure: Bool = false,
|
6145
6159
|
destination: Any? = nil,
|
6160
|
+
catalystPlatform: String? = nil,
|
6146
6161
|
customReportFileName: String? = nil,
|
6147
6162
|
xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
|
6148
6163
|
clonedSourcePackagesPath: String? = nil,
|
6164
|
+
useSystemScm: Bool = false,
|
6149
6165
|
failBuild: Bool = true)
|
6150
6166
|
{
|
6151
6167
|
let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -6207,9 +6223,11 @@ public func runTests(workspace: String? = nil,
|
|
6207
6223
|
RubyCommand.Argument(name: "skip_slack", value: skipSlack),
|
6208
6224
|
RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
|
6209
6225
|
RubyCommand.Argument(name: "destination", value: destination),
|
6226
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
6210
6227
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
6211
6228
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
6212
6229
|
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
6230
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
|
6213
6231
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
6214
6232
|
_ = runner.executeCommand(command)
|
6215
6233
|
}
|
@@ -6353,9 +6371,11 @@ public func say(text: Any,
|
|
6353
6371
|
- skipSlack: Don't publish to slack, even when an URL is given
|
6354
6372
|
- slackOnlyOnFailure: Only post on Slack if the tests fail
|
6355
6373
|
- destination: Use only if you're a pro, use the other options instead
|
6374
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
6356
6375
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
6357
6376
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
6358
6377
|
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
6378
|
+
- useSystemScm: Lets xcodebuild use system's scm configuration
|
6359
6379
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
6360
6380
|
|
6361
6381
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -6419,9 +6439,11 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6419
6439
|
skipSlack: Bool = scanfile.skipSlack,
|
6420
6440
|
slackOnlyOnFailure: Bool = scanfile.slackOnlyOnFailure,
|
6421
6441
|
destination: Any? = scanfile.destination,
|
6442
|
+
catalystPlatform: Any? = scanfile.catalystPlatform,
|
6422
6443
|
customReportFileName: Any? = scanfile.customReportFileName,
|
6423
6444
|
xcodebuildCommand: Any = scanfile.xcodebuildCommand,
|
6424
6445
|
clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
|
6446
|
+
useSystemScm: Bool = scanfile.useSystemScm,
|
6425
6447
|
failBuild: Bool = scanfile.failBuild)
|
6426
6448
|
{
|
6427
6449
|
let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -6483,9 +6505,11 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6483
6505
|
RubyCommand.Argument(name: "skip_slack", value: skipSlack),
|
6484
6506
|
RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
|
6485
6507
|
RubyCommand.Argument(name: "destination", value: destination),
|
6508
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
6486
6509
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
6487
6510
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
6488
6511
|
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
6512
|
+
RubyCommand.Argument(name: "use_system_scm", value: useSystemScm),
|
6489
6513
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
6490
6514
|
_ = runner.executeCommand(command)
|
6491
6515
|
}
|
@@ -7119,7 +7143,7 @@ public func slather(buildDirectory: String? = nil,
|
|
7119
7143
|
ignore: [String]? = nil,
|
7120
7144
|
verbose: Bool? = nil,
|
7121
7145
|
useBundleExec: Bool = false,
|
7122
|
-
binaryBasename:
|
7146
|
+
binaryBasename: [String]? = nil,
|
7123
7147
|
binaryFile: [String]? = nil,
|
7124
7148
|
arch: String? = nil,
|
7125
7149
|
sourceFiles: Bool = false,
|
@@ -7439,6 +7463,7 @@ public func splunkmint(dsym: String? = nil,
|
|
7439
7463
|
|
7440
7464
|
- parameters:
|
7441
7465
|
- command: The swift command (one of: build, test, clean, reset, update, resolve, generate-xcodeproj, init)
|
7466
|
+
- enableCodeCoverage: Enables code coverage for the generated Xcode project when using the generate-xcodeproj command
|
7442
7467
|
- buildPath: Specify build/cache directory [default: ./.build]
|
7443
7468
|
- packagePath: Change working directory before any other operation
|
7444
7469
|
- xcconfig: Use xcconfig file to override swift package generate-xcodeproj defaults
|
@@ -7449,6 +7474,7 @@ public func splunkmint(dsym: String? = nil,
|
|
7449
7474
|
- verbose: Increase verbosity of informational output
|
7450
7475
|
*/
|
7451
7476
|
public func spm(command: String = "build",
|
7477
|
+
enableCodeCoverage: Any? = nil,
|
7452
7478
|
buildPath: String? = nil,
|
7453
7479
|
packagePath: String? = nil,
|
7454
7480
|
xcconfig: String? = nil,
|
@@ -7459,6 +7485,7 @@ public func spm(command: String = "build",
|
|
7459
7485
|
verbose: Bool = false)
|
7460
7486
|
{
|
7461
7487
|
let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
|
7488
|
+
RubyCommand.Argument(name: "enable_code_coverage", value: enableCodeCoverage),
|
7462
7489
|
RubyCommand.Argument(name: "build_path", value: buildPath),
|
7463
7490
|
RubyCommand.Argument(name: "package_path", value: packagePath),
|
7464
7491
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
@@ -7508,7 +7535,7 @@ public func ssh(username: String,
|
|
7508
7535
|
- versionCode: Version code (used when updating rollout or promoting specific versions)
|
7509
7536
|
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
7510
7537
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
7511
|
-
- rollout: The percentage of the user fraction when uploading to the rollout track
|
7538
|
+
- rollout: The percentage of the user fraction when uploading to the rollout track (setting to 1 will complete the rollout)
|
7512
7539
|
- metadataPath: Path to the directory containing the metadata files
|
7513
7540
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
7514
7541
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
@@ -7673,12 +7700,12 @@ public func swiftlint(mode: Any = "lint",
|
|
7673
7700
|
Easily sync your certificates and profiles across your team (via _match_)
|
7674
7701
|
|
7675
7702
|
- parameters:
|
7676
|
-
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
|
7703
|
+
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
|
7677
7704
|
- additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
7678
7705
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
7679
7706
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
7680
7707
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
7681
|
-
- appIdentifier: The bundle identifier(s) of your app (comma-separated)
|
7708
|
+
- appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
|
7682
7709
|
- 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)
|
7683
7710
|
- 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)
|
7684
7711
|
- username: Your Apple ID Username
|
@@ -7703,7 +7730,7 @@ public func swiftlint(mode: Any = "lint",
|
|
7703
7730
|
- s3Bucket: Name of the S3 bucket
|
7704
7731
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
7705
7732
|
- keychainName: Keychain the items should be imported to
|
7706
|
-
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
7733
|
+
- 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
|
7707
7734
|
- force: Renew the provisioning profiles every time you run match
|
7708
7735
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
|
7709
7736
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
@@ -8683,7 +8710,7 @@ public func uploadToAppStore(apiKeyPath: String? = nil,
|
|
8683
8710
|
- versionCode: Version code (used when updating rollout or promoting specific versions)
|
8684
8711
|
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
8685
8712
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
8686
|
-
- rollout: The percentage of the user fraction when uploading to the rollout track
|
8713
|
+
- rollout: The percentage of the user fraction when uploading to the rollout track (setting to 1 will complete the rollout)
|
8687
8714
|
- metadataPath: Path to the directory containing the metadata files
|
8688
8715
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
8689
8716
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
@@ -9116,6 +9143,7 @@ public func xcexport() {
|
|
9116
9143
|
- version: The version number of the version of Xcode to install
|
9117
9144
|
- username: Your Apple ID Username
|
9118
9145
|
- teamId: The ID of your team if you're in multiple teams
|
9146
|
+
- downloadRetryAttempts: Number of times the download will be retried in case of failure
|
9119
9147
|
|
9120
9148
|
- returns: The path to the newly installed Xcode version
|
9121
9149
|
|
@@ -9123,11 +9151,13 @@ public func xcexport() {
|
|
9123
9151
|
*/
|
9124
9152
|
@discardableResult public func xcodeInstall(version: String,
|
9125
9153
|
username: String,
|
9126
|
-
teamId: String? = nil
|
9154
|
+
teamId: String? = nil,
|
9155
|
+
downloadRetryAttempts: Int = 3) -> String
|
9127
9156
|
{
|
9128
9157
|
let command = RubyCommand(commandID: "", methodName: "xcode_install", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
|
9129
9158
|
RubyCommand.Argument(name: "username", value: username),
|
9130
|
-
RubyCommand.Argument(name: "team_id", value: teamId)
|
9159
|
+
RubyCommand.Argument(name: "team_id", value: teamId),
|
9160
|
+
RubyCommand.Argument(name: "download_retry_attempts", value: downloadRetryAttempts)])
|
9131
9161
|
return runner.executeCommand(command)
|
9132
9162
|
}
|
9133
9163
|
|
@@ -9253,7 +9283,7 @@ public func xcov(workspace: String? = nil,
|
|
9253
9283
|
coverallsServiceJobId: String? = nil,
|
9254
9284
|
coverallsRepoToken: String? = nil,
|
9255
9285
|
xcconfig: String? = nil,
|
9256
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
9286
|
+
ideFoundationPath: String = "/Applications/Xcode-12.2.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
9257
9287
|
legacySupport: Bool = false)
|
9258
9288
|
{
|
9259
9289
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -9399,4 +9429,4 @@ public let snapshotfile = Snapshotfile()
|
|
9399
9429
|
|
9400
9430
|
// Please don't remove the lines below
|
9401
9431
|
// They are used to detect outdated files
|
9402
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9432
|
+
// FastlaneRunnerAPIVersion [0.9.105]
|