fastlane 2.139.0 → 2.144.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +85 -72
  4. data/cert/lib/cert/options.rb +12 -5
  5. data/cert/lib/cert/runner.rb +13 -0
  6. data/deliver/lib/deliver/options.rb +28 -2
  7. data/deliver/lib/deliver/runner.rb +13 -2
  8. data/fastlane/lib/fastlane/action.rb +1 -1
  9. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  10. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  11. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  12. data/fastlane/lib/fastlane/actions/README.md +2 -0
  13. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +13 -5
  14. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +7 -1
  15. data/fastlane/lib/fastlane/actions/build_app.rb +157 -6
  16. data/fastlane/lib/fastlane/actions/build_ios_app.rb +28 -132
  17. data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -0
  18. data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +3 -0
  19. data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -2
  20. data/fastlane/lib/fastlane/actions/crashlytics.rb +14 -2
  21. data/fastlane/lib/fastlane/actions/create_pull_request.rb +29 -0
  22. data/fastlane/lib/fastlane/actions/docs/{build_ios_app.md → build_app.md} +1 -1
  23. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +22 -6
  24. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +22 -6
  25. data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +35 -7
  27. data/fastlane/lib/fastlane/actions/frame_screenshots.rb +2 -1
  28. data/fastlane/lib/fastlane/actions/get_github_release.rb +3 -0
  29. data/fastlane/lib/fastlane/actions/gradle.rb +43 -2
  30. data/fastlane/lib/fastlane/actions/gym.rb +3 -7
  31. data/fastlane/lib/fastlane/actions/import_from_git.rb +4 -0
  32. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +9 -3
  33. data/fastlane/lib/fastlane/actions/notarize.rb +183 -0
  34. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +7 -1
  35. data/fastlane/lib/fastlane/actions/run_tests.rb +5 -22
  36. data/fastlane/lib/fastlane/actions/s3.rb +5 -291
  37. data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
  38. data/fastlane/lib/fastlane/actions/spm.rb +8 -0
  39. data/fastlane/lib/fastlane/actions/swiftlint.rb +45 -9
  40. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +190 -0
  41. data/fastlane/lib/fastlane/actions/update_plist.rb +37 -2
  42. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +13 -3
  43. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -0
  44. data/fastlane/lib/fastlane/fast_file.rb +13 -3
  45. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  46. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +56 -0
  47. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
  48. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
  49. data/fastlane/lib/fastlane/runner.rb +23 -18
  50. data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +1 -1
  51. data/fastlane/lib/fastlane/version.rb +1 -1
  52. data/fastlane/swift/Deliverfile.swift +1 -1
  53. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  54. data/fastlane/swift/Fastlane.swift +422 -45
  55. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  56. data/fastlane/swift/Gymfile.swift +1 -1
  57. data/fastlane/swift/GymfileProtocol.swift +17 -1
  58. data/fastlane/swift/Matchfile.swift +1 -1
  59. data/fastlane/swift/MatchfileProtocol.swift +23 -3
  60. data/fastlane/swift/Precheckfile.swift +1 -1
  61. data/fastlane/swift/RubyCommand.swift +1 -1
  62. data/fastlane/swift/Scanfile.swift +1 -1
  63. data/fastlane/swift/ScanfileProtocol.swift +21 -1
  64. data/fastlane/swift/Screengrabfile.swift +1 -1
  65. data/fastlane/swift/Snapshotfile.swift +1 -1
  66. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  67. data/fastlane_core/lib/fastlane_core/cert_checker.rb +28 -0
  68. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  69. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -0
  70. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -0
  71. data/fastlane_core/lib/fastlane_core/project.rb +27 -0
  72. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +15 -2
  73. data/frameit/lib/frameit/commands_generator.rb +25 -0
  74. data/frameit/lib/frameit/config_parser.rb +31 -9
  75. data/frameit/lib/frameit/device.rb +90 -0
  76. data/frameit/lib/frameit/device_types.rb +121 -5
  77. data/frameit/lib/frameit/editor.rb +28 -40
  78. data/frameit/lib/frameit/offsets.rb +8 -1
  79. data/frameit/lib/frameit/options.rb +81 -54
  80. data/frameit/lib/frameit/runner.rb +17 -7
  81. data/frameit/lib/frameit/screenshot.rb +35 -47
  82. data/frameit/lib/frameit/template_finder.rb +15 -12
  83. data/gym/lib/gym/code_signing_mapping.rb +32 -3
  84. data/gym/lib/gym/detect_values.rb +34 -2
  85. data/gym/lib/gym/generators/package_command_generator.rb +8 -0
  86. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +52 -17
  87. data/gym/lib/gym/module.rb +8 -0
  88. data/gym/lib/gym/options.rb +25 -1
  89. data/gym/lib/gym/runner.rb +70 -21
  90. data/match/lib/match/change_password.rb +1 -1
  91. data/match/lib/match/encryption.rb +4 -0
  92. data/match/lib/match/encryption/openssl.rb +1 -1
  93. data/match/lib/match/generator.rb +17 -3
  94. data/match/lib/match/importer.rb +35 -20
  95. data/match/lib/match/module.rb +5 -2
  96. data/match/lib/match/nuke.rb +59 -17
  97. data/match/lib/match/options.rb +38 -15
  98. data/match/lib/match/runner.rb +24 -8
  99. data/match/lib/match/setup.rb +1 -1
  100. data/match/lib/match/spaceship_ensure.rb +19 -9
  101. data/match/lib/match/storage.rb +4 -0
  102. data/match/lib/match/storage/git_storage.rb +5 -2
  103. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  104. data/match/lib/match/storage/s3_storage.rb +162 -0
  105. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  106. data/pilot/lib/pilot/build_manager.rb +24 -9
  107. data/scan/lib/scan/detect_values.rb +6 -1
  108. data/scan/lib/scan/manager.rb +18 -1
  109. data/scan/lib/scan/options.rb +28 -1
  110. data/scan/lib/scan/runner.rb +9 -7
  111. data/scan/lib/scan/slack_poster.rb +1 -1
  112. data/scan/lib/scan/test_command_generator.rb +12 -5
  113. data/screengrab/lib/screengrab/runner.rb +31 -18
  114. data/sigh/lib/sigh/.runner.rb.swp +0 -0
  115. data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
  116. data/snapshot/lib/snapshot/options.rb +12 -1
  117. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  118. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +13 -0
  119. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
  120. data/spaceship/lib/spaceship/connect_api/models/.bundle_id.rb.swp +0 -0
  121. data/{gym/lib/gym/.runner.rb.swp → spaceship/lib/spaceship/connect_api/models/.bundle_id_capability.rb.swp} +0 -0
  122. data/spaceship/lib/spaceship/connect_api/models/app.rb +11 -0
  123. data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +4 -0
  124. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -2
  125. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +2 -0
  126. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +29 -0
  127. data/spaceship/lib/spaceship/portal/app.rb +11 -2
  128. data/spaceship/lib/spaceship/tunes/app_version.rb +6 -1
  129. data/spaceship/lib/spaceship/tunes/iap.rb +11 -11
  130. data/spaceship/lib/spaceship/tunes/iap_detail.rb +7 -3
  131. data/spaceship/lib/spaceship/tunes/iap_families.rb +12 -1
  132. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +26 -17
  133. data/spaceship/lib/spaceship/tunes/iap_status.rb +5 -1
  134. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  135. data/supply/lib/supply/client.rb +1 -1
  136. metadata +63 -18
@@ -24,7 +24,7 @@ module Fastlane
24
24
  adb_path = File.join(android_home, "platform-tools", "adb")
25
25
  end
26
26
 
27
- self.adb_path = adb_path
27
+ self.adb_path = File.expand_path(adb_path)
28
28
  self.adb_host = adb_host
29
29
  end
30
30
 
@@ -0,0 +1,56 @@
1
+ require 'aws-sdk-s3'
2
+
3
+ module Fastlane
4
+ module Helper
5
+ class S3ClientHelper
6
+ attr_reader :client
7
+
8
+ def initialize(access_key: nil, secret_access_key: nil, region: nil)
9
+ creds = Aws::Credentials.new(access_key, secret_access_key)
10
+ Aws.config.update({
11
+ region: region,
12
+ credentials: creds
13
+ })
14
+
15
+ @client = Aws::S3::Client.new
16
+ end
17
+
18
+ def list_buckets
19
+ return @client.list_buckets
20
+ end
21
+
22
+ def upload_file(bucket_name, file_name, file_data, acl)
23
+ bucket = find_bucket!(bucket_name)
24
+ details = {
25
+ acl: acl,
26
+ key: file_name,
27
+ body: file_data
28
+ }
29
+ obj = bucket.put_object(details)
30
+
31
+ # When you enable versioning on a S3 bucket,
32
+ # writing to an object will create an object version
33
+ # instead of replacing the existing object.
34
+ # http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
35
+ if obj.kind_of?(Aws::S3::ObjectVersion)
36
+ obj = obj.object
37
+ end
38
+
39
+ # Return public url
40
+ obj.public_url.to_s
41
+ end
42
+
43
+ def delete_file(bucket, file_name)
44
+ bucket = find_bucket!(bucket_name)
45
+ bucket.objects[file_name].delete
46
+ end
47
+
48
+ def find_bucket!(bucket_name)
49
+ bucket = Aws::S3::Bucket.new(bucket_name, client: @client)
50
+ raise "Bucket '#{bucket_name}' not found" unless bucket.exists?
51
+
52
+ return bucket
53
+ end
54
+ end
55
+ end
56
+ end
@@ -373,7 +373,7 @@ module Fastlane
373
373
  # (a plugin may contain any number of actions)
374
374
  version_number = Fastlane::ActionCollector.determine_version(gem_name)
375
375
  references = Fastlane.const_get(module_name).all_classes.collect do |path|
376
- next unless File.dirname(path).end_with?("/actions") # we only want to match actions
376
+ next unless File.dirname(path).include?("/actions") # we only want to match actions
377
377
 
378
378
  File.basename(path).gsub("_action", "").gsub(".rb", "").to_sym # the _action is optional
379
379
  end
@@ -157,7 +157,9 @@ CrossPlatform/ForkUsage:
157
157
  - "**/plugins/template/**/*"
158
158
  Lint/IsStringUsage:
159
159
  Include:
160
+ - cert/**/*
160
161
  - gym/**/*
162
+ - match/**/*
161
163
  - screengrab/**/*
162
164
  - supply/**/*
163
165
  Style/MethodCallWithArgsParentheses:
@@ -225,27 +225,32 @@ module Fastlane
225
225
 
226
226
  begin
227
227
  Dir.chdir(custom_dir) do # go up from the fastlane folder, to the project folder
228
- # If another action is calling this action, we shouldn't show it in the summary
228
+ # Removing step_name before its parsed into configurations
229
+ args = arguments.kind_of?(Array) && arguments.first.kind_of?(Hash) ? arguments.first : {}
230
+ step_name = args.delete(:step_name)
231
+
232
+ # arguments is an array by default, containing an hash with the actual parameters
233
+ # Since we usually just need the passed hash, we'll just use the first object if there is only one
234
+ if arguments.count == 0
235
+ configurations = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
236
+ elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
237
+ configurations = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
238
+ elsif !class_ref.available_options
239
+ # This action does not use the new action format
240
+ # Just passing the arguments to this method
241
+ configurations = arguments
242
+ else
243
+ UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
244
+ end
229
245
 
246
+ # If another action is calling this action, we shouldn't show it in the summary
247
+ # A nil value for action_name will hide it from the summary
230
248
  unless from_action
231
- args = arguments.kind_of?(Array) && arguments.first.kind_of?(Hash) ? arguments.first : {}
232
- action_name = args[:step_name] || class_ref.step_text
233
- args.delete(:step_name)
249
+ action_name = step_name
250
+ action_name ||= class_ref.method(:step_text).arity == 1 ? class_ref.step_text(configurations) : class_ref.step_text
234
251
  end
235
- Actions.execute_action(action_name) do
236
- # arguments is an array by default, containing an hash with the actual parameters
237
- # Since we usually just need the passed hash, we'll just use the first object if there is only one
238
- if arguments.count == 0
239
- arguments = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
240
- elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
241
- arguments = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
242
- elsif !class_ref.available_options
243
- # This action does not use the new action format
244
- # Just passing the arguments to this method
245
- else
246
- UI.user_error!("You have to call the integration like `#{method_sym}(key: \"value\")`. Run `fastlane action #{method_sym}` for all available keys. Please check out the current documentation on GitHub.")
247
- end
248
252
 
253
+ Actions.execute_action(action_name) do
249
254
  if Fastlane::Actions.is_deprecated?(class_ref)
250
255
  puts("==========================================".deprecated)
251
256
  puts("This action (#{method_sym}) is deprecated".deprecated)
@@ -253,7 +258,7 @@ module Fastlane
253
258
  puts("==========================================\n".deprecated)
254
259
  end
255
260
  class_ref.runner = self # needed to call another action from an action
256
- return class_ref.run(arguments)
261
+ return class_ref.run(configurations)
257
262
  end
258
263
  end
259
264
  rescue Interrupt => e
@@ -83,7 +83,7 @@ module Fastlane
83
83
 
84
84
  case command.method_name
85
85
  when "sh"
86
- error_callback = proc { |string_value| closure_argument_value = string_value }
86
+ error_callback = proc { |string_value| closure_argument_value = string_value } if parameter_map[:error_callback]
87
87
  command_param = parameter_map[:command]
88
88
  log_param = parameter_map[:log]
89
89
  action_return = Fastlane::FastFile.sh(command_param, log: log_param, error_callback: error_callback)
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.139.0'.freeze
2
+ VERSION = '2.144.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.139.0
21
+ // Generated with fastlane 2.144.0
@@ -57,10 +57,10 @@ protocol DeliverfileProtocol: class {
57
57
  /// Rejects the previously submitted build if it's in a state where it's possible
58
58
  var rejectIfPossible: Bool { get }
59
59
 
60
- /// Should the app be automatically released once it's approved?
60
+ /// Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
61
61
  var automaticRelease: Bool { get }
62
62
 
63
- /// Date in milliseconds for automatically releasing on pending approval
63
+ /// Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
64
64
  var autoReleaseDate: String? { get }
65
65
 
66
66
  /// Enable the phased release feature of iTC
@@ -246,4 +246,4 @@ extension DeliverfileProtocol {
246
246
 
247
247
  // Please don't remove the lines below
248
248
  // They are used to detect outdated files
249
- // FastlaneRunnerAPIVersion [0.9.18]
249
+ // FastlaneRunnerAPIVersion [0.9.19]
@@ -441,8 +441,8 @@ func appledoc(input: Any,
441
441
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
442
442
  - submitForReview: Submit the new version for Review after uploading everything
443
443
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
444
- - automaticRelease: Should the app be automatically released once it's approved?
445
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
444
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
445
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
446
446
  - phasedRelease: Enable the phased release feature of iTC
447
447
  - resetRatings: Reset the summary rating when you release a new version of the application
448
448
  - priceTier: The price tier of this application
@@ -829,6 +829,7 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
829
829
  - task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
830
830
  - flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
831
831
  - buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
832
+ - tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
832
833
  - flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
833
834
  - projectDir: The root directory of the gradle project
834
835
  - gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
@@ -842,9 +843,10 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
842
843
 
843
844
  Run `./gradlew tasks` to get a list of all available gradle tasks for your project
844
845
  */
845
- func buildAndroidApp(task: String,
846
+ func buildAndroidApp(task: String? = nil,
846
847
  flavor: String? = nil,
847
848
  buildType: String? = nil,
849
+ tasks: [String]? = nil,
848
850
  flags: String? = nil,
849
851
  projectDir: String = ".",
850
852
  gradlePath: String? = nil,
@@ -856,6 +858,7 @@ func buildAndroidApp(task: String,
856
858
  let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
857
859
  RubyCommand.Argument(name: "flavor", value: flavor),
858
860
  RubyCommand.Argument(name: "build_type", value: buildType),
861
+ RubyCommand.Argument(name: "tasks", value: tasks),
859
862
  RubyCommand.Argument(name: "flags", value: flags),
860
863
  RubyCommand.Argument(name: "project_dir", value: projectDir),
861
864
  RubyCommand.Argument(name: "gradle_path", value: gradlePath),
@@ -868,7 +871,7 @@ func buildAndroidApp(task: String,
868
871
  }
869
872
 
870
873
  /**
871
- Alias for the `build_ios_app` action
874
+ Easily build and sign your app (via _gym_)
872
875
 
873
876
  - parameters:
874
877
  - workspace: Path to the workspace file
@@ -881,6 +884,7 @@ func buildAndroidApp(task: String,
881
884
  - silent: Hide all information that's not necessary while building
882
885
  - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
883
886
  - skipPackageIpa: Should we skip packaging the ipa?
887
+ - skipPackagePkg: Should we skip packaging the pkg?
884
888
  - includeSymbols: Should the ipa file include symbols?
885
889
  - includeBitcode: Should the ipa file include bitcode?
886
890
  - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
@@ -889,6 +893,8 @@ func buildAndroidApp(task: String,
889
893
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
890
894
  - skipArchive: After building, don't archive, effectively not including -archivePath param
891
895
  - skipCodesigning: Build without codesigning
896
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
897
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
892
898
  - buildPath: The directory in which the archive should be stored in
893
899
  - archivePath: The path to the created archive
894
900
  - derivedDataPath: The directory where built products and other derived data will go
@@ -911,6 +917,7 @@ func buildAndroidApp(task: String,
911
917
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
912
918
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
913
919
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
920
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
914
921
 
915
922
  - returns: The absolute path to the generated ipa file
916
923
 
@@ -926,6 +933,7 @@ func buildApp(workspace: String? = nil,
926
933
  silent: Bool = false,
927
934
  codesigningIdentity: String? = nil,
928
935
  skipPackageIpa: Bool = false,
936
+ skipPackagePkg: Bool = false,
929
937
  includeSymbols: Bool? = nil,
930
938
  includeBitcode: Bool? = nil,
931
939
  exportMethod: String? = nil,
@@ -934,6 +942,8 @@ func buildApp(workspace: String? = nil,
934
942
  skipBuildArchive: Bool? = nil,
935
943
  skipArchive: Bool? = nil,
936
944
  skipCodesigning: Bool? = nil,
945
+ catalystPlatform: String? = nil,
946
+ installerCertName: String? = nil,
937
947
  buildPath: String? = nil,
938
948
  archivePath: String? = nil,
939
949
  derivedDataPath: String? = nil,
@@ -955,7 +965,8 @@ func buildApp(workspace: String? = nil,
955
965
  xcprettyReportJson: String? = nil,
956
966
  analyzeBuildTime: Bool? = nil,
957
967
  xcprettyUtf: Bool? = nil,
958
- skipProfileDetection: Bool = false) {
968
+ skipProfileDetection: Bool = false,
969
+ clonedSourcePackagesPath: String? = nil) {
959
970
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
960
971
  RubyCommand.Argument(name: "project", value: project),
961
972
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -966,6 +977,7 @@ func buildApp(workspace: String? = nil,
966
977
  RubyCommand.Argument(name: "silent", value: silent),
967
978
  RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
968
979
  RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
980
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
969
981
  RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
970
982
  RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
971
983
  RubyCommand.Argument(name: "export_method", value: exportMethod),
@@ -974,6 +986,8 @@ func buildApp(workspace: String? = nil,
974
986
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
975
987
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
976
988
  RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
989
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
990
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
977
991
  RubyCommand.Argument(name: "build_path", value: buildPath),
978
992
  RubyCommand.Argument(name: "archive_path", value: archivePath),
979
993
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -995,12 +1009,13 @@ func buildApp(workspace: String? = nil,
995
1009
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
996
1010
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
997
1011
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
998
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
1012
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1013
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
999
1014
  _ = runner.executeCommand(command)
1000
1015
  }
1001
1016
 
1002
1017
  /**
1003
- Easily build and sign your app (via _gym_)
1018
+ Alias for the `build_app` action but only for iOS
1004
1019
 
1005
1020
  - parameters:
1006
1021
  - workspace: Path to the workspace file
@@ -1043,6 +1058,7 @@ func buildApp(workspace: String? = nil,
1043
1058
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1044
1059
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1045
1060
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1061
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1046
1062
 
1047
1063
  - returns: The absolute path to the generated ipa file
1048
1064
 
@@ -1087,7 +1103,8 @@ func buildIosApp(workspace: String? = nil,
1087
1103
  xcprettyReportJson: String? = nil,
1088
1104
  analyzeBuildTime: Bool? = nil,
1089
1105
  xcprettyUtf: Bool? = nil,
1090
- skipProfileDetection: Bool = false) {
1106
+ skipProfileDetection: Bool = false,
1107
+ clonedSourcePackagesPath: String? = nil) {
1091
1108
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1092
1109
  RubyCommand.Argument(name: "project", value: project),
1093
1110
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -1127,7 +1144,146 @@ func buildIosApp(workspace: String? = nil,
1127
1144
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
1128
1145
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
1129
1146
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
1130
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
1147
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1148
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1149
+ _ = runner.executeCommand(command)
1150
+ }
1151
+
1152
+ /**
1153
+ Alias for the `build_app` action but only for macOS
1154
+
1155
+ - parameters:
1156
+ - workspace: Path to the workspace file
1157
+ - project: Path to the project file
1158
+ - scheme: The project's scheme. Make sure it's marked as `Shared`
1159
+ - clean: Should the project be cleaned before building it?
1160
+ - outputDirectory: The directory in which the ipa file should be stored in
1161
+ - outputName: The name of the resulting ipa file
1162
+ - configuration: The configuration to use when building the app. Defaults to 'Release'
1163
+ - silent: Hide all information that's not necessary while building
1164
+ - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
1165
+ - skipPackagePkg: Should we skip packaging the pkg?
1166
+ - includeSymbols: Should the ipa file include symbols?
1167
+ - includeBitcode: Should the ipa file include bitcode?
1168
+ - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
1169
+ - exportOptions: Path to an export options plist or a hash with export options. Use 'xcodebuild -help' to print the full set of available options
1170
+ - exportXcargs: Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1171
+ - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
1172
+ - skipArchive: After building, don't archive, effectively not including -archivePath param
1173
+ - skipCodesigning: Build without codesigning
1174
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
1175
+ - buildPath: The directory in which the archive should be stored in
1176
+ - archivePath: The path to the created archive
1177
+ - derivedDataPath: The directory where built products and other derived data will go
1178
+ - resultBundle: Should an Xcode result bundle be generated in the output directory
1179
+ - resultBundlePath: Path to the result bundle directory to create. Ignored if `result_bundle` if false
1180
+ - buildlogPath: The directory where to store the build log
1181
+ - sdk: The SDK that should be used for building the application
1182
+ - toolchain: The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)
1183
+ - destination: Use a custom destination for building the app
1184
+ - exportTeamId: Optional: Sometimes you need to specify a team id when exporting the ipa file
1185
+ - xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
1186
+ - xcconfig: Use an extra XCCONFIG file to build your app
1187
+ - suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
1188
+ - disableXcpretty: Disable xcpretty formatting of build output
1189
+ - xcprettyTestFormat: Use the test (RSpec style) format for build output
1190
+ - xcprettyFormatter: A custom xcpretty formatter to use
1191
+ - xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
1192
+ - xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
1193
+ - xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
1194
+ - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
1195
+ - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
1196
+ - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
1197
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1198
+
1199
+ - returns: The absolute path to the generated ipa file
1200
+
1201
+ More information: https://fastlane.tools/gym
1202
+ */
1203
+ func buildMacApp(workspace: String? = nil,
1204
+ project: String? = nil,
1205
+ scheme: String? = nil,
1206
+ clean: Bool = false,
1207
+ outputDirectory: String = ".",
1208
+ outputName: String? = nil,
1209
+ configuration: String? = nil,
1210
+ silent: Bool = false,
1211
+ codesigningIdentity: String? = nil,
1212
+ skipPackagePkg: Bool = false,
1213
+ includeSymbols: Bool? = nil,
1214
+ includeBitcode: Bool? = nil,
1215
+ exportMethod: String? = nil,
1216
+ exportOptions: [String : Any]? = nil,
1217
+ exportXcargs: String? = nil,
1218
+ skipBuildArchive: Bool? = nil,
1219
+ skipArchive: Bool? = nil,
1220
+ skipCodesigning: Bool? = nil,
1221
+ installerCertName: String? = nil,
1222
+ buildPath: String? = nil,
1223
+ archivePath: String? = nil,
1224
+ derivedDataPath: String? = nil,
1225
+ resultBundle: Bool = false,
1226
+ resultBundlePath: String? = nil,
1227
+ buildlogPath: String = "~/Library/Logs/gym",
1228
+ sdk: String? = nil,
1229
+ toolchain: String? = nil,
1230
+ destination: String? = nil,
1231
+ exportTeamId: String? = nil,
1232
+ xcargs: String? = nil,
1233
+ xcconfig: String? = nil,
1234
+ suppressXcodeOutput: Bool? = nil,
1235
+ disableXcpretty: Bool? = nil,
1236
+ xcprettyTestFormat: Bool? = nil,
1237
+ xcprettyFormatter: String? = nil,
1238
+ xcprettyReportJunit: String? = nil,
1239
+ xcprettyReportHtml: String? = nil,
1240
+ xcprettyReportJson: String? = nil,
1241
+ analyzeBuildTime: Bool? = nil,
1242
+ xcprettyUtf: Bool? = nil,
1243
+ skipProfileDetection: Bool = false,
1244
+ clonedSourcePackagesPath: String? = nil) {
1245
+ let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1246
+ RubyCommand.Argument(name: "project", value: project),
1247
+ RubyCommand.Argument(name: "scheme", value: scheme),
1248
+ RubyCommand.Argument(name: "clean", value: clean),
1249
+ RubyCommand.Argument(name: "output_directory", value: outputDirectory),
1250
+ RubyCommand.Argument(name: "output_name", value: outputName),
1251
+ RubyCommand.Argument(name: "configuration", value: configuration),
1252
+ RubyCommand.Argument(name: "silent", value: silent),
1253
+ RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
1254
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
1255
+ RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
1256
+ RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
1257
+ RubyCommand.Argument(name: "export_method", value: exportMethod),
1258
+ RubyCommand.Argument(name: "export_options", value: exportOptions),
1259
+ RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
1260
+ RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
1261
+ RubyCommand.Argument(name: "skip_archive", value: skipArchive),
1262
+ RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
1263
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
1264
+ RubyCommand.Argument(name: "build_path", value: buildPath),
1265
+ RubyCommand.Argument(name: "archive_path", value: archivePath),
1266
+ RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
1267
+ RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1268
+ RubyCommand.Argument(name: "result_bundle_path", value: resultBundlePath),
1269
+ RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1270
+ RubyCommand.Argument(name: "sdk", value: sdk),
1271
+ RubyCommand.Argument(name: "toolchain", value: toolchain),
1272
+ RubyCommand.Argument(name: "destination", value: destination),
1273
+ RubyCommand.Argument(name: "export_team_id", value: exportTeamId),
1274
+ RubyCommand.Argument(name: "xcargs", value: xcargs),
1275
+ RubyCommand.Argument(name: "xcconfig", value: xcconfig),
1276
+ RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput),
1277
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
1278
+ RubyCommand.Argument(name: "xcpretty_test_format", value: xcprettyTestFormat),
1279
+ RubyCommand.Argument(name: "xcpretty_formatter", value: xcprettyFormatter),
1280
+ RubyCommand.Argument(name: "xcpretty_report_junit", value: xcprettyReportJunit),
1281
+ RubyCommand.Argument(name: "xcpretty_report_html", value: xcprettyReportHtml),
1282
+ RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
1283
+ RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
1284
+ RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
1285
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
1286
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1131
1287
  _ = runner.executeCommand(command)
1132
1288
  }
1133
1289
 
@@ -1305,6 +1461,8 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1305
1461
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
1306
1462
  - namespaceLogFiles: Separate the log files per device and per language
1307
1463
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1464
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1465
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1308
1466
  */
1309
1467
  func captureIosScreenshots(workspace: String? = nil,
1310
1468
  project: String? = nil,
@@ -1339,7 +1497,9 @@ func captureIosScreenshots(workspace: String? = nil,
1339
1497
  resultBundle: Bool = false,
1340
1498
  testTargetName: String? = nil,
1341
1499
  namespaceLogFiles: Any? = nil,
1342
- concurrentSimulators: Bool = true) {
1500
+ concurrentSimulators: Bool = true,
1501
+ disableSlideToType: Bool = false,
1502
+ clonedSourcePackagesPath: String? = nil) {
1343
1503
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1344
1504
  RubyCommand.Argument(name: "project", value: project),
1345
1505
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1373,7 +1533,9 @@ func captureIosScreenshots(workspace: String? = nil,
1373
1533
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1374
1534
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
1375
1535
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1376
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
1536
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1537
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1538
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1377
1539
  _ = runner.executeCommand(command)
1378
1540
  }
1379
1541
 
@@ -1415,6 +1577,8 @@ func captureIosScreenshots(workspace: String? = nil,
1415
1577
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
1416
1578
  - namespaceLogFiles: Separate the log files per device and per language
1417
1579
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
1580
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1581
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1418
1582
  */
1419
1583
  func captureScreenshots(workspace: String? = nil,
1420
1584
  project: String? = nil,
@@ -1449,7 +1613,9 @@ func captureScreenshots(workspace: String? = nil,
1449
1613
  resultBundle: Bool = false,
1450
1614
  testTargetName: String? = nil,
1451
1615
  namespaceLogFiles: Any? = nil,
1452
- concurrentSimulators: Bool = true) {
1616
+ concurrentSimulators: Bool = true,
1617
+ disableSlideToType: Bool = false,
1618
+ clonedSourcePackagesPath: String? = nil) {
1453
1619
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1454
1620
  RubyCommand.Argument(name: "project", value: project),
1455
1621
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1483,7 +1649,9 @@ func captureScreenshots(workspace: String? = nil,
1483
1649
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
1484
1650
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
1485
1651
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
1486
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
1652
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1653
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1654
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
1487
1655
  _ = runner.executeCommand(command)
1488
1656
  }
1489
1657
 
@@ -1560,6 +1728,7 @@ func carthage(command: String = "bootstrap",
1560
1728
 
1561
1729
  - parameters:
1562
1730
  - development: Create a development certificate instead of a distribution one
1731
+ - type: Create specific certificate type (takes precedence over :development)
1563
1732
  - force: Create a certificate even if an existing certificate exists
1564
1733
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
1565
1734
  - username: Your Apple ID Username
@@ -1575,6 +1744,7 @@ func carthage(command: String = "bootstrap",
1575
1744
  Use this action to download the latest code signing identity.
1576
1745
  */
1577
1746
  func cert(development: Bool = false,
1747
+ type: String? = nil,
1578
1748
  force: Bool = false,
1579
1749
  generateAppleCerts: Bool = true,
1580
1750
  username: String,
@@ -1584,8 +1754,9 @@ func cert(development: Bool = false,
1584
1754
  outputPath: String = ".",
1585
1755
  keychainPath: String,
1586
1756
  keychainPassword: String? = nil,
1587
- platform: Any = "ios") {
1757
+ platform: String = "ios") {
1588
1758
  let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
1759
+ RubyCommand.Argument(name: "type", value: type),
1589
1760
  RubyCommand.Argument(name: "force", value: force),
1590
1761
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
1591
1762
  RubyCommand.Argument(name: "username", value: username),
@@ -1951,7 +2122,7 @@ func copyArtifacts(keepOriginal: Bool = true,
1951
2122
  }
1952
2123
 
1953
2124
  /**
1954
- Upload a new build to [Crashlytics Beta](http://try.crashlytics.com/beta/)
2125
+ Refer to [Firebase App Distribution](https://appdistro.page.link/fastlane-repo)
1955
2126
 
1956
2127
  - parameters:
1957
2128
  - ipaPath: Path to your IPA file. Optional if you use the _gym_ or _xcodebuild_ action
@@ -1966,6 +2137,10 @@ func copyArtifacts(keepOriginal: Bool = true,
1966
2137
  - notifications: Crashlytics notification option (true/false)
1967
2138
  - debug: Crashlytics debug option (true/false)
1968
2139
 
2140
+ Crashlytics Beta has been deprecated and replaced with Firebase App Distribution.
2141
+ Beta will continue working until May 4, 2020.
2142
+ Check out the [Firebase App Distribution docs](https://github.com/fastlane/fastlane-plugin-firebase_app_distribution) to get started.
2143
+
1969
2144
  Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.
1970
2145
  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.
1971
2146
  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.
@@ -2142,6 +2317,7 @@ func createKeychain(name: String? = nil,
2142
2317
  - title: The title of the pull request
2143
2318
  - body: The contents of the pull request
2144
2319
  - labels: The labels for the pull request
2320
+ - milestone: The milestone ID (Integer) for the pull request
2145
2321
  - head: The name of the branch where your changes are implemented (defaults to the current branch name)
2146
2322
  - base: The name of the branch you want your changes pulled into (defaults to `master`)
2147
2323
  - apiUrl: The URL of GitHub API - used when the Enterprise (default to `https://api.github.com`)
@@ -2156,6 +2332,7 @@ func createPullRequest(apiToken: String,
2156
2332
  title: String,
2157
2333
  body: String? = nil,
2158
2334
  labels: [String]? = nil,
2335
+ milestone: String? = nil,
2159
2336
  head: String? = nil,
2160
2337
  base: String = "master",
2161
2338
  apiUrl: String = "https://api.github.com",
@@ -2167,6 +2344,7 @@ func createPullRequest(apiToken: String,
2167
2344
  RubyCommand.Argument(name: "title", value: title),
2168
2345
  RubyCommand.Argument(name: "body", value: body),
2169
2346
  RubyCommand.Argument(name: "labels", value: labels),
2347
+ RubyCommand.Argument(name: "milestone", value: milestone),
2170
2348
  RubyCommand.Argument(name: "head", value: head),
2171
2349
  RubyCommand.Argument(name: "base", value: base),
2172
2350
  RubyCommand.Argument(name: "api_url", value: apiUrl),
@@ -2275,8 +2453,8 @@ func deleteKeychain(name: String? = nil,
2275
2453
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
2276
2454
  - submitForReview: Submit the new version for Review after uploading everything
2277
2455
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
2278
- - automaticRelease: Should the app be automatically released once it's approved?
2279
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
2456
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
2457
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
2280
2458
  - phasedRelease: Enable the phased release feature of iTC
2281
2459
  - resetRatings: Reset the summary rating when you release a new version of the application
2282
2460
  - priceTier: The price tier of this application
@@ -2583,7 +2761,7 @@ func downloadDsyms(username: String,
2583
2761
  func downloadFromPlayStore(packageName: String,
2584
2762
  versionName: String? = nil,
2585
2763
  track: String = "production",
2586
- metadataPath: String? = nil,
2764
+ metadataPath: String = "./metadata",
2587
2765
  key: String? = nil,
2588
2766
  issuer: String? = nil,
2589
2767
  jsonKey: String? = nil,
@@ -2658,7 +2836,7 @@ func ensureEnvVars(envVars: [String]) {
2658
2836
  /**
2659
2837
  Raises an exception if not on a specific git branch
2660
2838
 
2661
- - parameter branch: The branch that should be checked for. String that can be either the full name of the branch or a regex to match
2839
+ - parameter branch: The branch that should be checked for. String that can be either the full name of the branch or a regex e.g. `^feature/.*$` to match
2662
2840
 
2663
2841
  This action will check if your git repo is checked out to a specific branch.
2664
2842
  You may only want to make releases from a specific branch, so `ensure_git_branch` will stop a lane if it was accidentally executed on an incorrect branch.
@@ -2718,14 +2896,19 @@ func ensureNoDebugCode(text: String,
2718
2896
  /**
2719
2897
  Ensure the right version of Xcode is used
2720
2898
 
2721
- - parameter version: Xcode version to verify that is selected
2899
+ - parameters:
2900
+ - version: Xcode version to verify that is selected
2901
+ - strict: Should the version be verified strictly (all 3 version numbers), or matching only the given version numbers (i.e. `11.3` == `11.3.x`)
2722
2902
 
2723
2903
  If building your app requires a specific version of Xcode, you can invoke this command before using gym.
2724
2904
  For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.
2725
2905
  You can either manually provide a specific version using `version: ` or you make use of the `.xcode-version` file.
2906
+ Using the `strict` parameter, you can either verify the full set of version numbers strictly (i.e. `11.3.1`) or only a subset of them (i.e. `11.3` or `11`).
2726
2907
  */
2727
- func ensureXcodeVersion(version: String? = nil) {
2728
- let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version)])
2908
+ func ensureXcodeVersion(version: String? = nil,
2909
+ strict: Bool = true) {
2910
+ let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
2911
+ RubyCommand.Argument(name: "strict", value: strict)])
2729
2912
  _ = runner.executeCommand(command)
2730
2913
  }
2731
2914
 
@@ -2807,10 +2990,15 @@ func flock(message: String,
2807
2990
  - forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
2808
2991
  - useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
2809
2992
  - useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
2993
+ - useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
2810
2994
  - useLegacyIphonex: Use iPhone X instead of iPhone XS frames
2995
+ - useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
2996
+ - useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
2997
+ - useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
2811
2998
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
2812
2999
  - debugMode: Output debug information in framed screenshots
2813
3000
  - resume: Resume frameit instead of reprocessing all screenshots
3001
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
2814
3002
  - path: The path to the directory containing the screenshots
2815
3003
 
2816
3004
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -2823,10 +3011,15 @@ func frameScreenshots(white: Bool? = nil,
2823
3011
  forceDeviceType: String? = nil,
2824
3012
  useLegacyIphone5s: Bool = false,
2825
3013
  useLegacyIphone6s: Bool = false,
3014
+ useLegacyIphone7: Bool = false,
2826
3015
  useLegacyIphonex: Bool = false,
3016
+ useLegacyIphonexr: Bool = false,
3017
+ useLegacyIphonexs: Bool = false,
3018
+ useLegacyIphonexsmax: Bool = false,
2827
3019
  forceOrientationBlock: String? = nil,
2828
3020
  debugMode: Bool = false,
2829
3021
  resume: Bool = false,
3022
+ usePlatform: String = "IOS",
2830
3023
  path: String = "./") {
2831
3024
  let command = RubyCommand(commandID: "", methodName: "frame_screenshots", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
2832
3025
  RubyCommand.Argument(name: "silver", value: silver),
@@ -2835,10 +3028,15 @@ func frameScreenshots(white: Bool? = nil,
2835
3028
  RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
2836
3029
  RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
2837
3030
  RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
3031
+ RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
2838
3032
  RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
3033
+ RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3034
+ RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3035
+ RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
2839
3036
  RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
2840
3037
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
2841
3038
  RubyCommand.Argument(name: "resume", value: resume),
3039
+ RubyCommand.Argument(name: "use_platform", value: usePlatform),
2842
3040
  RubyCommand.Argument(name: "path", value: path)])
2843
3041
  _ = runner.executeCommand(command)
2844
3042
  }
@@ -2854,10 +3052,15 @@ func frameScreenshots(white: Bool? = nil,
2854
3052
  - forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
2855
3053
  - useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
2856
3054
  - useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
3055
+ - useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
2857
3056
  - useLegacyIphonex: Use iPhone X instead of iPhone XS frames
3057
+ - useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
3058
+ - useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
3059
+ - useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
2858
3060
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
2859
3061
  - debugMode: Output debug information in framed screenshots
2860
3062
  - resume: Resume frameit instead of reprocessing all screenshots
3063
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
2861
3064
  - path: The path to the directory containing the screenshots
2862
3065
 
2863
3066
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -2870,10 +3073,15 @@ func frameit(white: Bool? = nil,
2870
3073
  forceDeviceType: String? = nil,
2871
3074
  useLegacyIphone5s: Bool = false,
2872
3075
  useLegacyIphone6s: Bool = false,
3076
+ useLegacyIphone7: Bool = false,
2873
3077
  useLegacyIphonex: Bool = false,
3078
+ useLegacyIphonexr: Bool = false,
3079
+ useLegacyIphonexs: Bool = false,
3080
+ useLegacyIphonexsmax: Bool = false,
2874
3081
  forceOrientationBlock: String? = nil,
2875
3082
  debugMode: Bool = false,
2876
3083
  resume: Bool = false,
3084
+ usePlatform: String = "IOS",
2877
3085
  path: String = "./") {
2878
3086
  let command = RubyCommand(commandID: "", methodName: "frameit", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
2879
3087
  RubyCommand.Argument(name: "silver", value: silver),
@@ -2882,10 +3090,15 @@ func frameit(white: Bool? = nil,
2882
3090
  RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
2883
3091
  RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
2884
3092
  RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
3093
+ RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
2885
3094
  RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
3095
+ RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3096
+ RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3097
+ RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
2886
3098
  RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
2887
3099
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
2888
3100
  RubyCommand.Argument(name: "resume", value: resume),
3101
+ RubyCommand.Argument(name: "use_platform", value: usePlatform),
2889
3102
  RubyCommand.Argument(name: "path", value: path)])
2890
3103
  _ = runner.executeCommand(command)
2891
3104
  }
@@ -2938,6 +3151,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
2938
3151
 
2939
3152
  - parameters:
2940
3153
  - development: Create a development certificate instead of a distribution one
3154
+ - type: Create specific certificate type (takes precedence over :development)
2941
3155
  - force: Create a certificate even if an existing certificate exists
2942
3156
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
2943
3157
  - username: Your Apple ID Username
@@ -2953,6 +3167,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
2953
3167
  Use this action to download the latest code signing identity.
2954
3168
  */
2955
3169
  func getCertificates(development: Bool = false,
3170
+ type: String? = nil,
2956
3171
  force: Bool = false,
2957
3172
  generateAppleCerts: Bool = true,
2958
3173
  username: String,
@@ -2962,8 +3177,9 @@ func getCertificates(development: Bool = false,
2962
3177
  outputPath: String = ".",
2963
3178
  keychainPath: String,
2964
3179
  keychainPassword: String? = nil,
2965
- platform: Any = "ios") {
3180
+ platform: String = "ios") {
2966
3181
  let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
3182
+ RubyCommand.Argument(name: "type", value: type),
2967
3183
  RubyCommand.Argument(name: "force", value: force),
2968
3184
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
2969
3185
  RubyCommand.Argument(name: "username", value: username),
@@ -3425,6 +3641,7 @@ func googlePlayTrackVersionCodes(packageName: String,
3425
3641
  - task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
3426
3642
  - flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
3427
3643
  - buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
3644
+ - tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
3428
3645
  - flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
3429
3646
  - projectDir: The root directory of the gradle project
3430
3647
  - gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
@@ -3438,9 +3655,10 @@ func googlePlayTrackVersionCodes(packageName: String,
3438
3655
 
3439
3656
  Run `./gradlew tasks` to get a list of all available gradle tasks for your project
3440
3657
  */
3441
- func gradle(task: String,
3658
+ func gradle(task: String? = nil,
3442
3659
  flavor: String? = nil,
3443
3660
  buildType: String? = nil,
3661
+ tasks: [String]? = nil,
3444
3662
  flags: String? = nil,
3445
3663
  projectDir: String = ".",
3446
3664
  gradlePath: String? = nil,
@@ -3452,6 +3670,7 @@ func gradle(task: String,
3452
3670
  let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
3453
3671
  RubyCommand.Argument(name: "flavor", value: flavor),
3454
3672
  RubyCommand.Argument(name: "build_type", value: buildType),
3673
+ RubyCommand.Argument(name: "tasks", value: tasks),
3455
3674
  RubyCommand.Argument(name: "flags", value: flags),
3456
3675
  RubyCommand.Argument(name: "project_dir", value: projectDir),
3457
3676
  RubyCommand.Argument(name: "gradle_path", value: gradlePath),
@@ -3464,7 +3683,7 @@ func gradle(task: String,
3464
3683
  }
3465
3684
 
3466
3685
  /**
3467
- Alias for the `build_ios_app` action
3686
+ Alias for the `build_app` action
3468
3687
 
3469
3688
  - parameters:
3470
3689
  - workspace: Path to the workspace file
@@ -3477,6 +3696,7 @@ func gradle(task: String,
3477
3696
  - silent: Hide all information that's not necessary while building
3478
3697
  - codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
3479
3698
  - skipPackageIpa: Should we skip packaging the ipa?
3699
+ - skipPackagePkg: Should we skip packaging the pkg?
3480
3700
  - includeSymbols: Should the ipa file include symbols?
3481
3701
  - includeBitcode: Should the ipa file include bitcode?
3482
3702
  - exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
@@ -3485,6 +3705,8 @@ func gradle(task: String,
3485
3705
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
3486
3706
  - skipArchive: After building, don't archive, effectively not including -archivePath param
3487
3707
  - skipCodesigning: Build without codesigning
3708
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
3709
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3488
3710
  - buildPath: The directory in which the archive should be stored in
3489
3711
  - archivePath: The path to the created archive
3490
3712
  - derivedDataPath: The directory where built products and other derived data will go
@@ -3507,6 +3729,7 @@ func gradle(task: String,
3507
3729
  - analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
3508
3730
  - xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
3509
3731
  - skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
3732
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
3510
3733
 
3511
3734
  - returns: The absolute path to the generated ipa file
3512
3735
 
@@ -3522,6 +3745,7 @@ func gym(workspace: Any? = gymfile.workspace,
3522
3745
  silent: Bool = gymfile.silent,
3523
3746
  codesigningIdentity: Any? = gymfile.codesigningIdentity,
3524
3747
  skipPackageIpa: Bool = gymfile.skipPackageIpa,
3748
+ skipPackagePkg: Bool = gymfile.skipPackagePkg,
3525
3749
  includeSymbols: Bool? = gymfile.includeSymbols,
3526
3750
  includeBitcode: Bool? = gymfile.includeBitcode,
3527
3751
  exportMethod: Any? = gymfile.exportMethod,
@@ -3530,6 +3754,8 @@ func gym(workspace: Any? = gymfile.workspace,
3530
3754
  skipBuildArchive: Bool? = gymfile.skipBuildArchive,
3531
3755
  skipArchive: Bool? = gymfile.skipArchive,
3532
3756
  skipCodesigning: Bool? = gymfile.skipCodesigning,
3757
+ catalystPlatform: Any? = gymfile.catalystPlatform,
3758
+ installerCertName: Any? = gymfile.installerCertName,
3533
3759
  buildPath: Any? = gymfile.buildPath,
3534
3760
  archivePath: Any? = gymfile.archivePath,
3535
3761
  derivedDataPath: Any? = gymfile.derivedDataPath,
@@ -3551,7 +3777,8 @@ func gym(workspace: Any? = gymfile.workspace,
3551
3777
  xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
3552
3778
  analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
3553
3779
  xcprettyUtf: Bool? = gymfile.xcprettyUtf,
3554
- skipProfileDetection: Bool = gymfile.skipProfileDetection) {
3780
+ skipProfileDetection: Bool = gymfile.skipProfileDetection,
3781
+ clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath) {
3555
3782
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
3556
3783
  RubyCommand.Argument(name: "project", value: project),
3557
3784
  RubyCommand.Argument(name: "scheme", value: scheme),
@@ -3562,6 +3789,7 @@ func gym(workspace: Any? = gymfile.workspace,
3562
3789
  RubyCommand.Argument(name: "silent", value: silent),
3563
3790
  RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
3564
3791
  RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
3792
+ RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
3565
3793
  RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
3566
3794
  RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
3567
3795
  RubyCommand.Argument(name: "export_method", value: exportMethod),
@@ -3570,6 +3798,8 @@ func gym(workspace: Any? = gymfile.workspace,
3570
3798
  RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
3571
3799
  RubyCommand.Argument(name: "skip_archive", value: skipArchive),
3572
3800
  RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
3801
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
3802
+ RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
3573
3803
  RubyCommand.Argument(name: "build_path", value: buildPath),
3574
3804
  RubyCommand.Argument(name: "archive_path", value: archivePath),
3575
3805
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
@@ -3591,7 +3821,8 @@ func gym(workspace: Any? = gymfile.workspace,
3591
3821
  RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
3592
3822
  RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
3593
3823
  RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
3594
- RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)])
3824
+ RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
3825
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
3595
3826
  _ = runner.executeCommand(command)
3596
3827
  }
3597
3828
 
@@ -4226,7 +4457,8 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4226
4457
  Alias for the `sync_code_signing` action
4227
4458
 
4228
4459
  - parameters:
4229
- - type: Define the profile type, can be appstore, adhoc, development, enterprise
4460
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
4461
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
4230
4462
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
4231
4463
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
4232
4464
  - skipProvisioningProfiles: Skip syncing provisioning profiles
@@ -4246,13 +4478,17 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4246
4478
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
4247
4479
  - googleCloudKeysFile: Path to the gc_keys.json file
4248
4480
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
4481
+ - s3Region: Name of the S3 region
4482
+ - s3AccessKey: S3 access key
4483
+ - s3SecretAccessKey: S3 secret secret access key
4484
+ - s3Bucket: Name of the S3 bucket
4249
4485
  - keychainName: Keychain the items should be imported to
4250
4486
  - 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
4251
4487
  - force: Renew the provisioning profiles every time you run match
4252
4488
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
4253
4489
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
4254
4490
  - skipDocs: Skip generation of a README.md for the created git repository
4255
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
4491
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4256
4492
  - 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")
4257
4493
  - outputPath: Path in which to export certificates, key and profile
4258
4494
  - verbose: Print out extra information and all commands
@@ -4260,6 +4496,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4260
4496
  More information: https://docs.fastlane.tools/actions/match/
4261
4497
  */
4262
4498
  func match(type: Any = matchfile.type,
4499
+ additionalCertTypes: [String]? = matchfile.additionalCertTypes,
4263
4500
  readonly: Bool = matchfile.readonly,
4264
4501
  generateAppleCerts: Bool = matchfile.generateAppleCerts,
4265
4502
  skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
@@ -4279,6 +4516,10 @@ func match(type: Any = matchfile.type,
4279
4516
  googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
4280
4517
  googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
4281
4518
  googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
4519
+ s3Region: Any? = matchfile.s3Region,
4520
+ s3AccessKey: Any? = matchfile.s3AccessKey,
4521
+ s3SecretAccessKey: Any? = matchfile.s3SecretAccessKey,
4522
+ s3Bucket: Any? = matchfile.s3Bucket,
4282
4523
  keychainName: Any = matchfile.keychainName,
4283
4524
  keychainPassword: Any? = matchfile.keychainPassword,
4284
4525
  force: Bool = matchfile.force,
@@ -4290,6 +4531,7 @@ func match(type: Any = matchfile.type,
4290
4531
  outputPath: Any? = matchfile.outputPath,
4291
4532
  verbose: Bool = matchfile.verbose) {
4292
4533
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
4534
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
4293
4535
  RubyCommand.Argument(name: "readonly", value: readonly),
4294
4536
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
4295
4537
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
@@ -4309,6 +4551,10 @@ func match(type: Any = matchfile.type,
4309
4551
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
4310
4552
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
4311
4553
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
4554
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
4555
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
4556
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
4557
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
4312
4558
  RubyCommand.Argument(name: "keychain_name", value: keychainName),
4313
4559
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
4314
4560
  RubyCommand.Argument(name: "force", value: force),
@@ -4417,6 +4663,35 @@ func nexusUpload(file: String,
4417
4663
  _ = runner.executeCommand(command)
4418
4664
  }
4419
4665
 
4666
+ /**
4667
+ Notarizes a macOS app
4668
+
4669
+ - parameters:
4670
+ - package: Path to package to notarize, e.g. .app bundle or disk image
4671
+ - tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
4672
+ - bundleId: Bundle identifier to uniquely identify the package
4673
+ - username: Apple ID username
4674
+ - ascProvider: Provider short name for accounts associated with multiple providers
4675
+ - printLog: Whether to print notarization log file, listing issues on failure and warnings on success
4676
+ - verbose: Whether to log requests
4677
+ */
4678
+ func notarize(package: String,
4679
+ tryEarlyStapling: Bool = false,
4680
+ bundleId: String? = nil,
4681
+ username: String,
4682
+ ascProvider: String? = nil,
4683
+ printLog: Bool = false,
4684
+ verbose: Bool = false) {
4685
+ let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
4686
+ RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
4687
+ RubyCommand.Argument(name: "bundle_id", value: bundleId),
4688
+ RubyCommand.Argument(name: "username", value: username),
4689
+ RubyCommand.Argument(name: "asc_provider", value: ascProvider),
4690
+ RubyCommand.Argument(name: "print_log", value: printLog),
4691
+ RubyCommand.Argument(name: "verbose", value: verbose)])
4692
+ _ = runner.executeCommand(command)
4693
+ }
4694
+
4420
4695
  /**
4421
4696
  Display a macOS notification with custom message and title
4422
4697
 
@@ -4800,6 +5075,7 @@ func pluginScores(outputPath: String,
4800
5075
  - platforms: Lint against specific platforms (defaults to all platforms supported by the podspec). Multiple platforms must be comma-delimited (available since cocoapods >= 1.6)
4801
5076
  - skipImportValidation: Lint skips validating that the pod can be imported (available since cocoapods >= 1.3)
4802
5077
  - skipTests: Lint skips building and running tests during validation (available since cocoapods >= 1.3)
5078
+ - analyze: Validate with the Xcode Static Analysis tool (available since cocoapods >= 1.6.1)
4803
5079
 
4804
5080
  Test the syntax of your Podfile by linting the pod against the files of its directory
4805
5081
  */
@@ -4821,7 +5097,8 @@ func podLibLint(useBundleExec: Bool = true,
4821
5097
  noSubspecs: Bool = false,
4822
5098
  platforms: String? = nil,
4823
5099
  skipImportValidation: Bool = false,
4824
- skipTests: Bool = false) {
5100
+ skipTests: Bool = false,
5101
+ analyze: Bool = false) {
4825
5102
  let command = RubyCommand(commandID: "", methodName: "pod_lib_lint", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
4826
5103
  RubyCommand.Argument(name: "podspec", value: podspec),
4827
5104
  RubyCommand.Argument(name: "verbose", value: verbose),
@@ -4840,7 +5117,8 @@ func podLibLint(useBundleExec: Bool = true,
4840
5117
  RubyCommand.Argument(name: "no_subspecs", value: noSubspecs),
4841
5118
  RubyCommand.Argument(name: "platforms", value: platforms),
4842
5119
  RubyCommand.Argument(name: "skip_import_validation", value: skipImportValidation),
4843
- RubyCommand.Argument(name: "skip_tests", value: skipTests)])
5120
+ RubyCommand.Argument(name: "skip_tests", value: skipTests),
5121
+ RubyCommand.Argument(name: "analyze", value: analyze)])
4844
5122
  _ = runner.executeCommand(command)
4845
5123
  }
4846
5124
 
@@ -5369,6 +5647,7 @@ func rubyVersion() {
5369
5647
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5370
5648
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5371
5649
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5650
+ - testplan: The testplan associated with the scheme that should be used for testing
5372
5651
  - xctestrun: Run tests using the provided `.xctestrun` file
5373
5652
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5374
5653
  - clean: Should the project be cleaned before building it?
@@ -5389,6 +5668,7 @@ func rubyVersion() {
5389
5668
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
5390
5669
  - resultBundle: Should an Xcode result bundle be generated in the output directory
5391
5670
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
5671
+ - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
5392
5672
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
5393
5673
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
5394
5674
  - skipBuild: Should debug build be skipped before test build?
@@ -5398,6 +5678,8 @@ func rubyVersion() {
5398
5678
  - configuration: The configuration to use when building the app. Defaults to 'Release'
5399
5679
  - xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
5400
5680
  - xcconfig: Use an extra XCCONFIG file to build your app
5681
+ - appName: App name to use in slack message and logfile name
5682
+ - deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
5401
5683
  - slackUrl: Create an Incoming WebHook for your Slack group to post results there
5402
5684
  - slackChannel: #channel or @username
5403
5685
  - slackMessage: The message included with each message posted to slack
@@ -5409,6 +5691,7 @@ func rubyVersion() {
5409
5691
  - destination: Use only if you're a pro, use the other options instead
5410
5692
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
5411
5693
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5694
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5412
5695
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
5413
5696
 
5414
5697
  More information: https://docs.fastlane.tools/actions/scan/
@@ -5427,6 +5710,7 @@ func runTests(workspace: String? = nil,
5427
5710
  appIdentifier: String? = nil,
5428
5711
  onlyTesting: Any? = nil,
5429
5712
  skipTesting: Any? = nil,
5713
+ testplan: String? = nil,
5430
5714
  xctestrun: String? = nil,
5431
5715
  toolchain: Any? = nil,
5432
5716
  clean: Bool = false,
@@ -5447,6 +5731,7 @@ func runTests(workspace: String? = nil,
5447
5731
  shouldZipBuildProducts: Bool = false,
5448
5732
  resultBundle: Bool = false,
5449
5733
  useClangReportName: Bool = false,
5734
+ concurrentWorkers: Int? = nil,
5450
5735
  maxConcurrentSimulators: Int? = nil,
5451
5736
  disableConcurrentTesting: Bool = false,
5452
5737
  skipBuild: Bool = false,
@@ -5456,6 +5741,8 @@ func runTests(workspace: String? = nil,
5456
5741
  configuration: String? = nil,
5457
5742
  xcargs: String? = nil,
5458
5743
  xcconfig: String? = nil,
5744
+ appName: String? = nil,
5745
+ deploymentTargetVersion: String? = nil,
5459
5746
  slackUrl: String? = nil,
5460
5747
  slackChannel: String? = nil,
5461
5748
  slackMessage: String? = nil,
@@ -5467,6 +5754,7 @@ func runTests(workspace: String? = nil,
5467
5754
  destination: Any? = nil,
5468
5755
  customReportFileName: String? = nil,
5469
5756
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
5757
+ clonedSourcePackagesPath: String? = nil,
5470
5758
  failBuild: Bool = true) {
5471
5759
  let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
5472
5760
  RubyCommand.Argument(name: "project", value: project),
@@ -5482,6 +5770,7 @@ func runTests(workspace: String? = nil,
5482
5770
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5483
5771
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5484
5772
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
5773
+ RubyCommand.Argument(name: "testplan", value: testplan),
5485
5774
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5486
5775
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5487
5776
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5502,6 +5791,7 @@ func runTests(workspace: String? = nil,
5502
5791
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
5503
5792
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
5504
5793
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
5794
+ RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
5505
5795
  RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
5506
5796
  RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
5507
5797
  RubyCommand.Argument(name: "skip_build", value: skipBuild),
@@ -5511,6 +5801,8 @@ func runTests(workspace: String? = nil,
5511
5801
  RubyCommand.Argument(name: "configuration", value: configuration),
5512
5802
  RubyCommand.Argument(name: "xcargs", value: xcargs),
5513
5803
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
5804
+ RubyCommand.Argument(name: "app_name", value: appName),
5805
+ RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
5514
5806
  RubyCommand.Argument(name: "slack_url", value: slackUrl),
5515
5807
  RubyCommand.Argument(name: "slack_channel", value: slackChannel),
5516
5808
  RubyCommand.Argument(name: "slack_message", value: slackMessage),
@@ -5522,6 +5814,7 @@ func runTests(workspace: String? = nil,
5522
5814
  RubyCommand.Argument(name: "destination", value: destination),
5523
5815
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
5524
5816
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
5817
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
5525
5818
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
5526
5819
  _ = runner.executeCommand(command)
5527
5820
  }
@@ -5618,6 +5911,7 @@ func say(text: Any,
5618
5911
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5619
5912
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5620
5913
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5914
+ - testplan: The testplan associated with the scheme that should be used for testing
5621
5915
  - xctestrun: Run tests using the provided `.xctestrun` file
5622
5916
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5623
5917
  - clean: Should the project be cleaned before building it?
@@ -5638,6 +5932,7 @@ func say(text: Any,
5638
5932
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
5639
5933
  - resultBundle: Should an Xcode result bundle be generated in the output directory
5640
5934
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
5935
+ - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
5641
5936
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
5642
5937
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
5643
5938
  - skipBuild: Should debug build be skipped before test build?
@@ -5647,6 +5942,8 @@ func say(text: Any,
5647
5942
  - configuration: The configuration to use when building the app. Defaults to 'Release'
5648
5943
  - xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
5649
5944
  - xcconfig: Use an extra XCCONFIG file to build your app
5945
+ - appName: App name to use in slack message and logfile name
5946
+ - deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
5650
5947
  - slackUrl: Create an Incoming WebHook for your Slack group to post results there
5651
5948
  - slackChannel: #channel or @username
5652
5949
  - slackMessage: The message included with each message posted to slack
@@ -5658,6 +5955,7 @@ func say(text: Any,
5658
5955
  - destination: Use only if you're a pro, use the other options instead
5659
5956
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
5660
5957
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
5958
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
5661
5959
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
5662
5960
 
5663
5961
  More information: https://docs.fastlane.tools/actions/scan/
@@ -5676,6 +5974,7 @@ func scan(workspace: Any? = scanfile.workspace,
5676
5974
  appIdentifier: Any? = scanfile.appIdentifier,
5677
5975
  onlyTesting: Any? = scanfile.onlyTesting,
5678
5976
  skipTesting: Any? = scanfile.skipTesting,
5977
+ testplan: Any? = scanfile.testplan,
5679
5978
  xctestrun: Any? = scanfile.xctestrun,
5680
5979
  toolchain: Any? = scanfile.toolchain,
5681
5980
  clean: Bool = scanfile.clean,
@@ -5696,6 +5995,7 @@ func scan(workspace: Any? = scanfile.workspace,
5696
5995
  shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
5697
5996
  resultBundle: Bool = scanfile.resultBundle,
5698
5997
  useClangReportName: Bool = scanfile.useClangReportName,
5998
+ concurrentWorkers: Int? = scanfile.concurrentWorkers,
5699
5999
  maxConcurrentSimulators: Int? = scanfile.maxConcurrentSimulators,
5700
6000
  disableConcurrentTesting: Bool = scanfile.disableConcurrentTesting,
5701
6001
  skipBuild: Bool = scanfile.skipBuild,
@@ -5705,6 +6005,8 @@ func scan(workspace: Any? = scanfile.workspace,
5705
6005
  configuration: Any? = scanfile.configuration,
5706
6006
  xcargs: Any? = scanfile.xcargs,
5707
6007
  xcconfig: Any? = scanfile.xcconfig,
6008
+ appName: Any? = scanfile.appName,
6009
+ deploymentTargetVersion: Any? = scanfile.deploymentTargetVersion,
5708
6010
  slackUrl: Any? = scanfile.slackUrl,
5709
6011
  slackChannel: Any? = scanfile.slackChannel,
5710
6012
  slackMessage: Any? = scanfile.slackMessage,
@@ -5716,6 +6018,7 @@ func scan(workspace: Any? = scanfile.workspace,
5716
6018
  destination: Any? = scanfile.destination,
5717
6019
  customReportFileName: Any? = scanfile.customReportFileName,
5718
6020
  xcodebuildCommand: Any = scanfile.xcodebuildCommand,
6021
+ clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
5719
6022
  failBuild: Bool = scanfile.failBuild) {
5720
6023
  let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
5721
6024
  RubyCommand.Argument(name: "project", value: project),
@@ -5731,6 +6034,7 @@ func scan(workspace: Any? = scanfile.workspace,
5731
6034
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5732
6035
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5733
6036
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6037
+ RubyCommand.Argument(name: "testplan", value: testplan),
5734
6038
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5735
6039
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5736
6040
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5751,6 +6055,7 @@ func scan(workspace: Any? = scanfile.workspace,
5751
6055
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
5752
6056
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
5753
6057
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
6058
+ RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
5754
6059
  RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
5755
6060
  RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
5756
6061
  RubyCommand.Argument(name: "skip_build", value: skipBuild),
@@ -5760,6 +6065,8 @@ func scan(workspace: Any? = scanfile.workspace,
5760
6065
  RubyCommand.Argument(name: "configuration", value: configuration),
5761
6066
  RubyCommand.Argument(name: "xcargs", value: xcargs),
5762
6067
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
6068
+ RubyCommand.Argument(name: "app_name", value: appName),
6069
+ RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
5763
6070
  RubyCommand.Argument(name: "slack_url", value: slackUrl),
5764
6071
  RubyCommand.Argument(name: "slack_channel", value: slackChannel),
5765
6072
  RubyCommand.Argument(name: "slack_message", value: slackMessage),
@@ -5771,6 +6078,7 @@ func scan(workspace: Any? = scanfile.workspace,
5771
6078
  RubyCommand.Argument(name: "destination", value: destination),
5772
6079
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
5773
6080
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
6081
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
5774
6082
  RubyCommand.Argument(name: "fail_build", value: failBuild)])
5775
6083
  _ = runner.executeCommand(command)
5776
6084
  }
@@ -5957,7 +6265,7 @@ Access things like 'html_url', 'tag_name', 'name', 'body'
5957
6265
  description: String? = nil,
5958
6266
  isDraft: Bool = false,
5959
6267
  isPrerelease: Bool = false,
5960
- uploadAssets: [String]? = nil) -> [String : String] {
6268
+ uploadAssets: [String]? = nil) -> [String : Any] {
5961
6269
  let command = RubyCommand(commandID: "", methodName: "set_github_release", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
5962
6270
  RubyCommand.Argument(name: "server_url", value: serverUrl),
5963
6271
  RubyCommand.Argument(name: "api_token", value: apiToken),
@@ -6444,6 +6752,8 @@ func slather(buildDirectory: String? = nil,
6444
6752
  - testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
6445
6753
  - namespaceLogFiles: Separate the log files per device and per language
6446
6754
  - concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
6755
+ - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
6756
+ - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
6447
6757
  */
6448
6758
  func snapshot(workspace: Any? = snapshotfile.workspace,
6449
6759
  project: Any? = snapshotfile.project,
@@ -6478,7 +6788,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6478
6788
  resultBundle: Bool = snapshotfile.resultBundle,
6479
6789
  testTargetName: Any? = snapshotfile.testTargetName,
6480
6790
  namespaceLogFiles: Any? = snapshotfile.namespaceLogFiles,
6481
- concurrentSimulators: Bool = snapshotfile.concurrentSimulators) {
6791
+ concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
6792
+ disableSlideToType: Bool = snapshotfile.disableSlideToType,
6793
+ clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath) {
6482
6794
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6483
6795
  RubyCommand.Argument(name: "project", value: project),
6484
6796
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6512,7 +6824,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6512
6824
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
6513
6825
  RubyCommand.Argument(name: "test_target_name", value: testTargetName),
6514
6826
  RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
6515
- RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)])
6827
+ RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
6828
+ RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
6829
+ RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
6516
6830
  _ = runner.executeCommand(command)
6517
6831
  }
6518
6832
 
@@ -6644,6 +6958,7 @@ func splunkmint(dsym: String? = nil,
6644
6958
  - xcconfig: Use xcconfig file to override swift package generate-xcodeproj defaults
6645
6959
  - configuration: Build with configuration (debug|release) [default: debug]
6646
6960
  - xcprettyOutput: Specifies the output type for xcpretty. eg. 'test', or 'simple'
6961
+ - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also
6647
6962
  - verbose: Increase verbosity of informational output
6648
6963
  */
6649
6964
  func spm(command: String = "build",
@@ -6652,6 +6967,7 @@ func spm(command: String = "build",
6652
6967
  xcconfig: String? = nil,
6653
6968
  configuration: String? = nil,
6654
6969
  xcprettyOutput: String? = nil,
6970
+ xcprettyArgs: String? = nil,
6655
6971
  verbose: Bool = false) {
6656
6972
  let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
6657
6973
  RubyCommand.Argument(name: "build_path", value: buildPath),
@@ -6659,6 +6975,7 @@ func spm(command: String = "build",
6659
6975
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
6660
6976
  RubyCommand.Argument(name: "configuration", value: configuration),
6661
6977
  RubyCommand.Argument(name: "xcpretty_output", value: xcprettyOutput),
6978
+ RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
6662
6979
  RubyCommand.Argument(name: "verbose", value: verbose)])
6663
6980
  _ = runner.executeCommand(command)
6664
6981
  }
@@ -6738,7 +7055,7 @@ func supply(packageName: String,
6738
7055
  releaseStatus: String = "completed",
6739
7056
  track: String = "production",
6740
7057
  rollout: String? = nil,
6741
- metadataPath: String? = nil,
7058
+ metadataPath: String = "./metadata",
6742
7059
  key: String? = nil,
6743
7060
  issuer: String? = nil,
6744
7061
  jsonKey: String? = nil,
@@ -6814,10 +7131,12 @@ func supply(packageName: String,
6814
7131
  - strict: Fail on warnings? (true/false)
6815
7132
  - files: List of files to process
6816
7133
  - ignoreExitStatus: Ignore the exit status of the SwiftLint command, so that serious violations don't fail the build (true/false)
6817
- - reporter: Choose output reporter
7134
+ - raiseIfSwiftlintError: Raises an error if swiftlint fails, so you can fail CI/CD jobs if necessary (true/false)
7135
+ - reporter: Choose output reporter. Available: xcode, json, csv, checkstyle, junit, html, emoji, sonarqube, markdown, github-actions-logging
6818
7136
  - quiet: Don't print status logs like 'Linting <file>' & 'Done linting'
6819
7137
  - executable: Path to the `swiftlint` executable on your machine
6820
7138
  - format: Format code when mode is :autocorrect
7139
+ - noCache: Ignore the cache when mode is :autocorrect or :lint
6821
7140
  - compilerLogPath: Compiler log path when mode is :analyze
6822
7141
  */
6823
7142
  func swiftlint(mode: Any = "lint",
@@ -6827,10 +7146,12 @@ func swiftlint(mode: Any = "lint",
6827
7146
  strict: Bool = false,
6828
7147
  files: Any? = nil,
6829
7148
  ignoreExitStatus: Bool = false,
7149
+ raiseIfSwiftlintError: Bool = false,
6830
7150
  reporter: String? = nil,
6831
7151
  quiet: Bool = false,
6832
7152
  executable: String? = nil,
6833
7153
  format: Bool = false,
7154
+ noCache: Bool = false,
6834
7155
  compilerLogPath: String? = nil) {
6835
7156
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
6836
7157
  RubyCommand.Argument(name: "path", value: path),
@@ -6839,10 +7160,12 @@ func swiftlint(mode: Any = "lint",
6839
7160
  RubyCommand.Argument(name: "strict", value: strict),
6840
7161
  RubyCommand.Argument(name: "files", value: files),
6841
7162
  RubyCommand.Argument(name: "ignore_exit_status", value: ignoreExitStatus),
7163
+ RubyCommand.Argument(name: "raise_if_swiftlint_error", value: raiseIfSwiftlintError),
6842
7164
  RubyCommand.Argument(name: "reporter", value: reporter),
6843
7165
  RubyCommand.Argument(name: "quiet", value: quiet),
6844
7166
  RubyCommand.Argument(name: "executable", value: executable),
6845
7167
  RubyCommand.Argument(name: "format", value: format),
7168
+ RubyCommand.Argument(name: "no_cache", value: noCache),
6846
7169
  RubyCommand.Argument(name: "compiler_log_path", value: compilerLogPath)])
6847
7170
  _ = runner.executeCommand(command)
6848
7171
  }
@@ -6851,7 +7174,8 @@ func swiftlint(mode: Any = "lint",
6851
7174
  Easily sync your certificates and profiles across your team (via _match_)
6852
7175
 
6853
7176
  - parameters:
6854
- - type: Define the profile type, can be appstore, adhoc, development, enterprise
7177
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
7178
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
6855
7179
  - readonly: Only fetch existing certificates and profiles, don't generate new ones
6856
7180
  - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
6857
7181
  - skipProvisioningProfiles: Skip syncing provisioning profiles
@@ -6871,13 +7195,17 @@ func swiftlint(mode: Any = "lint",
6871
7195
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
6872
7196
  - googleCloudKeysFile: Path to the gc_keys.json file
6873
7197
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
7198
+ - s3Region: Name of the S3 region
7199
+ - s3AccessKey: S3 access key
7200
+ - s3SecretAccessKey: S3 secret secret access key
7201
+ - s3Bucket: Name of the S3 bucket
6874
7202
  - keychainName: Keychain the items should be imported to
6875
7203
  - 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
6876
7204
  - force: Renew the provisioning profiles every time you run match
6877
7205
  - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
6878
7206
  - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
6879
7207
  - skipDocs: Skip generation of a README.md for the created git repository
6880
- - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
7208
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
6881
7209
  - 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")
6882
7210
  - outputPath: Path in which to export certificates, key and profile
6883
7211
  - verbose: Print out extra information and all commands
@@ -6885,6 +7213,7 @@ func swiftlint(mode: Any = "lint",
6885
7213
  More information: https://docs.fastlane.tools/actions/match/
6886
7214
  */
6887
7215
  func syncCodeSigning(type: String = "development",
7216
+ additionalCertTypes: [String]? = nil,
6888
7217
  readonly: Bool = false,
6889
7218
  generateAppleCerts: Bool = true,
6890
7219
  skipProvisioningProfiles: Bool = false,
@@ -6904,17 +7233,22 @@ func syncCodeSigning(type: String = "development",
6904
7233
  googleCloudBucketName: String? = nil,
6905
7234
  googleCloudKeysFile: String? = nil,
6906
7235
  googleCloudProjectId: String? = nil,
7236
+ s3Region: String? = nil,
7237
+ s3AccessKey: String? = nil,
7238
+ s3SecretAccessKey: String? = nil,
7239
+ s3Bucket: String? = nil,
6907
7240
  keychainName: String = "login.keychain",
6908
7241
  keychainPassword: String? = nil,
6909
7242
  force: Bool = false,
6910
7243
  forceForNewDevices: Bool = false,
6911
7244
  skipConfirmation: Bool = false,
6912
7245
  skipDocs: Bool = false,
6913
- platform: Any = "ios",
7246
+ platform: String = "ios",
6914
7247
  templateName: String? = nil,
6915
7248
  outputPath: String? = nil,
6916
7249
  verbose: Bool = false) {
6917
7250
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
7251
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
6918
7252
  RubyCommand.Argument(name: "readonly", value: readonly),
6919
7253
  RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
6920
7254
  RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
@@ -6934,6 +7268,10 @@ func syncCodeSigning(type: String = "development",
6934
7268
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
6935
7269
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
6936
7270
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
7271
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
7272
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
7273
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
7274
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
6937
7275
  RubyCommand.Argument(name: "keychain_name", value: keychainName),
6938
7276
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
6939
7277
  RubyCommand.Argument(name: "force", value: force),
@@ -7235,6 +7573,42 @@ func updateAppIdentifier(xcodeproj: String,
7235
7573
  _ = runner.executeCommand(command)
7236
7574
  }
7237
7575
 
7576
+ /**
7577
+ Configures Xcode's Codesigning options
7578
+
7579
+ - parameters:
7580
+ - path: Path to your Xcode project
7581
+ - useAutomaticSigning: Defines if project should use automatic signing
7582
+ - teamId: Team ID, is used when upgrading project
7583
+ - targets: Specify targets you want to toggle the signing mech. (default to all targets)
7584
+ - codeSignIdentity: Code signing identity type (iPhone Developer, iPhone Distribution)
7585
+ - profileName: Provisioning profile name to use for code signing
7586
+ - profileUuid: Provisioning profile UUID to use for code signing
7587
+ - bundleIdentifier: Application Product Bundle Identifier
7588
+
7589
+ - returns: The current status (boolean) of codesigning after modification
7590
+
7591
+ Configures Xcode's Codesigning options of all targets in the project
7592
+ */
7593
+ func updateCodeSigningSettings(path: String,
7594
+ useAutomaticSigning: Bool = false,
7595
+ teamId: String? = nil,
7596
+ targets: [String]? = nil,
7597
+ codeSignIdentity: String? = nil,
7598
+ profileName: String? = nil,
7599
+ profileUuid: String? = nil,
7600
+ bundleIdentifier: String? = nil) {
7601
+ let command = RubyCommand(commandID: "", methodName: "update_code_signing_settings", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7602
+ RubyCommand.Argument(name: "use_automatic_signing", value: useAutomaticSigning),
7603
+ RubyCommand.Argument(name: "team_id", value: teamId),
7604
+ RubyCommand.Argument(name: "targets", value: targets),
7605
+ RubyCommand.Argument(name: "code_sign_identity", value: codeSignIdentity),
7606
+ RubyCommand.Argument(name: "profile_name", value: profileName),
7607
+ RubyCommand.Argument(name: "profile_uuid", value: profileUuid),
7608
+ RubyCommand.Argument(name: "bundle_identifier", value: bundleIdentifier)])
7609
+ _ = runner.executeCommand(command)
7610
+ }
7611
+
7238
7612
  /**
7239
7613
  Makes sure fastlane-tools are up-to-date when running fastlane
7240
7614
 
@@ -7331,7 +7705,7 @@ func updateKeychainAccessGroups(entitlementsFile: String,
7331
7705
  - plistPath: Path to plist file
7332
7706
  - block: A block to process plist with custom logic
7333
7707
 
7334
- This action allows you to modify any `plist` file.
7708
+ This action allows you to modify any value inside any `plist` file.
7335
7709
  */
7336
7710
  func updatePlist(plistPath: String? = nil,
7337
7711
  block: Any) {
@@ -7468,6 +7842,7 @@ func updateUrlSchemes(path: String,
7468
7842
  - dsymPaths: Paths to the DSYM files or zips to upload
7469
7843
  - apiToken: Crashlytics API Key
7470
7844
  - gspPath: Path to GoogleService-Info.plist
7845
+ - appId: Firebase Crashlytics APP ID
7471
7846
  - binaryPath: The path to the upload-symbols file of the Fabric app
7472
7847
  - platform: The platform of the app (ios, appletvos, mac)
7473
7848
  - dsymWorkerThreads: The number of threads to use for simultaneous dSYM upload
@@ -7478,6 +7853,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
7478
7853
  dsymPaths: [String]? = nil,
7479
7854
  apiToken: String? = nil,
7480
7855
  gspPath: String? = nil,
7856
+ appId: String? = nil,
7481
7857
  binaryPath: String? = nil,
7482
7858
  platform: String = "ios",
7483
7859
  dsymWorkerThreads: Int = 1) {
@@ -7485,6 +7861,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
7485
7861
  RubyCommand.Argument(name: "dsym_paths", value: dsymPaths),
7486
7862
  RubyCommand.Argument(name: "api_token", value: apiToken),
7487
7863
  RubyCommand.Argument(name: "gsp_path", value: gspPath),
7864
+ RubyCommand.Argument(name: "app_id", value: appId),
7488
7865
  RubyCommand.Argument(name: "binary_path", value: binaryPath),
7489
7866
  RubyCommand.Argument(name: "platform", value: platform),
7490
7867
  RubyCommand.Argument(name: "dsym_worker_threads", value: dsymWorkerThreads)])
@@ -7547,8 +7924,8 @@ func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/api/0",
7547
7924
  - overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
7548
7925
  - submitForReview: Submit the new version for Review after uploading everything
7549
7926
  - rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
7550
- - automaticRelease: Should the app be automatically released once it's approved?
7551
- - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
7927
+ - automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
7928
+ - autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
7552
7929
  - phasedRelease: Enable the phased release feature of iTC
7553
7930
  - resetRatings: Reset the summary rating when you release a new version of the application
7554
7931
  - priceTier: The price tier of this application
@@ -7766,7 +8143,7 @@ func uploadToPlayStore(packageName: String,
7766
8143
  releaseStatus: String = "completed",
7767
8144
  track: String = "production",
7768
8145
  rollout: String? = nil,
7769
- metadataPath: String? = nil,
8146
+ metadataPath: String = "./metadata",
7770
8147
  key: String? = nil,
7771
8148
  issuer: String? = nil,
7772
8149
  jsonKey: String? = nil,
@@ -8265,7 +8642,7 @@ func xcov(workspace: String? = nil,
8265
8642
  coverallsServiceJobId: String? = nil,
8266
8643
  coverallsRepoToken: String? = nil,
8267
8644
  xcconfig: String? = nil,
8268
- ideFoundationPath: String = "/Applications/Xcode-11.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8645
+ ideFoundationPath: String = "/Applications/Xcode-11.2.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8269
8646
  legacySupport: Bool = false) {
8270
8647
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8271
8648
  RubyCommand.Argument(name: "project", value: project),
@@ -8410,4 +8787,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8410
8787
 
8411
8788
  // Please don't remove the lines below
8412
8789
  // They are used to detect outdated files
8413
- // FastlaneRunnerAPIVersion [0.9.67]
8790
+ // FastlaneRunnerAPIVersion [0.9.72]