fastlane 2.147.0 → 2.148.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/cert/lib/cert/commands_generator.rb +1 -0
  4. data/credentials_manager/lib/credentials_manager/cli.rb +2 -0
  5. data/deliver/lib/deliver/commands_generator.rb +1 -0
  6. data/deliver/lib/deliver/html_generator.rb +2 -2
  7. data/deliver/lib/deliver/submit_for_review.rb +5 -1
  8. data/fastlane/lib/fastlane/actions/crashlytics.rb +0 -4
  9. data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -1
  10. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
  11. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +12 -0
  12. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/swiftlint.rb +14 -0
  15. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/xcodebuild.rb +4 -4
  18. data/fastlane/lib/fastlane/cli_tools_distributor.rb +28 -6
  19. data/fastlane/lib/fastlane/commands_generator.rb +1 -1
  20. data/fastlane/lib/fastlane/lane_manager.rb +0 -10
  21. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -2
  22. data/fastlane/lib/fastlane/swift_lane_manager.rb +0 -8
  23. data/fastlane/lib/fastlane/version.rb +1 -1
  24. data/fastlane/swift/Deliverfile.swift +1 -1
  25. data/fastlane/swift/Fastlane.swift +68 -15
  26. data/fastlane/swift/Gymfile.swift +1 -1
  27. data/fastlane/swift/LaneFileProtocol.swift +5 -2
  28. data/fastlane/swift/Matchfile.swift +1 -1
  29. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  30. data/fastlane/swift/Precheckfile.swift +1 -1
  31. data/fastlane/swift/Scanfile.swift +1 -1
  32. data/fastlane/swift/ScanfileProtocol.swift +9 -1
  33. data/fastlane/swift/Screengrabfile.swift +1 -1
  34. data/fastlane/swift/Snapshotfile.swift +1 -1
  35. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  36. data/frameit/lib/frameit/commands_generator.rb +1 -0
  37. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  38. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +4 -0
  39. data/gym/lib/gym/runner.rb +14 -0
  40. data/match/lib/match/commands_generator.rb +1 -0
  41. data/match/lib/match/generator.rb +2 -1
  42. data/match/lib/match/options.rb +18 -1
  43. data/pem/lib/pem/commands_generator.rb +1 -0
  44. data/pilot/lib/pilot/build_manager.rb +23 -7
  45. data/pilot/lib/pilot/options.rb +5 -0
  46. data/produce/lib/produce/commands_generator.rb +1 -0
  47. data/scan/lib/scan/detect_values.rb +3 -0
  48. data/scan/lib/scan/options.rb +19 -1
  49. data/scan/lib/scan/test_command_generator.rb +6 -1
  50. data/screengrab/lib/screengrab/runner.rb +10 -9
  51. data/sigh/lib/sigh/commands_generator.rb +1 -0
  52. data/sigh/lib/sigh/options.rb +7 -1
  53. data/sigh/lib/sigh/runner.rb +2 -1
  54. data/snapshot/lib/assets/SnapshotHelper.swift +12 -33
  55. data/snapshot/lib/snapshot/.options.rb.swp +0 -0
  56. data/snapshot/lib/snapshot/.test_command_generator_base.rb.swp +0 -0
  57. data/snapshot/lib/snapshot/detect_values.rb +15 -0
  58. data/snapshot/lib/snapshot/options.rb +22 -1
  59. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +3 -1
  60. data/snapshot/lib/snapshot/test_command_generator_base.rb +7 -1
  61. data/spaceship/lib/spaceship/commands_generator.rb +1 -0
  62. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
  63. data/supply/lib/supply/commands_generator.rb +1 -0
  64. data/supply/lib/supply/options.rb +9 -0
  65. data/supply/lib/supply/uploader.rb +4 -0
  66. metadata +25 -24
  67. data/supply/lib/supply/.client.rb.swp +0 -0
@@ -83,7 +83,7 @@ module Fastlane
83
83
  end
84
84
 
85
85
  def self.is_supported?(platform)
86
- platform == :ios
86
+ [:ios, :mac].include?(platform)
87
87
  end
88
88
 
89
89
  def self.example_code
@@ -130,7 +130,7 @@ module Fastlane
130
130
  end
131
131
 
132
132
  def self.find_binary_path(params)
133
- params[:binary_path] ||= (Dir["/Applications/Fabric.app/**/upload-symbols"] + Dir["./Pods/Fabric/upload-symbols"] + Dir["./Pods/FirebaseCrashlytics/upload-symbols"]).last
133
+ params[:binary_path] ||= (Dir["/Applications/Fabric.app/**/upload-symbols"] + Dir["./Pods/Fabric/upload-symbols"] + Dir["./scripts/upload-symbols"] + Dir["./Pods/FirebaseCrashlytics/upload-symbols"]).last
134
134
  UI.user_error!("Failed to find Fabric's upload_symbols binary at /Applications/Fabric.app/**/upload-symbols or ./Pods/**/upload-symbols. Please specify the location of the binary explicitly by using the binary_path option") unless params[:binary_path]
135
135
 
136
136
  params[:binary_path] = File.expand_path(params[:binary_path])
@@ -307,10 +307,10 @@ module Fastlane
307
307
  export_options[:teamID] = CredentialsManager::AppfileConfig.try_fetch_value(:team_id) if !export_options[:teamID] && CredentialsManager::AppfileConfig.try_fetch_value(:team_id)
308
308
  export_options[:onDemandResourcesAssetPacksBaseURL] = URI.escape(export_options[:onDemandResourcesAssetPacksBaseURL]) if export_options[:onDemandResourcesAssetPacksBaseURL]
309
309
  if export_options[:manifest]
310
- export_options[:manifest][:appURL] = URI.escape(export_options[:manifest][:appURL]) if export_options[:manifest][:appURL]
311
- export_options[:manifest][:displayImageURL] = URI.escape(export_options[:manifest][:displayImageURL]) if export_options[:manifest][:displayImageURL]
312
- export_options[:manifest][:fullSizeImageURL] = URI.escape(export_options[:manifest][:fullSizeImageURL]) if export_options[:manifest][:fullSizeImageURL]
313
- export_options[:manifest][:assetPackManifestURL] = URI.escape(export_options[:manifest][:assetPackManifestURL]) if export_options[:manifest][:assetPackManifestURL]
310
+ export_options[:manifest][:appURL] = URI.encode_www_form_component(export_options[:manifest][:appURL]) if export_options[:manifest][:appURL]
311
+ export_options[:manifest][:displayImageURL] = URI.encode_www_form_component(export_options[:manifest][:displayImageURL]) if export_options[:manifest][:displayImageURL]
312
+ export_options[:manifest][:fullSizeImageURL] = URI.encode_www_form_component(export_options[:manifest][:fullSizeImageURL]) if export_options[:manifest][:fullSizeImageURL]
313
+ export_options[:manifest][:assetPackManifestURL] = URI.encode_www_form_component(export_options[:manifest][:assetPackManifestURL]) if export_options[:manifest][:assetPackManifestURL]
314
314
  end
315
315
 
316
316
  # Saves options to plist
@@ -44,6 +44,12 @@ module Fastlane
44
44
  else
45
45
  require "fastlane"
46
46
  end
47
+
48
+ # Loading any .env files before any lanes are called since
49
+ # variables like FASTLANE_HIDE_CHANGELOG, SKIP_SLOW_FASTLANE_WARNING
50
+ # and FASTLANE_DISABLE_COLORS need to be set early on in execution
51
+ load_dot_env
52
+
47
53
  # We want to avoid printing output other than the version number if we are running `fastlane -v`
48
54
  unless running_version_command? || running_init_command?
49
55
  print_bundle_exec_warning(is_slow: (Time.now - before_import_time > 3))
@@ -59,12 +65,6 @@ module Fastlane
59
65
  end
60
66
  end
61
67
 
62
- # Loading any .env files before any lanes are called since
63
- # variables like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
64
- # need to be set early on in execution
65
- require 'fastlane/helper/dotenv_helper'
66
- Fastlane::Helper::DotenvHelper.load_dot_env(nil)
67
-
68
68
  # Needs to go after load_dot_env for variable FASTLANE_SKIP_UPDATE_CHECK
69
69
  FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
70
70
 
@@ -122,6 +122,28 @@ module Fastlane
122
122
  FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
123
123
  end
124
124
 
125
+ # Since loading dotenv should respect additional environments passed using
126
+ # --env, we must extrat the arguments out of ARGV and process them before
127
+ # calling into commander. This is required since the ENV must be configured
128
+ # before running any other commands in order to correclty respect variables
129
+ # like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
130
+ def load_dot_env
131
+ env_cl_param = lambda do
132
+ index = ARGV.index("--env")
133
+ return nil if index.nil?
134
+ ARGV.delete_at(index)
135
+
136
+ return nil if ARGV[index].nil?
137
+ value = ARGV[index]
138
+ ARGV.delete_at(index)
139
+
140
+ value
141
+ end
142
+
143
+ require 'fastlane/helper/dotenv_helper'
144
+ Fastlane::Helper::DotenvHelper.load_dot_env(env_cl_param.call)
145
+ end
146
+
125
147
  # Since fastlane also supports the rocket and biceps emoji as executable
126
148
  # we need to map those to the appropriate tools
127
149
  def process_emojis(tool_name)
@@ -93,13 +93,13 @@ module Fastlane
93
93
  FastlaneCore::Globals.verbose = true
94
94
  end
95
95
  global_option('--troubleshoot', 'Enables extended verbose mode. Use with caution, as this even includes ALL sensitive data. Cannot be used on CI.')
96
+ global_option('--env STRING[,STRING2]', String, 'Add environment(s) to use with `dotenv`')
96
97
 
97
98
  always_trace!
98
99
 
99
100
  command :trigger do |c|
100
101
  c.syntax = 'fastlane [lane]'
101
102
  c.description = 'Run a specific lane. Pass the lane name and optionally the platform first.'
102
- c.option('--env STRING[,STRING2]', String, 'Add environment(s) to use with `dotenv`')
103
103
  c.option('--disable_runner_upgrades', 'Prevents fastlane from attempting to update FastlaneRunner swift project')
104
104
  c.option('--swift_server_port INT', 'Set specific port to communicate between fastlane and FastlaneRunner')
105
105
 
@@ -7,7 +7,6 @@ module Fastlane
7
7
  # @param parameters [Hash] The parameters passed from the command line to the lane
8
8
  # @param env Dot Env Information
9
9
  # @param A custom Fastfile path, this is used by fastlane.ci
10
- # rubocop:disable Metrics/PerceivedComplexity
11
10
  def self.cruise_lane(platform, lane, parameters = nil, env = nil, fastfile_path = nil)
12
11
  UI.user_error!("lane must be a string") unless lane.kind_of?(String) || lane.nil?
13
12
  UI.user_error!("platform must be a string") unless platform.kind_of?(String) || platform.nil?
@@ -42,14 +41,6 @@ module Fastlane
42
41
 
43
42
  platform, lane = choose_lane(ff, platform) unless lane
44
43
 
45
- # xcodeproj has a bug in certain versions that causes it to change directories
46
- # and not return to the original working directory
47
- # https://github.com/CocoaPods/Xcodeproj/issues/426
48
- # Setting this environment variable causes xcodeproj to work around the problem
49
- ENV["FORK_XCODE_WRITING"] = "true" unless platform == 'android'
50
-
51
- Fastlane::Helper::DotenvHelper.load_dot_env(env)
52
-
53
44
  started = Time.now
54
45
  e = nil
55
46
  begin
@@ -77,7 +68,6 @@ module Fastlane
77
68
 
78
69
  return ff
79
70
  end
80
- # rubocop:enable Metrics/PerceivedComplexity
81
71
 
82
72
  def self.skip_docs?
83
73
  Helper.test? || FastlaneCore::Env.truthy?("FASTLANE_SKIP_DOCS")
@@ -159,7 +159,7 @@ module Fastlane
159
159
  require 'json'
160
160
  url = "https://rubygems.org/api/v1/gems/#{gem_name}.json"
161
161
  begin
162
- JSON.parse(open(url).read)
162
+ JSON.parse(URI.open(url).read)
163
163
  rescue
164
164
  nil
165
165
  end
@@ -215,7 +215,7 @@ module Fastlane
215
215
  # Bundler.with_clean_env solves this problem by resetting Bundler state before the
216
216
  # exec'd call gets merged into this process.
217
217
 
218
- Bundler.with_clean_env do
218
+ Bundler.with_original_env do
219
219
  yield if block_given?
220
220
  end
221
221
  end
@@ -14,14 +14,6 @@ module Fastlane
14
14
  ENV["FASTLANE_LANE_NAME"] = lane
15
15
  Actions.lane_context[Actions::SharedValues::LANE_NAME] = lane
16
16
 
17
- # xcodeproj has a bug in certain versions that causes it to change directories
18
- # and not return to the original working directory
19
- # https://github.com/CocoaPods/Xcodeproj/issues/426
20
- # Setting this environment variable causes xcodeproj to work around the problem
21
- ENV["FORK_XCODE_WRITING"] = "true"
22
-
23
- Fastlane::Helper::DotenvHelper.load_dot_env(env)
24
-
25
17
  started = Time.now
26
18
  e = nil
27
19
  begin
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.147.0'.freeze
2
+ VERSION = '2.148.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.147.0
21
+ // Generated with fastlane 2.148.0
@@ -1465,6 +1465,8 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1465
1465
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1466
1466
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1467
1467
  - testplan: The testplan associated with the scheme that should be used for testing
1468
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1469
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1468
1470
  */
1469
1471
  func captureIosScreenshots(workspace: String? = nil,
1470
1472
  project: String? = nil,
@@ -1503,7 +1505,9 @@ func captureIosScreenshots(workspace: String? = nil,
1503
1505
  concurrentSimulators: Bool = true,
1504
1506
  disableSlideToType: Bool = false,
1505
1507
  clonedSourcePackagesPath: String? = nil,
1506
- testplan: String? = nil) {
1508
+ testplan: String? = nil,
1509
+ onlyTesting: Any? = nil,
1510
+ skipTesting: Any? = nil) {
1507
1511
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1508
1512
  RubyCommand.Argument(name: "project", value: project),
1509
1513
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1541,7 +1545,9 @@ func captureIosScreenshots(workspace: String? = nil,
1541
1545
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1542
1546
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1543
1547
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1544
- RubyCommand.Argument(name: "testplan", value: testplan)])
1548
+ RubyCommand.Argument(name: "testplan", value: testplan),
1549
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1550
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
1545
1551
  _ = runner.executeCommand(command)
1546
1552
  }
1547
1553
 
@@ -1587,6 +1593,8 @@ func captureIosScreenshots(workspace: String? = nil,
1587
1593
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1588
1594
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1589
1595
  - testplan: The testplan associated with the scheme that should be used for testing
1596
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1597
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1590
1598
  */
1591
1599
  func captureScreenshots(workspace: String? = nil,
1592
1600
  project: String? = nil,
@@ -1625,7 +1633,9 @@ func captureScreenshots(workspace: String? = nil,
1625
1633
  concurrentSimulators: Bool = true,
1626
1634
  disableSlideToType: Bool = false,
1627
1635
  clonedSourcePackagesPath: String? = nil,
1628
- testplan: String? = nil) {
1636
+ testplan: String? = nil,
1637
+ onlyTesting: Any? = nil,
1638
+ skipTesting: Any? = nil) {
1629
1639
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1630
1640
  RubyCommand.Argument(name: "project", value: project),
1631
1641
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1663,7 +1673,9 @@ func captureScreenshots(workspace: String? = nil,
1663
1673
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1664
1674
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1665
1675
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1666
- RubyCommand.Argument(name: "testplan", value: testplan)])
1676
+ RubyCommand.Argument(name: "testplan", value: testplan),
1677
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1678
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
1667
1679
  _ = runner.executeCommand(command)
1668
1680
  }
1669
1681
 
@@ -2149,10 +2161,6 @@ func copyArtifacts(keepOriginal: Bool = true,
2149
2161
  - notifications: Crashlytics notification option (true/false)
2150
2162
  - debug: Crashlytics debug option (true/false)
2151
2163
 
2152
- Crashlytics Beta has been deprecated and replaced with Firebase App Distribution.
2153
- Beta will continue working until May 4, 2020.
2154
- Check out the [Firebase App Distribution docs](https://github.com/fastlane/fastlane-plugin-firebase_app_distribution) to get started.
2155
-
2156
2164
  Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.
2157
2165
  Distributing to Groups: When using the `groups` parameter, it's important to use the group **alias** names for each group you'd like to distribute to. A group's alias can be found in the web UI. If you're viewing the Beta page, you can open the groups dialog by clicking the 'Manage Groups' button.
2158
2166
  This action uses the `submit` binary provided by the Crashlytics framework. If the binary is not found in its usual path, you'll need to specify the path manually by using the `crashlytics_path` option.
@@ -3353,6 +3361,7 @@ func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3353
3361
  - platform: Set the provisioning profile's platform (i.e. ios, tvos)
3354
3362
  - readonly: Only fetch existing profile, don't generate new ones
3355
3363
  - 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")
3364
+ - 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
3356
3365
 
3357
3366
  - returns: The UUID of the profile sigh just fetched/generated
3358
3367
 
@@ -3377,7 +3386,8 @@ func getProvisioningProfile(adhoc: Bool = false,
3377
3386
  skipCertificateVerification: Bool = false,
3378
3387
  platform: Any = "ios",
3379
3388
  readonly: Bool = false,
3380
- templateName: String? = nil) {
3389
+ templateName: String? = nil,
3390
+ failOnNameTaken: Bool = false) {
3381
3391
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
3382
3392
  RubyCommand.Argument(name: "developer_id", value: developerId),
3383
3393
  RubyCommand.Argument(name: "development", value: development),
@@ -3397,7 +3407,8 @@ func getProvisioningProfile(adhoc: Bool = false,
3397
3407
  RubyCommand.Argument(name: "skip_certificate_verification", value: skipCertificateVerification),
3398
3408
  RubyCommand.Argument(name: "platform", value: platform),
3399
3409
  RubyCommand.Argument(name: "readonly", value: readonly),
3400
- RubyCommand.Argument(name: "template_name", value: templateName)])
3410
+ RubyCommand.Argument(name: "template_name", value: templateName),
3411
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
3401
3412
  _ = runner.executeCommand(command)
3402
3413
  }
3403
3414
 
@@ -4509,6 +4520,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4509
4520
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4510
4521
  - 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")
4511
4522
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4523
+ - 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
4512
4524
  - outputPath: Path in which to export certificates, key and profile
4513
4525
  - verbose: Print out extra information and all commands
4514
4526
 
@@ -4548,6 +4560,7 @@ func match(type: Any = matchfile.type,
4548
4560
  platform: Any = matchfile.platform,
4549
4561
  templateName: Any? = matchfile.templateName,
4550
4562
  profileName: Any? = matchfile.profileName,
4563
+ failOnNameTaken: Bool = matchfile.failOnNameTaken,
4551
4564
  outputPath: Any? = matchfile.outputPath,
4552
4565
  verbose: Bool = matchfile.verbose) {
4553
4566
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -4584,6 +4597,7 @@ func match(type: Any = matchfile.type,
4584
4597
  RubyCommand.Argument(name: "platform", value: platform),
4585
4598
  RubyCommand.Argument(name: "template_name", value: templateName),
4586
4599
  RubyCommand.Argument(name: "profile_name", value: profileName),
4600
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
4587
4601
  RubyCommand.Argument(name: "output_path", value: outputPath),
4588
4602
  RubyCommand.Argument(name: "verbose", value: verbose)])
4589
4603
  _ = runner.executeCommand(command)
@@ -4979,6 +4993,7 @@ func pem(development: Bool = false,
4979
4993
  - notifyExternalTesters: Should notify external testers?
4980
4994
  - 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
4981
4995
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
4996
+ - expirePreviousBuilds: Should expire previous builds?
4982
4997
  - firstName: The tester's first name
4983
4998
  - lastName: The tester's last name
4984
4999
  - email: The tester's email
@@ -5015,6 +5030,7 @@ func pilot(username: String,
5015
5030
  notifyExternalTesters: Bool = true,
5016
5031
  appVersion: String? = nil,
5017
5032
  buildNumber: String? = nil,
5033
+ expirePreviousBuilds: Bool = false,
5018
5034
  firstName: String? = nil,
5019
5035
  lastName: String? = nil,
5020
5036
  email: String? = nil,
@@ -5047,6 +5063,7 @@ func pilot(username: String,
5047
5063
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
5048
5064
  RubyCommand.Argument(name: "app_version", value: appVersion),
5049
5065
  RubyCommand.Argument(name: "build_number", value: buildNumber),
5066
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
5050
5067
  RubyCommand.Argument(name: "first_name", value: firstName),
5051
5068
  RubyCommand.Argument(name: "last_name", value: lastName),
5052
5069
  RubyCommand.Argument(name: "email", value: email),
@@ -5678,6 +5695,8 @@ func rubyVersion() {
5678
5695
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5679
5696
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5680
5697
  - testplan: The testplan associated with the scheme that should be used for testing
5698
+ - onlyTestConfigurations: Array of strings matching test plan configurations to run
5699
+ - skipTestConfigurations: Array of strings matching test plan configurations to skip
5681
5700
  - xctestrun: Run tests using the provided `.xctestrun` file
5682
5701
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5683
5702
  - clean: Should the project be cleaned before building it?
@@ -5742,6 +5761,8 @@ func runTests(workspace: String? = nil,
5742
5761
  onlyTesting: Any? = nil,
5743
5762
  skipTesting: Any? = nil,
5744
5763
  testplan: String? = nil,
5764
+ onlyTestConfigurations: Any? = nil,
5765
+ skipTestConfigurations: Any? = nil,
5745
5766
  xctestrun: String? = nil,
5746
5767
  toolchain: Any? = nil,
5747
5768
  clean: Bool = false,
@@ -5803,6 +5824,8 @@ func runTests(workspace: String? = nil,
5803
5824
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5804
5825
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
5805
5826
  RubyCommand.Argument(name: "testplan", value: testplan),
5827
+ RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations),
5828
+ RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations),
5806
5829
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5807
5830
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5808
5831
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5945,6 +5968,8 @@ func say(text: Any,
5945
5968
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5946
5969
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5947
5970
  - testplan: The testplan associated with the scheme that should be used for testing
5971
+ - onlyTestConfigurations: Array of strings matching test plan configurations to run
5972
+ - skipTestConfigurations: Array of strings matching test plan configurations to skip
5948
5973
  - xctestrun: Run tests using the provided `.xctestrun` file
5949
5974
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5950
5975
  - clean: Should the project be cleaned before building it?
@@ -6009,6 +6034,8 @@ func scan(workspace: Any? = scanfile.workspace,
6009
6034
  onlyTesting: Any? = scanfile.onlyTesting,
6010
6035
  skipTesting: Any? = scanfile.skipTesting,
6011
6036
  testplan: Any? = scanfile.testplan,
6037
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
6038
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
6012
6039
  xctestrun: Any? = scanfile.xctestrun,
6013
6040
  toolchain: Any? = scanfile.toolchain,
6014
6041
  clean: Bool = scanfile.clean,
@@ -6070,6 +6097,8 @@ func scan(workspace: Any? = scanfile.workspace,
6070
6097
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6071
6098
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6072
6099
  RubyCommand.Argument(name: "testplan", value: testplan),
6100
+ RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations),
6101
+ RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations),
6073
6102
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
6074
6103
  RubyCommand.Argument(name: "toolchain", value: toolchain),
6075
6104
  RubyCommand.Argument(name: "clean", value: clean),
@@ -6510,6 +6539,7 @@ func setupTravis(force: Bool = false) {
6510
6539
  - platform: Set the provisioning profile's platform (i.e. ios, tvos)
6511
6540
  - readonly: Only fetch existing profile, don't generate new ones
6512
6541
  - 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")
6542
+ - 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
6513
6543
 
6514
6544
  - returns: The UUID of the profile sigh just fetched/generated
6515
6545
 
@@ -6534,7 +6564,8 @@ func sigh(adhoc: Bool = false,
6534
6564
  skipCertificateVerification: Bool = false,
6535
6565
  platform: Any = "ios",
6536
6566
  readonly: Bool = false,
6537
- templateName: String? = nil) {
6567
+ templateName: String? = nil,
6568
+ failOnNameTaken: Bool = false) {
6538
6569
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
6539
6570
  RubyCommand.Argument(name: "developer_id", value: developerId),
6540
6571
  RubyCommand.Argument(name: "development", value: development),
@@ -6554,7 +6585,8 @@ func sigh(adhoc: Bool = false,
6554
6585
  RubyCommand.Argument(name: "skip_certificate_verification", value: skipCertificateVerification),
6555
6586
  RubyCommand.Argument(name: "platform", value: platform),
6556
6587
  RubyCommand.Argument(name: "readonly", value: readonly),
6557
- RubyCommand.Argument(name: "template_name", value: templateName)])
6588
+ RubyCommand.Argument(name: "template_name", value: templateName),
6589
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
6558
6590
  _ = runner.executeCommand(command)
6559
6591
  }
6560
6592
 
@@ -6795,6 +6827,8 @@ func slather(buildDirectory: String? = nil,
6795
6827
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
6796
6828
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
6797
6829
  - testplan: The testplan associated with the scheme that should be used for testing
6830
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
6831
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
6798
6832
  */
6799
6833
  func snapshot(workspace: Any? = snapshotfile.workspace,
6800
6834
  project: Any? = snapshotfile.project,
@@ -6833,7 +6867,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6833
6867
  concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
6834
6868
  disableSlideToType: Bool = snapshotfile.disableSlideToType,
6835
6869
  clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath,
6836
- testplan: Any? = snapshotfile.testplan) {
6870
+ testplan: Any? = snapshotfile.testplan,
6871
+ onlyTesting: Any? = snapshotfile.onlyTesting,
6872
+ skipTesting: Any? = snapshotfile.skipTesting) {
6837
6873
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6838
6874
  RubyCommand.Argument(name: "project", value: project),
6839
6875
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6871,7 +6907,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6871
6907
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
6872
6908
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
6873
6909
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
6874
- RubyCommand.Argument(name: "testplan", value: testplan)])
6910
+ RubyCommand.Argument(name: "testplan", value: testplan),
6911
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6912
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting)])
6875
6913
  _ = runner.executeCommand(command)
6876
6914
  }
6877
6915
 
@@ -7087,6 +7125,7 @@ func ssh(username: String,
7087
7125
  - timeout: Timeout for read, open, and send (in seconds)
7088
7126
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
7089
7127
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
7128
+ - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
7090
7129
  - obbMainReferencesVersion: References version of 'main' expansion file
7091
7130
  - obbMainFileSize: Size of 'main' expansion file in bytes
7092
7131
  - obbPatchReferencesVersion: References version of 'patch' expansion file
@@ -7124,6 +7163,7 @@ func supply(packageName: String,
7124
7163
  timeout: Int = 300,
7125
7164
  deactivateOnPromote: Bool = true,
7126
7165
  versionCodesToRetain: [String]? = nil,
7166
+ inAppUpdatePriority: Int? = nil,
7127
7167
  obbMainReferencesVersion: String? = nil,
7128
7168
  obbMainFileSize: String? = nil,
7129
7169
  obbPatchReferencesVersion: String? = nil,
@@ -7158,6 +7198,7 @@ func supply(packageName: String,
7158
7198
  RubyCommand.Argument(name: "timeout", value: timeout),
7159
7199
  RubyCommand.Argument(name: "deactivate_on_promote", value: deactivateOnPromote),
7160
7200
  RubyCommand.Argument(name: "version_codes_to_retain", value: versionCodesToRetain),
7201
+ RubyCommand.Argument(name: "in_app_update_priority", value: inAppUpdatePriority),
7161
7202
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
7162
7203
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
7163
7204
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
@@ -7253,6 +7294,7 @@ func swiftlint(mode: Any = "lint",
7253
7294
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
7254
7295
  - 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")
7255
7296
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7297
+ - 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
7256
7298
  - outputPath: Path in which to export certificates, key and profile
7257
7299
  - verbose: Print out extra information and all commands
7258
7300
 
@@ -7292,6 +7334,7 @@ func syncCodeSigning(type: String = "development",
7292
7334
  platform: String = "ios",
7293
7335
  templateName: String? = nil,
7294
7336
  profileName: String? = nil,
7337
+ failOnNameTaken: Bool = false,
7295
7338
  outputPath: String? = nil,
7296
7339
  verbose: Bool = false) {
7297
7340
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -7328,6 +7371,7 @@ func syncCodeSigning(type: String = "development",
7328
7371
  RubyCommand.Argument(name: "platform", value: platform),
7329
7372
  RubyCommand.Argument(name: "template_name", value: templateName),
7330
7373
  RubyCommand.Argument(name: "profile_name", value: profileName),
7374
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
7331
7375
  RubyCommand.Argument(name: "output_path", value: outputPath),
7332
7376
  RubyCommand.Argument(name: "verbose", value: verbose)])
7333
7377
  _ = runner.executeCommand(command)
@@ -7422,6 +7466,7 @@ func testfairy(apiKey: String,
7422
7466
  - notifyExternalTesters: Should notify external testers?
7423
7467
  - 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
7424
7468
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
7469
+ - expirePreviousBuilds: Should expire previous builds?
7425
7470
  - firstName: The tester's first name
7426
7471
  - lastName: The tester's last name
7427
7472
  - email: The tester's email
@@ -7458,6 +7503,7 @@ func testflight(username: String,
7458
7503
  notifyExternalTesters: Bool = true,
7459
7504
  appVersion: String? = nil,
7460
7505
  buildNumber: String? = nil,
7506
+ expirePreviousBuilds: Bool = false,
7461
7507
  firstName: String? = nil,
7462
7508
  lastName: String? = nil,
7463
7509
  email: String? = nil,
@@ -7490,6 +7536,7 @@ func testflight(username: String,
7490
7536
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
7491
7537
  RubyCommand.Argument(name: "app_version", value: appVersion),
7492
7538
  RubyCommand.Argument(name: "build_number", value: buildNumber),
7539
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
7493
7540
  RubyCommand.Argument(name: "first_name", value: firstName),
7494
7541
  RubyCommand.Argument(name: "last_name", value: lastName),
7495
7542
  RubyCommand.Argument(name: "email", value: email),
@@ -8187,6 +8234,7 @@ func uploadToAppStore(username: String,
8187
8234
  - timeout: Timeout for read, open, and send (in seconds)
8188
8235
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
8189
8236
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
8237
+ - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
8190
8238
  - obbMainReferencesVersion: References version of 'main' expansion file
8191
8239
  - obbMainFileSize: Size of 'main' expansion file in bytes
8192
8240
  - obbPatchReferencesVersion: References version of 'patch' expansion file
@@ -8224,6 +8272,7 @@ func uploadToPlayStore(packageName: String,
8224
8272
  timeout: Int = 300,
8225
8273
  deactivateOnPromote: Bool = true,
8226
8274
  versionCodesToRetain: [String]? = nil,
8275
+ inAppUpdatePriority: Int? = nil,
8227
8276
  obbMainReferencesVersion: String? = nil,
8228
8277
  obbMainFileSize: String? = nil,
8229
8278
  obbPatchReferencesVersion: String? = nil,
@@ -8258,6 +8307,7 @@ func uploadToPlayStore(packageName: String,
8258
8307
  RubyCommand.Argument(name: "timeout", value: timeout),
8259
8308
  RubyCommand.Argument(name: "deactivate_on_promote", value: deactivateOnPromote),
8260
8309
  RubyCommand.Argument(name: "version_codes_to_retain", value: versionCodesToRetain),
8310
+ RubyCommand.Argument(name: "in_app_update_priority", value: inAppUpdatePriority),
8261
8311
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
8262
8312
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
8263
8313
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
@@ -8328,6 +8378,7 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8328
8378
  - notifyExternalTesters: Should notify external testers?
8329
8379
  - 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
8330
8380
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
8381
+ - expirePreviousBuilds: Should expire previous builds?
8331
8382
  - firstName: The tester's first name
8332
8383
  - lastName: The tester's last name
8333
8384
  - email: The tester's email
@@ -8364,6 +8415,7 @@ func uploadToTestflight(username: String,
8364
8415
  notifyExternalTesters: Bool = true,
8365
8416
  appVersion: String? = nil,
8366
8417
  buildNumber: String? = nil,
8418
+ expirePreviousBuilds: Bool = false,
8367
8419
  firstName: String? = nil,
8368
8420
  lastName: String? = nil,
8369
8421
  email: String? = nil,
@@ -8396,6 +8448,7 @@ func uploadToTestflight(username: String,
8396
8448
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
8397
8449
  RubyCommand.Argument(name: "app_version", value: appVersion),
8398
8450
  RubyCommand.Argument(name: "build_number", value: buildNumber),
8451
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
8399
8452
  RubyCommand.Argument(name: "first_name", value: firstName),
8400
8453
  RubyCommand.Argument(name: "last_name", value: lastName),
8401
8454
  RubyCommand.Argument(name: "email", value: email),
@@ -8850,4 +8903,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8850
8903
 
8851
8904
  // Please don't remove the lines below
8852
8905
  // They are used to detect outdated files
8853
- // FastlaneRunnerAPIVersion [0.9.75]
8906
+ // FastlaneRunnerAPIVersion [0.9.76]