fastlane 2.143.0 → 2.147.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/credentials_manager/lib/credentials_manager/appfile_config.rb +4 -0
  4. data/deliver/lib/deliver/app_screenshot.rb +1 -0
  5. data/deliver/lib/deliver/options.rb +30 -1
  6. data/deliver/lib/deliver/setup.rb +4 -4
  7. data/fastlane/lib/assets/custom_action_template.rb +6 -6
  8. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +7 -1
  9. data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +3 -0
  10. data/fastlane/lib/fastlane/actions/cocoapods.rb +1 -1
  11. data/fastlane/lib/fastlane/actions/crashlytics.rb +14 -2
  12. data/fastlane/lib/fastlane/actions/create_pull_request.rb +7 -1
  13. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +13 -5
  14. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  15. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +3 -3
  16. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/git_branch.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +7 -1
  19. data/fastlane/lib/fastlane/actions/set_pod_key.rb +3 -3
  20. data/fastlane/lib/fastlane/actions/setup_ci.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/setup_jenkins.rb +11 -2
  22. data/fastlane/lib/fastlane/actions/slather.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/swiftlint.rb +28 -7
  24. data/fastlane/lib/fastlane/actions/testfairy.rb +18 -3
  25. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +203 -0
  26. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/verify_xcode.rb +7 -0
  29. data/fastlane/lib/fastlane/commands_generator.rb +4 -1
  30. data/fastlane/lib/fastlane/helper/lane_helper.rb +13 -0
  31. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +14 -9
  32. data/fastlane/lib/fastlane/version.rb +1 -1
  33. data/fastlane/swift/Deliverfile.swift +1 -1
  34. data/fastlane/swift/Fastlane.swift +138 -23
  35. data/fastlane/swift/Gymfile.swift +1 -1
  36. data/fastlane/swift/Matchfile.swift +1 -1
  37. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  38. data/fastlane/swift/Precheckfile.swift +1 -1
  39. data/fastlane/swift/Scanfile.swift +1 -1
  40. data/fastlane/swift/ScanfileProtocol.swift +10 -2
  41. data/fastlane/swift/Screengrabfile.swift +1 -1
  42. data/fastlane/swift/Snapshotfile.swift +1 -1
  43. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  44. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +9 -0
  45. data/fastlane_core/lib/fastlane_core/device_manager.rb +3 -3
  46. data/fastlane_core/lib/fastlane_core/helper.rb +17 -0
  47. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +46 -2
  48. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +15 -2
  49. data/frameit/lib/frameit/device_types.rb +10 -0
  50. data/frameit/lib/frameit/editor.rb +1 -1
  51. data/frameit/lib/frameit/options.rb +5 -2
  52. data/frameit/lib/frameit/runner.rb +5 -0
  53. data/frameit/lib/frameit/screenshot.rb +5 -0
  54. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  55. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +5 -0
  56. data/gym/lib/gym/runner.rb +14 -0
  57. data/match/lib/match/change_password.rb +1 -18
  58. data/match/lib/match/encryption/openssl.rb +1 -1
  59. data/match/lib/match/generator.rb +5 -1
  60. data/match/lib/match/importer.rb +35 -18
  61. data/match/lib/match/options.rb +6 -1
  62. data/match/lib/match/storage/s3_storage.rb +10 -5
  63. data/match/lib/match/utils.rb +1 -1
  64. data/pilot/lib/pilot/build_manager.rb +15 -4
  65. data/pilot/lib/pilot/options.rb +8 -0
  66. data/produce/lib/produce/developer_center.rb +11 -2
  67. data/produce/lib/produce/itunes_connect.rb +11 -3
  68. data/produce/lib/produce/options.rb +12 -0
  69. data/scan/lib/scan/options.rb +11 -1
  70. data/scan/lib/scan/runner.rb +2 -0
  71. data/scan/lib/scan/test_command_generator.rb +4 -1
  72. data/screengrab/lib/screengrab/runner.rb +1 -1
  73. data/snapshot/lib/assets/SnapfileTemplate +3 -0
  74. data/snapshot/lib/snapshot/options.rb +10 -0
  75. data/snapshot/lib/snapshot/reports_generator.rb +4 -0
  76. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  77. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +4 -0
  78. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +21 -0
  79. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -0
  80. data/spaceship/lib/spaceship/base.rb +1 -1
  81. data/spaceship/lib/spaceship/connect_api/model.rb +6 -0
  82. data/spaceship/lib/spaceship/connect_api/models/app.rb +11 -0
  83. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +23 -0
  84. data/spaceship/lib/spaceship/portal/app_service.rb +2 -2
  85. data/spaceship/lib/spaceship/portal/portal_client.rb +13 -0
  86. data/spaceship/lib/spaceship/tunes/app_version.rb +6 -1
  87. data/spaceship/lib/spaceship/tunes/application.rb +2 -1
  88. data/spaceship/lib/spaceship/tunes/iap.rb +15 -0
  89. data/spaceship/lib/spaceship/tunes/tunes_client.rb +16 -2
  90. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +52 -16
  91. data/supply/lib/supply/.client.rb.swp +0 -0
  92. data/supply/lib/supply/client.rb +4 -4
  93. data/supply/lib/supply/setup.rb +5 -3
  94. metadata +40 -32
  95. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  96. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  97. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  98. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  99. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  100. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
  101. data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
@@ -0,0 +1,203 @@
1
+ require 'xcodeproj'
2
+ module Fastlane
3
+ module Actions
4
+ class UpdateCodeSigningSettingsAction < Action
5
+ def self.run(params)
6
+ FastlaneCore::PrintTable.print_values(config: params, title: "Summary for code signing settings")
7
+ path = params[:path]
8
+ path = File.join(File.expand_path(path), "project.pbxproj")
9
+
10
+ project = Xcodeproj::Project.open(params[:path])
11
+ UI.user_error!("Could not find path to project config '#{path}'. Pass the path to your project (not workspace)!") unless File.exist?(path)
12
+ UI.message("Updating the Automatic Codesigning flag to #{params[:use_automatic_signing] ? 'enabled' : 'disabled'} for the given project '#{path}'")
13
+
14
+ unless project.root_object.attributes["TargetAttributes"]
15
+ UI.user_error!("Seems to be a very old project file format - please open your project file in a more recent version of Xcode")
16
+ return false
17
+ end
18
+
19
+ changed_targets = []
20
+ changed_build_configurations = []
21
+
22
+ project.targets.each do |target|
23
+ if params[:targets]
24
+ unless params[:targets].include?(target.name)
25
+ UI.important("Skipping #{target.name} not selected (#{params[:targets].join(',')})")
26
+ next
27
+ end
28
+ end
29
+
30
+ target.build_configurations.each do |config|
31
+ if params[:build_configurations]
32
+ unless params[:build_configurations].include?(config.name)
33
+ UI.important("Skipping #{config.name} not selected (#{params[:build_configurations].join(',')})")
34
+ next
35
+ end
36
+ end
37
+
38
+ style_value = params[:use_automatic_signing] ? 'Automatic' : 'Manual'
39
+ set_build_setting(config, "CODE_SIGN_STYLE", style_value)
40
+
41
+ if params[:team_id]
42
+ set_build_setting(config, "DEVELOPMENT_TEAM", params[:team_id])
43
+ UI.important("Set Team id to: #{params[:team_id]} for target: #{target.name} for build configuration: #{config.name}")
44
+ end
45
+ if params[:code_sign_identity]
46
+ set_build_setting(config, "CODE_SIGN_IDENTITY", params[:code_sign_identity])
47
+ UI.important("Set Code Sign identity to: #{params[:code_sign_identity]} for target: #{target.name} for build configuration: #{config.name}")
48
+ end
49
+ if params[:profile_name]
50
+ set_build_setting(config, "PROVISIONING_PROFILE_SPECIFIER", params[:profile_name])
51
+ UI.important("Set Provisioning Profile name to: #{params[:profile_name]} for target: #{target.name} for build configuration: #{config.name}")
52
+ end
53
+ # Since Xcode 8, this is no longer needed, you simply use PROVISIONING_PROFILE_SPECIFIER
54
+ if params[:profile_uuid]
55
+ set_build_setting(config, "PROVISIONING_PROFILE", params[:profile_uuid])
56
+ UI.important("Set Provisioning Profile UUID to: #{params[:profile_uuid]} for target: #{target.name} for build configuration: #{config.name}")
57
+ end
58
+ if params[:bundle_identifier]
59
+ set_build_setting(config, "PRODUCT_BUNDLE_IDENTIFIER", params[:bundle_identifier])
60
+ UI.important("Set Bundle identifier to: #{params[:bundle_identifier]} for target: #{target.name} for build configuration: #{config.name}")
61
+ end
62
+
63
+ changed_build_configurations << config.name
64
+ end
65
+
66
+ changed_targets << target.name
67
+ end
68
+ project.save
69
+
70
+ if changed_targets.empty?
71
+ UI.important("None of the specified targets has been modified")
72
+ UI.important("available targets:")
73
+ project.targets.each do |target|
74
+ UI.important("\t* #{target.name}")
75
+ end
76
+ else
77
+ UI.success("Successfully updated project settings to use Code Sign Style = '#{params[:use_automatic_signing] ? 'Automatic' : 'Manual'}'")
78
+ UI.success("Modified Targets:")
79
+ changed_targets.each do |target|
80
+ UI.success("\t * #{target}")
81
+ end
82
+
83
+ UI.success("Modified Build Configurations:")
84
+ changed_build_configurations.each do |name|
85
+ UI.success("\t * #{name}")
86
+ end
87
+ end
88
+
89
+ params[:use_automatic_signing]
90
+ end
91
+
92
+ def self.set_build_setting(configuration, name, value)
93
+ # Iterate over any keys that start with this name
94
+ # This will also set keys that have filtering like [sdk=iphoneos*]
95
+ keys = configuration.build_settings.keys.select { |key| key.to_s.match(/#{name}.*/) }
96
+ keys.each do |key|
97
+ configuration.build_settings[key] = value
98
+ end
99
+
100
+ # Explicitly set the key with value if keys don't exist
101
+ configuration.build_settings[name] = value
102
+ end
103
+
104
+ def self.description
105
+ "Configures Xcode's Codesigning options"
106
+ end
107
+
108
+ def self.details
109
+ "Configures Xcode's Codesigning options of all targets in the project"
110
+ end
111
+
112
+ def self.available_options
113
+ [
114
+ FastlaneCore::ConfigItem.new(key: :path,
115
+ env_name: "FL_PROJECT_SIGNING_PROJECT_PATH",
116
+ description: "Path to your Xcode project",
117
+ code_gen_sensitive: true,
118
+ default_value: Dir['*.xcodeproj'].first,
119
+ default_value_dynamic: true,
120
+ verify_block: proc do |value|
121
+ UI.user_error!("Path is invalid") unless File.exist?(File.expand_path(value))
122
+ end),
123
+ FastlaneCore::ConfigItem.new(key: :use_automatic_signing,
124
+ env_name: "FL_PROJECT_USE_AUTOMATIC_SIGNING",
125
+ description: "Defines if project should use automatic signing",
126
+ is_string: false,
127
+ default_value: false),
128
+ FastlaneCore::ConfigItem.new(key: :team_id,
129
+ env_name: "FASTLANE_TEAM_ID",
130
+ optional: true,
131
+ description: "Team ID, is used when upgrading project",
132
+ is_string: true),
133
+ FastlaneCore::ConfigItem.new(key: :targets,
134
+ env_name: "FL_PROJECT_SIGNING_TARGETS",
135
+ optional: true,
136
+ type: Array,
137
+ description: "Specify targets you want to toggle the signing mech. (default to all targets)",
138
+ is_string: false),
139
+ FastlaneCore::ConfigItem.new(key: :build_configurations,
140
+ env_name: "FL_PROJECT_SIGNING_BUILD_CONFIGURATIONS",
141
+ optional: true,
142
+ type: Array,
143
+ description: "Specify build_configurations you want to toggle the signing mech. (default to all targets)",
144
+ is_string: false),
145
+ FastlaneCore::ConfigItem.new(key: :code_sign_identity,
146
+ env_name: "FL_CODE_SIGN_IDENTITY",
147
+ description: "Code signing identity type (iPhone Developer, iPhone Distribution)",
148
+ optional: true,
149
+ is_string: true),
150
+ FastlaneCore::ConfigItem.new(key: :profile_name,
151
+ env_name: "FL_PROVISIONING_PROFILE_SPECIFIER",
152
+ description: "Provisioning profile name to use for code signing",
153
+ optional: true,
154
+ is_string: true),
155
+ FastlaneCore::ConfigItem.new(key: :profile_uuid,
156
+ env_name: "FL_PROVISIONING_PROFILE",
157
+ description: "Provisioning profile UUID to use for code signing",
158
+ optional: true,
159
+ is_string: true),
160
+ FastlaneCore::ConfigItem.new(key: :bundle_identifier,
161
+ env_name: "FL_APP_IDENTIFIER",
162
+ description: "Application Product Bundle Identifier",
163
+ optional: true,
164
+ is_string: true)
165
+ ]
166
+ end
167
+
168
+ def self.output
169
+ end
170
+
171
+ def self.example_code
172
+ [
173
+ ' # manual code signing
174
+ update_code_signing_settings(
175
+ use_automatic_signing: false,
176
+ path: "demo-project/demo/demo.xcodeproj"
177
+ )',
178
+ ' # automatic code signing
179
+ update_code_signing_settings(
180
+ use_automatic_signing: true,
181
+ path: "demo-project/demo/demo.xcodeproj"
182
+ )'
183
+ ]
184
+ end
185
+
186
+ def self.category
187
+ :code_signing
188
+ end
189
+
190
+ def self.return_value
191
+ "The current status (boolean) of codesigning after modification"
192
+ end
193
+
194
+ def self.authors
195
+ ["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons", "att55"]
196
+ end
197
+
198
+ def self.is_supported?(platform)
199
+ [:ios, :mac].include?(platform)
200
+ end
201
+ end
202
+ end
203
+ end
@@ -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/**/upload-symbols"]).last
133
+ params[:binary_path] ||= (Dir["/Applications/Fabric.app/**/upload-symbols"] + Dir["./Pods/Fabric/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])
@@ -46,7 +46,7 @@ module Fastlane
46
46
 
47
47
  parts = cert_info.strip.split(/\r?\n/)
48
48
  parts.each do |part|
49
- if part =~ /\AAuthority=i(Phone|OS)/
49
+ if part =~ /\AAuthority=(iPhone|iOS|Apple)\s(Distribution|Development)/
50
50
  type = part.split('=')[1].split(':')[0]
51
51
  values['provisioning_type'] = type.downcase =~ /distribution/i ? "distribution" : "development"
52
52
  end
@@ -33,6 +33,13 @@ module Fastlane
33
33
  "Authority=Apple Root CA",
34
34
  "TeamIdentifier=59GAB85EFG"
35
35
  ],
36
+ [ # Found on App Store installed Xcode installations post-Xcode 11.3
37
+ "Identifier=com.apple.dt.Xcode",
38
+ "Authority=Apple Mac OS Application Signing",
39
+ "Authority=Apple Worldwide Developer Relations Certification Authority",
40
+ "Authority=Apple Root CA",
41
+ "TeamIdentifier=APPLECOMPUTER"
42
+ ],
36
43
  [ # Found on Xcode installations (pre-Xcode 8) downloaded from developer.apple.com
37
44
  "Identifier=com.apple.dt.Xcode",
38
45
  "Authority=Software Signing",
@@ -141,10 +141,12 @@ module Fastlane
141
141
  c.description = 'Starts local socket server and enables only a single local connection'
142
142
  c.option('-s', '--stay_alive', 'Keeps socket server up even after error or disconnects, requires CTRL-C to kill.')
143
143
  c.option('-c seconds', '--connection_timeout', 'Sets connection established timeout')
144
+ c.option('-p port', '--port', "Sets the port on localhost for the socket connection")
144
145
  c.action do |args, options|
145
146
  default_connection_timeout = 5
146
147
  stay_alive = options.stay_alive || false
147
148
  connection_timeout = options.connection_timeout || default_connection_timeout
149
+ port = options.port || 2000
148
150
 
149
151
  if stay_alive && options.connection_timeout.nil?
150
152
  UI.important("stay_alive is set, but the connection timeout is not, this will give you #{default_connection_timeout} seconds to (re)connect")
@@ -157,7 +159,8 @@ module Fastlane
157
159
  server = Fastlane::SocketServer.new(
158
160
  command_executor: command_executor,
159
161
  connection_timeout: connection_timeout,
160
- stay_alive: stay_alive
162
+ stay_alive: stay_alive,
163
+ port: port
161
164
  )
162
165
  result = server.start
163
166
  UI.success("Result: #{result}") if result
@@ -0,0 +1,13 @@
1
+ module Fastlane
2
+ module Helper
3
+ class LaneHelper
4
+ def self.current_platform
5
+ return Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::PLATFORM_NAME]
6
+ end
7
+
8
+ def self.current_lane
9
+ return Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::LANE_NAME]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
- require 'aws-sdk'
1
+ require 'aws-sdk-s3'
2
2
 
3
3
  module Fastlane
4
4
  module Helper
@@ -7,16 +7,14 @@ module Fastlane
7
7
 
8
8
  def initialize(access_key: nil, secret_access_key: nil, region: nil)
9
9
  creds = Aws::Credentials.new(access_key, secret_access_key)
10
- Aws.config.update({
10
+ Aws.config.update(
11
11
  region: region,
12
12
  credentials: creds
13
- })
14
-
15
- @client = Aws::S3::Client.new
13
+ )
16
14
  end
17
15
 
18
16
  def list_buckets
19
- return @client.list_buckets
17
+ return client.list_buckets
20
18
  end
21
19
 
22
20
  def upload_file(bucket_name, file_name, file_data, acl)
@@ -40,17 +38,24 @@ module Fastlane
40
38
  obj.public_url.to_s
41
39
  end
42
40
 
43
- def delete_file(bucket, file_name)
41
+ def delete_file(bucket_name, file_name)
44
42
  bucket = find_bucket!(bucket_name)
45
- bucket.objects[file_name].delete
43
+ file = bucket.object(file_name)
44
+ file.delete
46
45
  end
47
46
 
48
47
  def find_bucket!(bucket_name)
49
- bucket = Aws::S3::Bucket.new(bucket_name, client: @client)
48
+ bucket = Aws::S3::Bucket.new(bucket_name, client: client)
50
49
  raise "Bucket '#{bucket_name}' not found" unless bucket.exists?
51
50
 
52
51
  return bucket
53
52
  end
54
53
  end
54
+
55
+ private
56
+
57
+ def client
58
+ @client ||= Aws::S3::Client.new
59
+ end
55
60
  end
56
61
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.143.0'.freeze
2
+ VERSION = '2.147.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.143.0
21
+ // Generated with fastlane 2.147.0
@@ -1442,6 +1442,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1442
1442
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1443
1443
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1444
1444
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1445
+ - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1445
1446
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1446
1447
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
1447
1448
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -1463,6 +1464,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1463
1464
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1464
1465
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1465
1466
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1467
+ - testplan: The testplan associated with the scheme that should be used for testing
1466
1468
  */
1467
1469
  func captureIosScreenshots(workspace: String? = nil,
1468
1470
  project: String? = nil,
@@ -1479,6 +1481,7 @@ func captureIosScreenshots(workspace: String? = nil,
1479
1481
  clearPreviousScreenshots: Bool = false,
1480
1482
  reinstallApp: Bool = false,
1481
1483
  eraseSimulator: Bool = false,
1484
+ overrideStatusBar: Bool = false,
1482
1485
  localizeSimulator: Bool = false,
1483
1486
  darkMode: Bool? = nil,
1484
1487
  appIdentifier: String? = nil,
@@ -1499,7 +1502,8 @@ func captureIosScreenshots(workspace: String? = nil,
1499
1502
  namespaceLogFiles: Any? = nil,
1500
1503
  concurrentSimulators: Bool = true,
1501
1504
  disableSlideToType: Bool = false,
1502
- clonedSourcePackagesPath: String? = nil) {
1505
+ clonedSourcePackagesPath: String? = nil,
1506
+ testplan: String? = nil) {
1503
1507
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1504
1508
  RubyCommand.Argument(name: "project", value: project),
1505
1509
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1515,6 +1519,7 @@ func captureIosScreenshots(workspace: String? = nil,
1515
1519
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1516
1520
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1517
1521
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1522
+ RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1518
1523
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1519
1524
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
1520
1525
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
@@ -1535,7 +1540,8 @@ func captureIosScreenshots(workspace: String? = nil,
1535
1540
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1536
1541
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1537
1542
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1538
- RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1543
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1544
+ RubyCommand.Argument(name: "testplan", value: testplan)])
1539
1545
  _ = runner.executeCommand(command)
1540
1546
  }
1541
1547
 
@@ -1558,6 +1564,7 @@ func captureIosScreenshots(workspace: String? = nil,
1558
1564
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
1559
1565
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
1560
1566
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
1567
+ - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
1561
1568
  - localizeSimulator: Enabling this option will configure the Simulator's system language
1562
1569
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
1563
1570
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -1579,6 +1586,7 @@ func captureIosScreenshots(workspace: String? = nil,
1579
1586
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1580
1587
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1581
1588
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1589
+ - testplan: The testplan associated with the scheme that should be used for testing
1582
1590
  */
1583
1591
  func captureScreenshots(workspace: String? = nil,
1584
1592
  project: String? = nil,
@@ -1595,6 +1603,7 @@ func captureScreenshots(workspace: String? = nil,
1595
1603
  clearPreviousScreenshots: Bool = false,
1596
1604
  reinstallApp: Bool = false,
1597
1605
  eraseSimulator: Bool = false,
1606
+ overrideStatusBar: Bool = false,
1598
1607
  localizeSimulator: Bool = false,
1599
1608
  darkMode: Bool? = nil,
1600
1609
  appIdentifier: String? = nil,
@@ -1615,7 +1624,8 @@ func captureScreenshots(workspace: String? = nil,
1615
1624
  namespaceLogFiles: Any? = nil,
1616
1625
  concurrentSimulators: Bool = true,
1617
1626
  disableSlideToType: Bool = false,
1618
- clonedSourcePackagesPath: String? = nil) {
1627
+ clonedSourcePackagesPath: String? = nil,
1628
+ testplan: String? = nil) {
1619
1629
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1620
1630
  RubyCommand.Argument(name: "project", value: project),
1621
1631
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1631,6 +1641,7 @@ func captureScreenshots(workspace: String? = nil,
1631
1641
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
1632
1642
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
1633
1643
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
1644
+ RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
1634
1645
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
1635
1646
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
1636
1647
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
@@ -1651,7 +1662,8 @@ func captureScreenshots(workspace: String? = nil,
1651
1662
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1652
1663
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1653
1664
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1654
- RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1665
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1666
+ RubyCommand.Argument(name: "testplan", value: testplan)])
1655
1667
  _ = runner.executeCommand(command)
1656
1668
  }
1657
1669
 
@@ -2122,7 +2134,7 @@ func copyArtifacts(keepOriginal: Bool = true,
2122
2134
  }
2123
2135
 
2124
2136
  /**
2125
- Upload a new build to [Crashlytics Beta](http://try.crashlytics.com/beta/)
2137
+ Refer to [Firebase App Distribution](https://appdistro.page.link/fastlane-repo)
2126
2138
 
2127
2139
  - parameters:
2128
2140
  - ipaPath: Path to your IPA file. Optional if you use the _gym_ or _xcodebuild_ action
@@ -2137,6 +2149,10 @@ func copyArtifacts(keepOriginal: Bool = true,
2137
2149
  - notifications: Crashlytics notification option (true/false)
2138
2150
  - debug: Crashlytics debug option (true/false)
2139
2151
 
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
+
2140
2156
  Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.
2141
2157
  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.
2142
2158
  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.
@@ -2211,6 +2227,7 @@ func createAppOnManagedPlayStore(jsonKey: String? = nil,
2211
2227
  - appVersion: Initial version number (e.g. '1.0')
2212
2228
  - sku: SKU Number (e.g. '1234')
2213
2229
  - platform: The platform to use (optional)
2230
+ - platforms: The platforms to use (optional)
2214
2231
  - language: Primary Language (e.g. 'English', 'German')
2215
2232
  - companyName: The name of your company. Only required if it's the first app you create
2216
2233
  - skipItc: Skip the creation of the app on App Store Connect
@@ -2234,6 +2251,7 @@ func createAppOnline(username: String,
2234
2251
  appVersion: String? = nil,
2235
2252
  sku: String,
2236
2253
  platform: String = "ios",
2254
+ platforms: [String]? = nil,
2237
2255
  language: String = "English",
2238
2256
  companyName: String? = nil,
2239
2257
  skipItc: Bool = false,
@@ -2252,6 +2270,7 @@ func createAppOnline(username: String,
2252
2270
  RubyCommand.Argument(name: "app_version", value: appVersion),
2253
2271
  RubyCommand.Argument(name: "sku", value: sku),
2254
2272
  RubyCommand.Argument(name: "platform", value: platform),
2273
+ RubyCommand.Argument(name: "platforms", value: platforms),
2255
2274
  RubyCommand.Argument(name: "language", value: language),
2256
2275
  RubyCommand.Argument(name: "company_name", value: companyName),
2257
2276
  RubyCommand.Argument(name: "skip_itc", value: skipItc),
@@ -2312,6 +2331,7 @@ func createKeychain(name: String? = nil,
2312
2331
  - repo: The name of the repository you want to submit the pull request to
2313
2332
  - title: The title of the pull request
2314
2333
  - body: The contents of the pull request
2334
+ - draft: Indicates whether the pull request is a draft
2315
2335
  - labels: The labels for the pull request
2316
2336
  - milestone: The milestone ID (Integer) for the pull request
2317
2337
  - head: The name of the branch where your changes are implemented (defaults to the current branch name)
@@ -2327,6 +2347,7 @@ func createPullRequest(apiToken: String,
2327
2347
  repo: String,
2328
2348
  title: String,
2329
2349
  body: String? = nil,
2350
+ draft: Bool? = nil,
2330
2351
  labels: [String]? = nil,
2331
2352
  milestone: String? = nil,
2332
2353
  head: String? = nil,
@@ -2339,6 +2360,7 @@ func createPullRequest(apiToken: String,
2339
2360
  RubyCommand.Argument(name: "repo", value: repo),
2340
2361
  RubyCommand.Argument(name: "title", value: title),
2341
2362
  RubyCommand.Argument(name: "body", value: body),
2363
+ RubyCommand.Argument(name: "draft", value: draft),
2342
2364
  RubyCommand.Argument(name: "labels", value: labels),
2343
2365
  RubyCommand.Argument(name: "milestone", value: milestone),
2344
2366
  RubyCommand.Argument(name: "head", value: head),
@@ -2757,7 +2779,7 @@ func downloadDsyms(username: String,
2757
2779
  func downloadFromPlayStore(packageName: String,
2758
2780
  versionName: String? = nil,
2759
2781
  track: String = "production",
2760
- metadataPath: String = "./metadata",
2782
+ metadataPath: String? = nil,
2761
2783
  key: String? = nil,
2762
2784
  issuer: String? = nil,
2763
2785
  jsonKey: String? = nil,
@@ -2994,7 +3016,7 @@ func flock(message: String,
2994
3016
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
2995
3017
  - debugMode: Output debug information in framed screenshots
2996
3018
  - resume: Resume frameit instead of reprocessing all screenshots
2997
- - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
3019
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (default is either general platform defined in the fastfile or IOS to ensure backward compatibility)
2998
3020
  - path: The path to the directory containing the screenshots
2999
3021
 
3000
3022
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -3056,7 +3078,7 @@ func frameScreenshots(white: Bool? = nil,
3056
3078
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
3057
3079
  - debugMode: Output debug information in framed screenshots
3058
3080
  - resume: Resume frameit instead of reprocessing all screenshots
3059
- - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
3081
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (default is either general platform defined in the fastfile or IOS to ensure backward compatibility)
3060
3082
  - path: The path to the directory containing the screenshots
3061
3083
 
3062
3084
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -4476,7 +4498,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4476
4498
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
4477
4499
  - s3Region: Name of the S3 region
4478
4500
  - s3AccessKey: S3 access key
4479
- - s3SecretAccessKey: S3 secret secret access key
4501
+ - s3SecretAccessKey: S3 secret access key
4480
4502
  - s3Bucket: Name of the S3 bucket
4481
4503
  - keychainName: Keychain the items should be imported to
4482
4504
  - 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
@@ -4486,6 +4508,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4486
4508
  - skipDocs: Skip generation of a README.md for the created git repository
4487
4509
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4488
4510
  - 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
+ - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4489
4512
  - outputPath: Path in which to export certificates, key and profile
4490
4513
  - verbose: Print out extra information and all commands
4491
4514
 
@@ -4524,6 +4547,7 @@ func match(type: Any = matchfile.type,
4524
4547
  skipDocs: Bool = matchfile.skipDocs,
4525
4548
  platform: Any = matchfile.platform,
4526
4549
  templateName: Any? = matchfile.templateName,
4550
+ profileName: Any? = matchfile.profileName,
4527
4551
  outputPath: Any? = matchfile.outputPath,
4528
4552
  verbose: Bool = matchfile.verbose) {
4529
4553
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -4559,6 +4583,7 @@ func match(type: Any = matchfile.type,
4559
4583
  RubyCommand.Argument(name: "skip_docs", value: skipDocs),
4560
4584
  RubyCommand.Argument(name: "platform", value: platform),
4561
4585
  RubyCommand.Argument(name: "template_name", value: templateName),
4586
+ RubyCommand.Argument(name: "profile_name", value: profileName),
4562
4587
  RubyCommand.Argument(name: "output_path", value: outputPath),
4563
4588
  RubyCommand.Argument(name: "verbose", value: verbose)])
4564
4589
  _ = runner.executeCommand(command)
@@ -4952,6 +4977,8 @@ func pem(development: Bool = false,
4952
4977
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
4953
4978
  - distributeExternal: Should the build be distributed to external testers?
4954
4979
  - notifyExternalTesters: Should notify external testers?
4980
+ - 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
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
4955
4982
  - firstName: The tester's first name
4956
4983
  - lastName: The tester's last name
4957
4984
  - email: The tester's email
@@ -4986,6 +5013,8 @@ func pilot(username: String,
4986
5013
  usesNonExemptEncryption: Bool = false,
4987
5014
  distributeExternal: Bool = false,
4988
5015
  notifyExternalTesters: Bool = true,
5016
+ appVersion: String? = nil,
5017
+ buildNumber: String? = nil,
4989
5018
  firstName: String? = nil,
4990
5019
  lastName: String? = nil,
4991
5020
  email: String? = nil,
@@ -5016,6 +5045,8 @@ func pilot(username: String,
5016
5045
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
5017
5046
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
5018
5047
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
5048
+ RubyCommand.Argument(name: "app_version", value: appVersion),
5049
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
5019
5050
  RubyCommand.Argument(name: "first_name", value: firstName),
5020
5051
  RubyCommand.Argument(name: "last_name", value: lastName),
5021
5052
  RubyCommand.Argument(name: "email", value: email),
@@ -5071,6 +5102,7 @@ func pluginScores(outputPath: String,
5071
5102
  - platforms: Lint against specific platforms (defaults to all platforms supported by the podspec). Multiple platforms must be comma-delimited (available since cocoapods >= 1.6)
5072
5103
  - skipImportValidation: Lint skips validating that the pod can be imported (available since cocoapods >= 1.3)
5073
5104
  - skipTests: Lint skips building and running tests during validation (available since cocoapods >= 1.3)
5105
+ - analyze: Validate with the Xcode Static Analysis tool (available since cocoapods >= 1.6.1)
5074
5106
 
5075
5107
  Test the syntax of your Podfile by linting the pod against the files of its directory
5076
5108
  */
@@ -5092,7 +5124,8 @@ func podLibLint(useBundleExec: Bool = true,
5092
5124
  noSubspecs: Bool = false,
5093
5125
  platforms: String? = nil,
5094
5126
  skipImportValidation: Bool = false,
5095
- skipTests: Bool = false) {
5127
+ skipTests: Bool = false,
5128
+ analyze: Bool = false) {
5096
5129
  let command = RubyCommand(commandID: "", methodName: "pod_lib_lint", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
5097
5130
  RubyCommand.Argument(name: "podspec", value: podspec),
5098
5131
  RubyCommand.Argument(name: "verbose", value: verbose),
@@ -5111,7 +5144,8 @@ func podLibLint(useBundleExec: Bool = true,
5111
5144
  RubyCommand.Argument(name: "no_subspecs", value: noSubspecs),
5112
5145
  RubyCommand.Argument(name: "platforms", value: platforms),
5113
5146
  RubyCommand.Argument(name: "skip_import_validation", value: skipImportValidation),
5114
- RubyCommand.Argument(name: "skip_tests", value: skipTests)])
5147
+ RubyCommand.Argument(name: "skip_tests", value: skipTests),
5148
+ RubyCommand.Argument(name: "analyze", value: analyze)])
5115
5149
  _ = runner.executeCommand(command)
5116
5150
  }
5117
5151
 
@@ -5243,6 +5277,7 @@ func println(message: String? = nil) {
5243
5277
  - appVersion: Initial version number (e.g. '1.0')
5244
5278
  - sku: SKU Number (e.g. '1234')
5245
5279
  - platform: The platform to use (optional)
5280
+ - platforms: The platforms to use (optional)
5246
5281
  - language: Primary Language (e.g. 'English', 'German')
5247
5282
  - companyName: The name of your company. Only required if it's the first app you create
5248
5283
  - skipItc: Skip the creation of the app on App Store Connect
@@ -5266,6 +5301,7 @@ func produce(username: String,
5266
5301
  appVersion: String? = nil,
5267
5302
  sku: String,
5268
5303
  platform: String = "ios",
5304
+ platforms: [String]? = nil,
5269
5305
  language: String = "English",
5270
5306
  companyName: String? = nil,
5271
5307
  skipItc: Bool = false,
@@ -5284,6 +5320,7 @@ func produce(username: String,
5284
5320
  RubyCommand.Argument(name: "app_version", value: appVersion),
5285
5321
  RubyCommand.Argument(name: "sku", value: sku),
5286
5322
  RubyCommand.Argument(name: "platform", value: platform),
5323
+ RubyCommand.Argument(name: "platforms", value: platforms),
5287
5324
  RubyCommand.Argument(name: "language", value: language),
5288
5325
  RubyCommand.Argument(name: "company_name", value: companyName),
5289
5326
  RubyCommand.Argument(name: "skip_itc", value: skipItc),
@@ -5640,6 +5677,7 @@ func rubyVersion() {
5640
5677
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5641
5678
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5642
5679
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5680
+ - testplan: The testplan associated with the scheme that should be used for testing
5643
5681
  - xctestrun: Run tests using the provided `.xctestrun` file
5644
5682
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5645
5683
  - clean: Should the project be cleaned before building it?
@@ -5647,8 +5685,9 @@ func rubyVersion() {
5647
5685
  - addressSanitizer: Should the address sanitizer be turned on?
5648
5686
  - threadSanitizer: Should the thread sanitizer be turned on?
5649
5687
  - openReport: Should the HTML report be opened when tests are completed?
5688
+ - disableXcpretty: Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
5650
5689
  - outputDirectory: The directory in which all reports will be stored
5651
- - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty)
5690
+ - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
5652
5691
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
5653
5692
  - outputFiles: Comma separated list of the output files, corresponding to the types provided by :output_types (order should match). If specifying an output type of json-compilation-database with :use_clang_report_name enabled, that option will take precedence
5654
5693
  - buildlogPath: The directory where to store the raw log
@@ -5702,6 +5741,7 @@ func runTests(workspace: String? = nil,
5702
5741
  appIdentifier: String? = nil,
5703
5742
  onlyTesting: Any? = nil,
5704
5743
  skipTesting: Any? = nil,
5744
+ testplan: String? = nil,
5705
5745
  xctestrun: String? = nil,
5706
5746
  toolchain: Any? = nil,
5707
5747
  clean: Bool = false,
@@ -5709,6 +5749,7 @@ func runTests(workspace: String? = nil,
5709
5749
  addressSanitizer: Bool? = nil,
5710
5750
  threadSanitizer: Bool? = nil,
5711
5751
  openReport: Bool = false,
5752
+ disableXcpretty: Bool? = nil,
5712
5753
  outputDirectory: String = "./test_output",
5713
5754
  outputStyle: String? = nil,
5714
5755
  outputTypes: String = "html,junit",
@@ -5761,6 +5802,7 @@ func runTests(workspace: String? = nil,
5761
5802
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5762
5803
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5763
5804
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
5805
+ RubyCommand.Argument(name: "testplan", value: testplan),
5764
5806
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5765
5807
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5766
5808
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5768,6 +5810,7 @@ func runTests(workspace: String? = nil,
5768
5810
  RubyCommand.Argument(name: "address_sanitizer", value: addressSanitizer),
5769
5811
  RubyCommand.Argument(name: "thread_sanitizer", value: threadSanitizer),
5770
5812
  RubyCommand.Argument(name: "open_report", value: openReport),
5813
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
5771
5814
  RubyCommand.Argument(name: "output_directory", value: outputDirectory),
5772
5815
  RubyCommand.Argument(name: "output_style", value: outputStyle),
5773
5816
  RubyCommand.Argument(name: "output_types", value: outputTypes),
@@ -5901,6 +5944,7 @@ func say(text: Any,
5901
5944
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5902
5945
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5903
5946
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5947
+ - testplan: The testplan associated with the scheme that should be used for testing
5904
5948
  - xctestrun: Run tests using the provided `.xctestrun` file
5905
5949
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5906
5950
  - clean: Should the project be cleaned before building it?
@@ -5908,8 +5952,9 @@ func say(text: Any,
5908
5952
  - addressSanitizer: Should the address sanitizer be turned on?
5909
5953
  - threadSanitizer: Should the thread sanitizer be turned on?
5910
5954
  - openReport: Should the HTML report be opened when tests are completed?
5955
+ - disableXcpretty: Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
5911
5956
  - outputDirectory: The directory in which all reports will be stored
5912
- - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty)
5957
+ - outputStyle: Define how the output should look like. Valid values are: standard, basic, rspec, or raw (disables xcpretty during xcodebuild)
5913
5958
  - outputTypes: Comma separated list of the output types (e.g. html, junit, json-compilation-database)
5914
5959
  - outputFiles: Comma separated list of the output files, corresponding to the types provided by :output_types (order should match). If specifying an output type of json-compilation-database with :use_clang_report_name enabled, that option will take precedence
5915
5960
  - buildlogPath: The directory where to store the raw log
@@ -5963,6 +6008,7 @@ func scan(workspace: Any? = scanfile.workspace,
5963
6008
  appIdentifier: Any? = scanfile.appIdentifier,
5964
6009
  onlyTesting: Any? = scanfile.onlyTesting,
5965
6010
  skipTesting: Any? = scanfile.skipTesting,
6011
+ testplan: Any? = scanfile.testplan,
5966
6012
  xctestrun: Any? = scanfile.xctestrun,
5967
6013
  toolchain: Any? = scanfile.toolchain,
5968
6014
  clean: Bool = scanfile.clean,
@@ -5970,6 +6016,7 @@ func scan(workspace: Any? = scanfile.workspace,
5970
6016
  addressSanitizer: Bool? = scanfile.addressSanitizer,
5971
6017
  threadSanitizer: Bool? = scanfile.threadSanitizer,
5972
6018
  openReport: Bool = scanfile.openReport,
6019
+ disableXcpretty: Bool? = scanfile.disableXcpretty,
5973
6020
  outputDirectory: Any = scanfile.outputDirectory,
5974
6021
  outputStyle: Any? = scanfile.outputStyle,
5975
6022
  outputTypes: Any = scanfile.outputTypes,
@@ -6022,6 +6069,7 @@ func scan(workspace: Any? = scanfile.workspace,
6022
6069
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6023
6070
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6024
6071
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6072
+ RubyCommand.Argument(name: "testplan", value: testplan),
6025
6073
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
6026
6074
  RubyCommand.Argument(name: "toolchain", value: toolchain),
6027
6075
  RubyCommand.Argument(name: "clean", value: clean),
@@ -6029,6 +6077,7 @@ func scan(workspace: Any? = scanfile.workspace,
6029
6077
  RubyCommand.Argument(name: "address_sanitizer", value: addressSanitizer),
6030
6078
  RubyCommand.Argument(name: "thread_sanitizer", value: threadSanitizer),
6031
6079
  RubyCommand.Argument(name: "open_report", value: openReport),
6080
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
6032
6081
  RubyCommand.Argument(name: "output_directory", value: outputDirectory),
6033
6082
  RubyCommand.Argument(name: "output_style", value: outputStyle),
6034
6083
  RubyCommand.Argument(name: "output_types", value: outputTypes),
@@ -6325,7 +6374,7 @@ func setPodKey(useBundleExec: Bool = true,
6325
6374
  This action helps with CI integration. Add this to the top of your Fastfile if you use CI.
6326
6375
  */
6327
6376
  func setupCi(force: Bool = false,
6328
- provider: Bool = false) {
6377
+ provider: String? = nil) {
6329
6378
  let command = RubyCommand(commandID: "", methodName: "setup_ci", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
6330
6379
  RubyCommand.Argument(name: "provider", value: provider)])
6331
6380
  _ = runner.executeCommand(command)
@@ -6364,13 +6413,16 @@ func setupCircleCi(force: Bool = false) {
6364
6413
  - resultBundle: Produce the result bundle describing what occurred will be placed
6365
6414
 
6366
6415
  - Adds and unlocks keychains from Jenkins 'Keychains and Provisioning Profiles Plugin'|
6416
+ - Sets unlocked keychain to be used by Match|
6367
6417
  - Sets code signing identity from Jenkins 'Keychains and Provisioning Profiles Plugin'|
6368
6418
  - Sets output directory to './output' (gym, scan and backup_xcarchive)|
6369
6419
  - Sets derived data path to './derivedData' (xcodebuild, gym, scan and clear_derived_data, carthage)|
6370
6420
  - Produce result bundle (gym and scan)|
6371
6421
  >|
6372
6422
  This action helps with Jenkins integration. Creates own derived data for each job. All build results like IPA files and archives will be stored in the `./output` directory.
6373
- The action also works with [Keychains and Provisioning Profiles Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Keychains+and+Provisioning+Profiles+Plugin), the selected keychain will be automatically unlocked and the selected code signing identity will be used. By default this action will only work when _fastlane_ is executed on a CI system.
6423
+ The action also works with [Keychains and Provisioning Profiles Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Keychains+and+Provisioning+Profiles+Plugin), the selected keychain will be automatically unlocked and the selected code signing identity will be used.
6424
+ [Match](https://docs.fastlane.tools/actions/match/) will be also set up to use the unlocked keychain and set in read-only mode, if its environment variables were not yet defined.
6425
+ By default this action will only work when _fastlane_ is executed on a CI system.
6374
6426
  */
6375
6427
  func setupJenkins(force: Bool = false,
6376
6428
  unlockKeychain: Bool = true,
@@ -6661,7 +6713,7 @@ func slather(buildDirectory: String? = nil,
6661
6713
  show: Bool = false,
6662
6714
  sourceDirectory: String? = nil,
6663
6715
  outputDirectory: String? = nil,
6664
- ignore: Any? = nil,
6716
+ ignore: [String]? = nil,
6665
6717
  verbose: Bool? = nil,
6666
6718
  useBundleExec: Bool = false,
6667
6719
  binaryBasename: Bool = false,
@@ -6720,6 +6772,7 @@ func slather(buildDirectory: String? = nil,
6720
6772
  - clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
6721
6773
  - reinstallApp: Enabling this option will automatically uninstall the application before running it
6722
6774
  - eraseSimulator: Enabling this option will automatically erase the simulator before running the application
6775
+ - overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
6723
6776
  - localizeSimulator: Enabling this option will configure the Simulator's system language
6724
6777
  - darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
6725
6778
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
@@ -6741,6 +6794,7 @@ func slather(buildDirectory: String? = nil,
6741
6794
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
6742
6795
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
6743
6796
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
6797
+ - testplan: The testplan associated with the scheme that should be used for testing
6744
6798
  */
6745
6799
  func snapshot(workspace: Any? = snapshotfile.workspace,
6746
6800
  project: Any? = snapshotfile.project,
@@ -6757,6 +6811,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6757
6811
  clearPreviousScreenshots: Bool = snapshotfile.clearPreviousScreenshots,
6758
6812
  reinstallApp: Bool = snapshotfile.reinstallApp,
6759
6813
  eraseSimulator: Bool = snapshotfile.eraseSimulator,
6814
+ overrideStatusBar: Bool = snapshotfile.overrideStatusBar,
6760
6815
  localizeSimulator: Bool = snapshotfile.localizeSimulator,
6761
6816
  darkMode: Bool? = snapshotfile.darkMode,
6762
6817
  appIdentifier: Any? = snapshotfile.appIdentifier,
@@ -6777,7 +6832,8 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6777
6832
  namespaceLogFiles: Any? = snapshotfile.namespaceLogFiles,
6778
6833
  concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
6779
6834
  disableSlideToType: Bool = snapshotfile.disableSlideToType,
6780
- clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath) {
6835
+ clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath,
6836
+ testplan: Any? = snapshotfile.testplan) {
6781
6837
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6782
6838
  RubyCommand.Argument(name: "project", value: project),
6783
6839
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6793,6 +6849,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6793
6849
  RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
6794
6850
  RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
6795
6851
  RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
6852
+ RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
6796
6853
  RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
6797
6854
  RubyCommand.Argument(name: "dark_mode", value: darkMode),
6798
6855
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
@@ -6813,7 +6870,8 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6813
6870
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
6814
6871
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
6815
6872
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
6816
- RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
6873
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
6874
+ RubyCommand.Argument(name: "testplan", value: testplan)])
6817
6875
  _ = runner.executeCommand(command)
6818
6876
  }
6819
6877
 
@@ -7042,7 +7100,7 @@ func supply(packageName: String,
7042
7100
  releaseStatus: String = "completed",
7043
7101
  track: String = "production",
7044
7102
  rollout: String? = nil,
7045
- metadataPath: String = "./metadata",
7103
+ metadataPath: String? = nil,
7046
7104
  key: String? = nil,
7047
7105
  issuer: String? = nil,
7048
7106
  jsonKey: String? = nil,
@@ -7123,6 +7181,7 @@ func supply(packageName: String,
7123
7181
  - quiet: Don't print status logs like 'Linting <file>' & 'Done linting'
7124
7182
  - executable: Path to the `swiftlint` executable on your machine
7125
7183
  - format: Format code when mode is :autocorrect
7184
+ - noCache: Ignore the cache when mode is :autocorrect or :lint
7126
7185
  - compilerLogPath: Compiler log path when mode is :analyze
7127
7186
  */
7128
7187
  func swiftlint(mode: Any = "lint",
@@ -7137,6 +7196,7 @@ func swiftlint(mode: Any = "lint",
7137
7196
  quiet: Bool = false,
7138
7197
  executable: String? = nil,
7139
7198
  format: Bool = false,
7199
+ noCache: Bool = false,
7140
7200
  compilerLogPath: String? = nil) {
7141
7201
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
7142
7202
  RubyCommand.Argument(name: "path", value: path),
@@ -7150,6 +7210,7 @@ func swiftlint(mode: Any = "lint",
7150
7210
  RubyCommand.Argument(name: "quiet", value: quiet),
7151
7211
  RubyCommand.Argument(name: "executable", value: executable),
7152
7212
  RubyCommand.Argument(name: "format", value: format),
7213
+ RubyCommand.Argument(name: "no_cache", value: noCache),
7153
7214
  RubyCommand.Argument(name: "compiler_log_path", value: compilerLogPath)])
7154
7215
  _ = runner.executeCommand(command)
7155
7216
  }
@@ -7181,7 +7242,7 @@ func swiftlint(mode: Any = "lint",
7181
7242
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
7182
7243
  - s3Region: Name of the S3 region
7183
7244
  - s3AccessKey: S3 access key
7184
- - s3SecretAccessKey: S3 secret secret access key
7245
+ - s3SecretAccessKey: S3 secret access key
7185
7246
  - s3Bucket: Name of the S3 bucket
7186
7247
  - keychainName: Keychain the items should be imported to
7187
7248
  - 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
@@ -7191,6 +7252,7 @@ func swiftlint(mode: Any = "lint",
7191
7252
  - skipDocs: Skip generation of a README.md for the created git repository
7192
7253
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
7193
7254
  - 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
+ - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7194
7256
  - outputPath: Path in which to export certificates, key and profile
7195
7257
  - verbose: Print out extra information and all commands
7196
7258
 
@@ -7229,6 +7291,7 @@ func syncCodeSigning(type: String = "development",
7229
7291
  skipDocs: Bool = false,
7230
7292
  platform: String = "ios",
7231
7293
  templateName: String? = nil,
7294
+ profileName: String? = nil,
7232
7295
  outputPath: String? = nil,
7233
7296
  verbose: Bool = false) {
7234
7297
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -7264,6 +7327,7 @@ func syncCodeSigning(type: String = "development",
7264
7327
  RubyCommand.Argument(name: "skip_docs", value: skipDocs),
7265
7328
  RubyCommand.Argument(name: "platform", value: platform),
7266
7329
  RubyCommand.Argument(name: "template_name", value: templateName),
7330
+ RubyCommand.Argument(name: "profile_name", value: profileName),
7267
7331
  RubyCommand.Argument(name: "output_path", value: outputPath),
7268
7332
  RubyCommand.Argument(name: "verbose", value: verbose)])
7269
7333
  _ = runner.executeCommand(command)
@@ -7356,6 +7420,8 @@ func testfairy(apiKey: String,
7356
7420
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7357
7421
  - distributeExternal: Should the build be distributed to external testers?
7358
7422
  - notifyExternalTesters: Should notify external testers?
7423
+ - 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
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
7359
7425
  - firstName: The tester's first name
7360
7426
  - lastName: The tester's last name
7361
7427
  - email: The tester's email
@@ -7390,6 +7456,8 @@ func testflight(username: String,
7390
7456
  usesNonExemptEncryption: Bool = false,
7391
7457
  distributeExternal: Bool = false,
7392
7458
  notifyExternalTesters: Bool = true,
7459
+ appVersion: String? = nil,
7460
+ buildNumber: String? = nil,
7393
7461
  firstName: String? = nil,
7394
7462
  lastName: String? = nil,
7395
7463
  email: String? = nil,
@@ -7420,6 +7488,8 @@ func testflight(username: String,
7420
7488
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
7421
7489
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
7422
7490
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
7491
+ RubyCommand.Argument(name: "app_version", value: appVersion),
7492
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
7423
7493
  RubyCommand.Argument(name: "first_name", value: firstName),
7424
7494
  RubyCommand.Argument(name: "last_name", value: lastName),
7425
7495
  RubyCommand.Argument(name: "email", value: email),
@@ -7557,6 +7627,45 @@ func updateAppIdentifier(xcodeproj: String,
7557
7627
  _ = runner.executeCommand(command)
7558
7628
  }
7559
7629
 
7630
+ /**
7631
+ Configures Xcode's Codesigning options
7632
+
7633
+ - parameters:
7634
+ - path: Path to your Xcode project
7635
+ - useAutomaticSigning: Defines if project should use automatic signing
7636
+ - teamId: Team ID, is used when upgrading project
7637
+ - targets: Specify targets you want to toggle the signing mech. (default to all targets)
7638
+ - buildConfigurations: Specify build_configurations you want to toggle the signing mech. (default to all targets)
7639
+ - codeSignIdentity: Code signing identity type (iPhone Developer, iPhone Distribution)
7640
+ - profileName: Provisioning profile name to use for code signing
7641
+ - profileUuid: Provisioning profile UUID to use for code signing
7642
+ - bundleIdentifier: Application Product Bundle Identifier
7643
+
7644
+ - returns: The current status (boolean) of codesigning after modification
7645
+
7646
+ Configures Xcode's Codesigning options of all targets in the project
7647
+ */
7648
+ func updateCodeSigningSettings(path: String,
7649
+ useAutomaticSigning: Bool = false,
7650
+ teamId: String? = nil,
7651
+ targets: [String]? = nil,
7652
+ buildConfigurations: [String]? = nil,
7653
+ codeSignIdentity: String? = nil,
7654
+ profileName: String? = nil,
7655
+ profileUuid: String? = nil,
7656
+ bundleIdentifier: String? = nil) {
7657
+ let command = RubyCommand(commandID: "", methodName: "update_code_signing_settings", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7658
+ RubyCommand.Argument(name: "use_automatic_signing", value: useAutomaticSigning),
7659
+ RubyCommand.Argument(name: "team_id", value: teamId),
7660
+ RubyCommand.Argument(name: "targets", value: targets),
7661
+ RubyCommand.Argument(name: "build_configurations", value: buildConfigurations),
7662
+ RubyCommand.Argument(name: "code_sign_identity", value: codeSignIdentity),
7663
+ RubyCommand.Argument(name: "profile_name", value: profileName),
7664
+ RubyCommand.Argument(name: "profile_uuid", value: profileUuid),
7665
+ RubyCommand.Argument(name: "bundle_identifier", value: bundleIdentifier)])
7666
+ _ = runner.executeCommand(command)
7667
+ }
7668
+
7560
7669
  /**
7561
7670
  Makes sure fastlane-tools are up-to-date when running fastlane
7562
7671
 
@@ -8091,7 +8200,7 @@ func uploadToPlayStore(packageName: String,
8091
8200
  releaseStatus: String = "completed",
8092
8201
  track: String = "production",
8093
8202
  rollout: String? = nil,
8094
- metadataPath: String = "./metadata",
8203
+ metadataPath: String? = nil,
8095
8204
  key: String? = nil,
8096
8205
  issuer: String? = nil,
8097
8206
  jsonKey: String? = nil,
@@ -8217,6 +8326,8 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8217
8326
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
8218
8327
  - distributeExternal: Should the build be distributed to external testers?
8219
8328
  - notifyExternalTesters: Should notify external testers?
8329
+ - 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
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
8220
8331
  - firstName: The tester's first name
8221
8332
  - lastName: The tester's last name
8222
8333
  - email: The tester's email
@@ -8251,6 +8362,8 @@ func uploadToTestflight(username: String,
8251
8362
  usesNonExemptEncryption: Bool = false,
8252
8363
  distributeExternal: Bool = false,
8253
8364
  notifyExternalTesters: Bool = true,
8365
+ appVersion: String? = nil,
8366
+ buildNumber: String? = nil,
8254
8367
  firstName: String? = nil,
8255
8368
  lastName: String? = nil,
8256
8369
  email: String? = nil,
@@ -8281,6 +8394,8 @@ func uploadToTestflight(username: String,
8281
8394
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
8282
8395
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
8283
8396
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
8397
+ RubyCommand.Argument(name: "app_version", value: appVersion),
8398
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
8284
8399
  RubyCommand.Argument(name: "first_name", value: firstName),
8285
8400
  RubyCommand.Argument(name: "last_name", value: lastName),
8286
8401
  RubyCommand.Argument(name: "email", value: email),
@@ -8590,7 +8705,7 @@ func xcov(workspace: String? = nil,
8590
8705
  coverallsServiceJobId: String? = nil,
8591
8706
  coverallsRepoToken: String? = nil,
8592
8707
  xcconfig: String? = nil,
8593
- ideFoundationPath: String = "/Applications/Xcode-11.2.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8708
+ ideFoundationPath: String = "/Applications/Xcode-11.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8594
8709
  legacySupport: Bool = false) {
8595
8710
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8596
8711
  RubyCommand.Argument(name: "project", value: project),
@@ -8735,4 +8850,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8735
8850
 
8736
8851
  // Please don't remove the lines below
8737
8852
  // They are used to detect outdated files
8738
- // FastlaneRunnerAPIVersion [0.9.71]
8853
+ // FastlaneRunnerAPIVersion [0.9.75]