fastlane 2.141.0 → 2.146.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +82 -82
  4. data/credentials_manager/lib/credentials_manager/appfile_config.rb +4 -0
  5. data/deliver/lib/deliver/app_screenshot.rb +1 -0
  6. data/deliver/lib/deliver/options.rb +30 -1
  7. data/deliver/lib/deliver/setup.rb +4 -4
  8. data/fastlane/lib/fastlane/actions/.update_code_signing_settings.rb.swp +0 -0
  9. data/fastlane/lib/fastlane/actions/README.md +2 -0
  10. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +13 -5
  11. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +7 -1
  12. data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +3 -0
  13. data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -2
  14. data/fastlane/lib/fastlane/actions/crashlytics.rb +14 -2
  15. data/fastlane/lib/fastlane/actions/create_pull_request.rb +7 -1
  16. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +10 -4
  17. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +22 -6
  18. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +23 -7
  19. data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +35 -7
  21. data/fastlane/lib/fastlane/actions/frame_screenshots.rb +2 -1
  22. data/fastlane/lib/fastlane/actions/get_github_release.rb +3 -0
  23. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +9 -3
  25. data/fastlane/lib/fastlane/actions/notarize.rb +183 -0
  26. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +7 -1
  27. data/fastlane/lib/fastlane/actions/s3.rb +5 -291
  28. data/fastlane/lib/fastlane/actions/setup_ci.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/setup_jenkins.rb +11 -2
  30. data/fastlane/lib/fastlane/actions/slather.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/spm.rb +8 -0
  32. data/fastlane/lib/fastlane/actions/swiftlint.rb +45 -9
  33. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +198 -0
  34. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +14 -4
  35. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  36. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  37. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +61 -0
  38. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
  39. data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +1 -1
  40. data/fastlane/lib/fastlane/version.rb +1 -1
  41. data/fastlane/swift/Deliverfile.swift +1 -1
  42. data/fastlane/swift/Fastlane.swift +201 -13
  43. data/fastlane/swift/Gymfile.swift +1 -1
  44. data/fastlane/swift/Matchfile.swift +1 -1
  45. data/fastlane/swift/MatchfileProtocol.swift +17 -1
  46. data/fastlane/swift/Precheckfile.swift +1 -1
  47. data/fastlane/swift/RubyCommand.swift +1 -1
  48. data/fastlane/swift/Scanfile.swift +1 -1
  49. data/fastlane/swift/ScanfileProtocol.swift +9 -1
  50. data/fastlane/swift/Screengrabfile.swift +1 -1
  51. data/fastlane/swift/Snapshotfile.swift +1 -1
  52. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +9 -0
  53. data/fastlane_core/lib/fastlane_core/device_manager.rb +3 -3
  54. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -0
  55. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -0
  56. data/fastlane_core/lib/fastlane_core/project.rb +4 -0
  57. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +15 -2
  58. data/frameit/lib/frameit/commands_generator.rb +25 -0
  59. data/frameit/lib/frameit/config_parser.rb +31 -9
  60. data/frameit/lib/frameit/device.rb +90 -0
  61. data/frameit/lib/frameit/device_types.rb +121 -5
  62. data/frameit/lib/frameit/editor.rb +29 -41
  63. data/frameit/lib/frameit/offsets.rb +8 -1
  64. data/frameit/lib/frameit/options.rb +81 -54
  65. data/frameit/lib/frameit/runner.rb +17 -7
  66. data/frameit/lib/frameit/screenshot.rb +39 -47
  67. data/frameit/lib/frameit/template_finder.rb +15 -12
  68. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  69. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +5 -0
  70. data/gym/lib/gym/runner.rb +16 -2
  71. data/match/lib/match/change_password.rb +1 -1
  72. data/match/lib/match/encryption.rb +4 -0
  73. data/match/lib/match/importer.rb +37 -20
  74. data/match/lib/match/module.rb +1 -1
  75. data/match/lib/match/nuke.rb +5 -1
  76. data/match/lib/match/options.rb +18 -0
  77. data/match/lib/match/runner.rb +4 -0
  78. data/match/lib/match/setup.rb +1 -1
  79. data/match/lib/match/storage.rb +4 -0
  80. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  81. data/match/lib/match/storage/s3_storage.rb +167 -0
  82. data/pilot/lib/pilot/build_manager.rb +24 -7
  83. data/pilot/lib/pilot/options.rb +8 -0
  84. data/produce/lib/produce/developer_center.rb +11 -2
  85. data/produce/lib/produce/itunes_connect.rb +11 -3
  86. data/produce/lib/produce/options.rb +12 -0
  87. data/scan/lib/scan/options.rb +10 -0
  88. data/scan/lib/scan/runner.rb +9 -7
  89. data/scan/lib/scan/test_command_generator.rb +11 -4
  90. data/screengrab/lib/screengrab/runner.rb +32 -19
  91. data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
  92. data/snapshot/lib/snapshot/reports_generator.rb +4 -0
  93. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -0
  94. data/spaceship/lib/spaceship/connect_api/models/app.rb +11 -0
  95. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -2
  96. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +2 -0
  97. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +23 -0
  98. data/spaceship/lib/spaceship/portal/app_service.rb +2 -2
  99. data/spaceship/lib/spaceship/portal/portal_client.rb +13 -0
  100. data/spaceship/lib/spaceship/tunes/app_version.rb +6 -1
  101. data/spaceship/lib/spaceship/tunes/application.rb +2 -1
  102. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  103. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +52 -16
  104. data/supply/lib/supply/client.rb +4 -4
  105. data/supply/lib/supply/setup.rb +5 -3
  106. metadata +37 -16
@@ -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
@@ -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.141.0'.freeze
2
+ VERSION = '2.146.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.141.0
21
+ // Generated with fastlane 2.146.0
@@ -2122,7 +2122,7 @@ func copyArtifacts(keepOriginal: Bool = true,
2122
2122
  }
2123
2123
 
2124
2124
  /**
2125
- Upload a new build to [Crashlytics Beta](http://try.crashlytics.com/beta/)
2125
+ Refer to [Firebase App Distribution](https://appdistro.page.link/fastlane-repo)
2126
2126
 
2127
2127
  - parameters:
2128
2128
  - ipaPath: Path to your IPA file. Optional if you use the _gym_ or _xcodebuild_ action
@@ -2137,6 +2137,10 @@ func copyArtifacts(keepOriginal: Bool = true,
2137
2137
  - notifications: Crashlytics notification option (true/false)
2138
2138
  - debug: Crashlytics debug option (true/false)
2139
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
+
2140
2144
  Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.
2141
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.
2142
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.
@@ -2211,6 +2215,7 @@ func createAppOnManagedPlayStore(jsonKey: String? = nil,
2211
2215
  - appVersion: Initial version number (e.g. '1.0')
2212
2216
  - sku: SKU Number (e.g. '1234')
2213
2217
  - platform: The platform to use (optional)
2218
+ - platforms: The platforms to use (optional)
2214
2219
  - language: Primary Language (e.g. 'English', 'German')
2215
2220
  - companyName: The name of your company. Only required if it's the first app you create
2216
2221
  - skipItc: Skip the creation of the app on App Store Connect
@@ -2234,6 +2239,7 @@ func createAppOnline(username: String,
2234
2239
  appVersion: String? = nil,
2235
2240
  sku: String,
2236
2241
  platform: String = "ios",
2242
+ platforms: [String]? = nil,
2237
2243
  language: String = "English",
2238
2244
  companyName: String? = nil,
2239
2245
  skipItc: Bool = false,
@@ -2252,6 +2258,7 @@ func createAppOnline(username: String,
2252
2258
  RubyCommand.Argument(name: "app_version", value: appVersion),
2253
2259
  RubyCommand.Argument(name: "sku", value: sku),
2254
2260
  RubyCommand.Argument(name: "platform", value: platform),
2261
+ RubyCommand.Argument(name: "platforms", value: platforms),
2255
2262
  RubyCommand.Argument(name: "language", value: language),
2256
2263
  RubyCommand.Argument(name: "company_name", value: companyName),
2257
2264
  RubyCommand.Argument(name: "skip_itc", value: skipItc),
@@ -2312,6 +2319,7 @@ func createKeychain(name: String? = nil,
2312
2319
  - repo: The name of the repository you want to submit the pull request to
2313
2320
  - title: The title of the pull request
2314
2321
  - body: The contents of the pull request
2322
+ - draft: Indicates whether the pull request is a draft
2315
2323
  - labels: The labels for the pull request
2316
2324
  - milestone: The milestone ID (Integer) for the pull request
2317
2325
  - head: The name of the branch where your changes are implemented (defaults to the current branch name)
@@ -2327,6 +2335,7 @@ func createPullRequest(apiToken: String,
2327
2335
  repo: String,
2328
2336
  title: String,
2329
2337
  body: String? = nil,
2338
+ draft: Bool? = nil,
2330
2339
  labels: [String]? = nil,
2331
2340
  milestone: String? = nil,
2332
2341
  head: String? = nil,
@@ -2339,6 +2348,7 @@ func createPullRequest(apiToken: String,
2339
2348
  RubyCommand.Argument(name: "repo", value: repo),
2340
2349
  RubyCommand.Argument(name: "title", value: title),
2341
2350
  RubyCommand.Argument(name: "body", value: body),
2351
+ RubyCommand.Argument(name: "draft", value: draft),
2342
2352
  RubyCommand.Argument(name: "labels", value: labels),
2343
2353
  RubyCommand.Argument(name: "milestone", value: milestone),
2344
2354
  RubyCommand.Argument(name: "head", value: head),
@@ -2832,7 +2842,7 @@ func ensureEnvVars(envVars: [String]) {
2832
2842
  /**
2833
2843
  Raises an exception if not on a specific git branch
2834
2844
 
2835
- - 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
2845
+ - 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
2836
2846
 
2837
2847
  This action will check if your git repo is checked out to a specific branch.
2838
2848
  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.
@@ -2892,14 +2902,19 @@ func ensureNoDebugCode(text: String,
2892
2902
  /**
2893
2903
  Ensure the right version of Xcode is used
2894
2904
 
2895
- - parameter version: Xcode version to verify that is selected
2905
+ - parameters:
2906
+ - version: Xcode version to verify that is selected
2907
+ - 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`)
2896
2908
 
2897
2909
  If building your app requires a specific version of Xcode, you can invoke this command before using gym.
2898
2910
  For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.
2899
2911
  You can either manually provide a specific version using `version: ` or you make use of the `.xcode-version` file.
2912
+ 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`).
2900
2913
  */
2901
- func ensureXcodeVersion(version: String? = nil) {
2902
- let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version)])
2914
+ func ensureXcodeVersion(version: String? = nil,
2915
+ strict: Bool = true) {
2916
+ let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
2917
+ RubyCommand.Argument(name: "strict", value: strict)])
2903
2918
  _ = runner.executeCommand(command)
2904
2919
  }
2905
2920
 
@@ -2981,10 +2996,15 @@ func flock(message: String,
2981
2996
  - forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
2982
2997
  - useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
2983
2998
  - useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
2999
+ - useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
2984
3000
  - useLegacyIphonex: Use iPhone X instead of iPhone XS frames
3001
+ - useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
3002
+ - useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
3003
+ - useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
2985
3004
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
2986
3005
  - debugMode: Output debug information in framed screenshots
2987
3006
  - resume: Resume frameit instead of reprocessing all screenshots
3007
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
2988
3008
  - path: The path to the directory containing the screenshots
2989
3009
 
2990
3010
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -2997,10 +3017,15 @@ func frameScreenshots(white: Bool? = nil,
2997
3017
  forceDeviceType: String? = nil,
2998
3018
  useLegacyIphone5s: Bool = false,
2999
3019
  useLegacyIphone6s: Bool = false,
3020
+ useLegacyIphone7: Bool = false,
3000
3021
  useLegacyIphonex: Bool = false,
3022
+ useLegacyIphonexr: Bool = false,
3023
+ useLegacyIphonexs: Bool = false,
3024
+ useLegacyIphonexsmax: Bool = false,
3001
3025
  forceOrientationBlock: String? = nil,
3002
3026
  debugMode: Bool = false,
3003
3027
  resume: Bool = false,
3028
+ usePlatform: String = "IOS",
3004
3029
  path: String = "./") {
3005
3030
  let command = RubyCommand(commandID: "", methodName: "frame_screenshots", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
3006
3031
  RubyCommand.Argument(name: "silver", value: silver),
@@ -3009,10 +3034,15 @@ func frameScreenshots(white: Bool? = nil,
3009
3034
  RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
3010
3035
  RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
3011
3036
  RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
3037
+ RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
3012
3038
  RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
3039
+ RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3040
+ RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3041
+ RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3013
3042
  RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3014
3043
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3015
3044
  RubyCommand.Argument(name: "resume", value: resume),
3045
+ RubyCommand.Argument(name: "use_platform", value: usePlatform),
3016
3046
  RubyCommand.Argument(name: "path", value: path)])
3017
3047
  _ = runner.executeCommand(command)
3018
3048
  }
@@ -3028,10 +3058,15 @@ func frameScreenshots(white: Bool? = nil,
3028
3058
  - forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
3029
3059
  - useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
3030
3060
  - useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
3061
+ - useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
3031
3062
  - useLegacyIphonex: Use iPhone X instead of iPhone XS frames
3063
+ - useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
3064
+ - useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
3065
+ - useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
3032
3066
  - forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
3033
3067
  - debugMode: Output debug information in framed screenshots
3034
3068
  - resume: Resume frameit instead of reprocessing all screenshots
3069
+ - usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
3035
3070
  - path: The path to the directory containing the screenshots
3036
3071
 
3037
3072
  Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
@@ -3044,10 +3079,15 @@ func frameit(white: Bool? = nil,
3044
3079
  forceDeviceType: String? = nil,
3045
3080
  useLegacyIphone5s: Bool = false,
3046
3081
  useLegacyIphone6s: Bool = false,
3082
+ useLegacyIphone7: Bool = false,
3047
3083
  useLegacyIphonex: Bool = false,
3084
+ useLegacyIphonexr: Bool = false,
3085
+ useLegacyIphonexs: Bool = false,
3086
+ useLegacyIphonexsmax: Bool = false,
3048
3087
  forceOrientationBlock: String? = nil,
3049
3088
  debugMode: Bool = false,
3050
3089
  resume: Bool = false,
3090
+ usePlatform: String = "IOS",
3051
3091
  path: String = "./") {
3052
3092
  let command = RubyCommand(commandID: "", methodName: "frameit", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
3053
3093
  RubyCommand.Argument(name: "silver", value: silver),
@@ -3056,10 +3096,15 @@ func frameit(white: Bool? = nil,
3056
3096
  RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
3057
3097
  RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
3058
3098
  RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
3099
+ RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
3059
3100
  RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
3101
+ RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3102
+ RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3103
+ RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3060
3104
  RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3061
3105
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3062
3106
  RubyCommand.Argument(name: "resume", value: resume),
3107
+ RubyCommand.Argument(name: "use_platform", value: usePlatform),
3063
3108
  RubyCommand.Argument(name: "path", value: path)])
3064
3109
  _ = runner.executeCommand(command)
3065
3110
  }
@@ -4439,6 +4484,10 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4439
4484
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
4440
4485
  - googleCloudKeysFile: Path to the gc_keys.json file
4441
4486
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
4487
+ - s3Region: Name of the S3 region
4488
+ - s3AccessKey: S3 access key
4489
+ - s3SecretAccessKey: S3 secret access key
4490
+ - s3Bucket: Name of the S3 bucket
4442
4491
  - keychainName: Keychain the items should be imported to
4443
4492
  - 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
4444
4493
  - force: Renew the provisioning profiles every time you run match
@@ -4473,6 +4522,10 @@ func match(type: Any = matchfile.type,
4473
4522
  googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
4474
4523
  googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
4475
4524
  googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
4525
+ s3Region: Any? = matchfile.s3Region,
4526
+ s3AccessKey: Any? = matchfile.s3AccessKey,
4527
+ s3SecretAccessKey: Any? = matchfile.s3SecretAccessKey,
4528
+ s3Bucket: Any? = matchfile.s3Bucket,
4476
4529
  keychainName: Any = matchfile.keychainName,
4477
4530
  keychainPassword: Any? = matchfile.keychainPassword,
4478
4531
  force: Bool = matchfile.force,
@@ -4504,6 +4557,10 @@ func match(type: Any = matchfile.type,
4504
4557
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
4505
4558
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
4506
4559
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
4560
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
4561
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
4562
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
4563
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
4507
4564
  RubyCommand.Argument(name: "keychain_name", value: keychainName),
4508
4565
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
4509
4566
  RubyCommand.Argument(name: "force", value: force),
@@ -4612,6 +4669,35 @@ func nexusUpload(file: String,
4612
4669
  _ = runner.executeCommand(command)
4613
4670
  }
4614
4671
 
4672
+ /**
4673
+ Notarizes a macOS app
4674
+
4675
+ - parameters:
4676
+ - package: Path to package to notarize, e.g. .app bundle or disk image
4677
+ - tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
4678
+ - bundleId: Bundle identifier to uniquely identify the package
4679
+ - username: Apple ID username
4680
+ - ascProvider: Provider short name for accounts associated with multiple providers
4681
+ - printLog: Whether to print notarization log file, listing issues on failure and warnings on success
4682
+ - verbose: Whether to log requests
4683
+ */
4684
+ func notarize(package: String,
4685
+ tryEarlyStapling: Bool = false,
4686
+ bundleId: String? = nil,
4687
+ username: String,
4688
+ ascProvider: String? = nil,
4689
+ printLog: Bool = false,
4690
+ verbose: Bool = false) {
4691
+ let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
4692
+ RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
4693
+ RubyCommand.Argument(name: "bundle_id", value: bundleId),
4694
+ RubyCommand.Argument(name: "username", value: username),
4695
+ RubyCommand.Argument(name: "asc_provider", value: ascProvider),
4696
+ RubyCommand.Argument(name: "print_log", value: printLog),
4697
+ RubyCommand.Argument(name: "verbose", value: verbose)])
4698
+ _ = runner.executeCommand(command)
4699
+ }
4700
+
4615
4701
  /**
4616
4702
  Display a macOS notification with custom message and title
4617
4703
 
@@ -4876,6 +4962,8 @@ func pem(development: Bool = false,
4876
4962
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
4877
4963
  - distributeExternal: Should the build be distributed to external testers?
4878
4964
  - notifyExternalTesters: Should notify external testers?
4965
+ - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
4966
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
4879
4967
  - firstName: The tester's first name
4880
4968
  - lastName: The tester's last name
4881
4969
  - email: The tester's email
@@ -4910,6 +4998,8 @@ func pilot(username: String,
4910
4998
  usesNonExemptEncryption: Bool = false,
4911
4999
  distributeExternal: Bool = false,
4912
5000
  notifyExternalTesters: Bool = true,
5001
+ appVersion: String? = nil,
5002
+ buildNumber: String? = nil,
4913
5003
  firstName: String? = nil,
4914
5004
  lastName: String? = nil,
4915
5005
  email: String? = nil,
@@ -4940,6 +5030,8 @@ func pilot(username: String,
4940
5030
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
4941
5031
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
4942
5032
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
5033
+ RubyCommand.Argument(name: "app_version", value: appVersion),
5034
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
4943
5035
  RubyCommand.Argument(name: "first_name", value: firstName),
4944
5036
  RubyCommand.Argument(name: "last_name", value: lastName),
4945
5037
  RubyCommand.Argument(name: "email", value: email),
@@ -4995,6 +5087,7 @@ func pluginScores(outputPath: String,
4995
5087
  - platforms: Lint against specific platforms (defaults to all platforms supported by the podspec). Multiple platforms must be comma-delimited (available since cocoapods >= 1.6)
4996
5088
  - skipImportValidation: Lint skips validating that the pod can be imported (available since cocoapods >= 1.3)
4997
5089
  - skipTests: Lint skips building and running tests during validation (available since cocoapods >= 1.3)
5090
+ - analyze: Validate with the Xcode Static Analysis tool (available since cocoapods >= 1.6.1)
4998
5091
 
4999
5092
  Test the syntax of your Podfile by linting the pod against the files of its directory
5000
5093
  */
@@ -5016,7 +5109,8 @@ func podLibLint(useBundleExec: Bool = true,
5016
5109
  noSubspecs: Bool = false,
5017
5110
  platforms: String? = nil,
5018
5111
  skipImportValidation: Bool = false,
5019
- skipTests: Bool = false) {
5112
+ skipTests: Bool = false,
5113
+ analyze: Bool = false) {
5020
5114
  let command = RubyCommand(commandID: "", methodName: "pod_lib_lint", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
5021
5115
  RubyCommand.Argument(name: "podspec", value: podspec),
5022
5116
  RubyCommand.Argument(name: "verbose", value: verbose),
@@ -5035,7 +5129,8 @@ func podLibLint(useBundleExec: Bool = true,
5035
5129
  RubyCommand.Argument(name: "no_subspecs", value: noSubspecs),
5036
5130
  RubyCommand.Argument(name: "platforms", value: platforms),
5037
5131
  RubyCommand.Argument(name: "skip_import_validation", value: skipImportValidation),
5038
- RubyCommand.Argument(name: "skip_tests", value: skipTests)])
5132
+ RubyCommand.Argument(name: "skip_tests", value: skipTests),
5133
+ RubyCommand.Argument(name: "analyze", value: analyze)])
5039
5134
  _ = runner.executeCommand(command)
5040
5135
  }
5041
5136
 
@@ -5167,6 +5262,7 @@ func println(message: String? = nil) {
5167
5262
  - appVersion: Initial version number (e.g. '1.0')
5168
5263
  - sku: SKU Number (e.g. '1234')
5169
5264
  - platform: The platform to use (optional)
5265
+ - platforms: The platforms to use (optional)
5170
5266
  - language: Primary Language (e.g. 'English', 'German')
5171
5267
  - companyName: The name of your company. Only required if it's the first app you create
5172
5268
  - skipItc: Skip the creation of the app on App Store Connect
@@ -5190,6 +5286,7 @@ func produce(username: String,
5190
5286
  appVersion: String? = nil,
5191
5287
  sku: String,
5192
5288
  platform: String = "ios",
5289
+ platforms: [String]? = nil,
5193
5290
  language: String = "English",
5194
5291
  companyName: String? = nil,
5195
5292
  skipItc: Bool = false,
@@ -5208,6 +5305,7 @@ func produce(username: String,
5208
5305
  RubyCommand.Argument(name: "app_version", value: appVersion),
5209
5306
  RubyCommand.Argument(name: "sku", value: sku),
5210
5307
  RubyCommand.Argument(name: "platform", value: platform),
5308
+ RubyCommand.Argument(name: "platforms", value: platforms),
5211
5309
  RubyCommand.Argument(name: "language", value: language),
5212
5310
  RubyCommand.Argument(name: "company_name", value: companyName),
5213
5311
  RubyCommand.Argument(name: "skip_itc", value: skipItc),
@@ -5564,6 +5662,7 @@ func rubyVersion() {
5564
5662
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5565
5663
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5566
5664
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5665
+ - testplan: The testplan associated with the scheme that should be used for testing
5567
5666
  - xctestrun: Run tests using the provided `.xctestrun` file
5568
5667
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5569
5668
  - clean: Should the project be cleaned before building it?
@@ -5584,6 +5683,7 @@ func rubyVersion() {
5584
5683
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
5585
5684
  - resultBundle: Should an Xcode result bundle be generated in the output directory
5586
5685
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
5686
+ - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
5587
5687
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
5588
5688
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
5589
5689
  - skipBuild: Should debug build be skipped before test build?
@@ -5625,6 +5725,7 @@ func runTests(workspace: String? = nil,
5625
5725
  appIdentifier: String? = nil,
5626
5726
  onlyTesting: Any? = nil,
5627
5727
  skipTesting: Any? = nil,
5728
+ testplan: String? = nil,
5628
5729
  xctestrun: String? = nil,
5629
5730
  toolchain: Any? = nil,
5630
5731
  clean: Bool = false,
@@ -5645,6 +5746,7 @@ func runTests(workspace: String? = nil,
5645
5746
  shouldZipBuildProducts: Bool = false,
5646
5747
  resultBundle: Bool = false,
5647
5748
  useClangReportName: Bool = false,
5749
+ concurrentWorkers: Int? = nil,
5648
5750
  maxConcurrentSimulators: Int? = nil,
5649
5751
  disableConcurrentTesting: Bool = false,
5650
5752
  skipBuild: Bool = false,
@@ -5683,6 +5785,7 @@ func runTests(workspace: String? = nil,
5683
5785
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5684
5786
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5685
5787
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
5788
+ RubyCommand.Argument(name: "testplan", value: testplan),
5686
5789
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5687
5790
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5688
5791
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5703,6 +5806,7 @@ func runTests(workspace: String? = nil,
5703
5806
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
5704
5807
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
5705
5808
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
5809
+ RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
5706
5810
  RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
5707
5811
  RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
5708
5812
  RubyCommand.Argument(name: "skip_build", value: skipBuild),
@@ -5822,6 +5926,7 @@ func say(text: Any,
5822
5926
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
5823
5927
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5824
5928
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5929
+ - testplan: The testplan associated with the scheme that should be used for testing
5825
5930
  - xctestrun: Run tests using the provided `.xctestrun` file
5826
5931
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5827
5932
  - clean: Should the project be cleaned before building it?
@@ -5842,6 +5947,7 @@ func say(text: Any,
5842
5947
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
5843
5948
  - resultBundle: Should an Xcode result bundle be generated in the output directory
5844
5949
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
5950
+ - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
5845
5951
  - maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
5846
5952
  - disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
5847
5953
  - skipBuild: Should debug build be skipped before test build?
@@ -5883,6 +5989,7 @@ func scan(workspace: Any? = scanfile.workspace,
5883
5989
  appIdentifier: Any? = scanfile.appIdentifier,
5884
5990
  onlyTesting: Any? = scanfile.onlyTesting,
5885
5991
  skipTesting: Any? = scanfile.skipTesting,
5992
+ testplan: Any? = scanfile.testplan,
5886
5993
  xctestrun: Any? = scanfile.xctestrun,
5887
5994
  toolchain: Any? = scanfile.toolchain,
5888
5995
  clean: Bool = scanfile.clean,
@@ -5903,6 +6010,7 @@ func scan(workspace: Any? = scanfile.workspace,
5903
6010
  shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
5904
6011
  resultBundle: Bool = scanfile.resultBundle,
5905
6012
  useClangReportName: Bool = scanfile.useClangReportName,
6013
+ concurrentWorkers: Int? = scanfile.concurrentWorkers,
5906
6014
  maxConcurrentSimulators: Int? = scanfile.maxConcurrentSimulators,
5907
6015
  disableConcurrentTesting: Bool = scanfile.disableConcurrentTesting,
5908
6016
  skipBuild: Bool = scanfile.skipBuild,
@@ -5941,6 +6049,7 @@ func scan(workspace: Any? = scanfile.workspace,
5941
6049
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5942
6050
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5943
6051
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6052
+ RubyCommand.Argument(name: "testplan", value: testplan),
5944
6053
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5945
6054
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5946
6055
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5961,6 +6070,7 @@ func scan(workspace: Any? = scanfile.workspace,
5961
6070
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
5962
6071
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
5963
6072
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
6073
+ RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
5964
6074
  RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
5965
6075
  RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
5966
6076
  RubyCommand.Argument(name: "skip_build", value: skipBuild),
@@ -6243,7 +6353,7 @@ func setPodKey(useBundleExec: Bool = true,
6243
6353
  This action helps with CI integration. Add this to the top of your Fastfile if you use CI.
6244
6354
  */
6245
6355
  func setupCi(force: Bool = false,
6246
- provider: Bool = false) {
6356
+ provider: String? = nil) {
6247
6357
  let command = RubyCommand(commandID: "", methodName: "setup_ci", className: nil, args: [RubyCommand.Argument(name: "force", value: force),
6248
6358
  RubyCommand.Argument(name: "provider", value: provider)])
6249
6359
  _ = runner.executeCommand(command)
@@ -6282,13 +6392,16 @@ func setupCircleCi(force: Bool = false) {
6282
6392
  - resultBundle: Produce the result bundle describing what occurred will be placed
6283
6393
 
6284
6394
  - Adds and unlocks keychains from Jenkins 'Keychains and Provisioning Profiles Plugin'|
6395
+ - Sets unlocked keychain to be used by Match|
6285
6396
  - Sets code signing identity from Jenkins 'Keychains and Provisioning Profiles Plugin'|
6286
6397
  - Sets output directory to './output' (gym, scan and backup_xcarchive)|
6287
6398
  - Sets derived data path to './derivedData' (xcodebuild, gym, scan and clear_derived_data, carthage)|
6288
6399
  - Produce result bundle (gym and scan)|
6289
6400
  >|
6290
6401
  This action helps with Jenkins integration. Creates own derived data for each job. All build results like IPA files and archives will be stored in the `./output` directory.
6291
- The action also works with [Keychains and Provisioning Profiles Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Keychains+and+Provisioning+Profiles+Plugin), the selected keychain will be automatically unlocked and the selected code signing identity will be used. By default this action will only work when _fastlane_ is executed on a CI system.
6402
+ The action also works with [Keychains and Provisioning Profiles Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Keychains+and+Provisioning+Profiles+Plugin), the selected keychain will be automatically unlocked and the selected code signing identity will be used.
6403
+ [Match](https://docs.fastlane.tools/actions/match/) will be also set up to use the unlocked keychain and set in read-only mode, if its environment variables were not yet defined.
6404
+ By default this action will only work when _fastlane_ is executed on a CI system.
6292
6405
  */
6293
6406
  func setupJenkins(force: Bool = false,
6294
6407
  unlockKeychain: Bool = true,
@@ -6579,7 +6692,7 @@ func slather(buildDirectory: String? = nil,
6579
6692
  show: Bool = false,
6580
6693
  sourceDirectory: String? = nil,
6581
6694
  outputDirectory: String? = nil,
6582
- ignore: Any? = nil,
6695
+ ignore: [String]? = nil,
6583
6696
  verbose: Bool? = nil,
6584
6697
  useBundleExec: Bool = false,
6585
6698
  binaryBasename: Bool = false,
@@ -6863,6 +6976,7 @@ func splunkmint(dsym: String? = nil,
6863
6976
  - xcconfig: Use xcconfig file to override swift package generate-xcodeproj defaults
6864
6977
  - configuration: Build with configuration (debug|release) [default: debug]
6865
6978
  - xcprettyOutput: Specifies the output type for xcpretty. eg. 'test', or 'simple'
6979
+ - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also
6866
6980
  - verbose: Increase verbosity of informational output
6867
6981
  */
6868
6982
  func spm(command: String = "build",
@@ -6871,6 +6985,7 @@ func spm(command: String = "build",
6871
6985
  xcconfig: String? = nil,
6872
6986
  configuration: String? = nil,
6873
6987
  xcprettyOutput: String? = nil,
6988
+ xcprettyArgs: String? = nil,
6874
6989
  verbose: Bool = false) {
6875
6990
  let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
6876
6991
  RubyCommand.Argument(name: "build_path", value: buildPath),
@@ -6878,6 +6993,7 @@ func spm(command: String = "build",
6878
6993
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
6879
6994
  RubyCommand.Argument(name: "configuration", value: configuration),
6880
6995
  RubyCommand.Argument(name: "xcpretty_output", value: xcprettyOutput),
6996
+ RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
6881
6997
  RubyCommand.Argument(name: "verbose", value: verbose)])
6882
6998
  _ = runner.executeCommand(command)
6883
6999
  }
@@ -7033,10 +7149,12 @@ func supply(packageName: String,
7033
7149
  - strict: Fail on warnings? (true/false)
7034
7150
  - files: List of files to process
7035
7151
  - ignoreExitStatus: Ignore the exit status of the SwiftLint command, so that serious violations don't fail the build (true/false)
7036
- - reporter: Choose output reporter
7152
+ - raiseIfSwiftlintError: Raises an error if swiftlint fails, so you can fail CI/CD jobs if necessary (true/false)
7153
+ - reporter: Choose output reporter. Available: xcode, json, csv, checkstyle, junit, html, emoji, sonarqube, markdown, github-actions-logging
7037
7154
  - quiet: Don't print status logs like 'Linting <file>' & 'Done linting'
7038
7155
  - executable: Path to the `swiftlint` executable on your machine
7039
7156
  - format: Format code when mode is :autocorrect
7157
+ - noCache: Ignore the cache when mode is :autocorrect or :lint
7040
7158
  - compilerLogPath: Compiler log path when mode is :analyze
7041
7159
  */
7042
7160
  func swiftlint(mode: Any = "lint",
@@ -7046,10 +7164,12 @@ func swiftlint(mode: Any = "lint",
7046
7164
  strict: Bool = false,
7047
7165
  files: Any? = nil,
7048
7166
  ignoreExitStatus: Bool = false,
7167
+ raiseIfSwiftlintError: Bool = false,
7049
7168
  reporter: String? = nil,
7050
7169
  quiet: Bool = false,
7051
7170
  executable: String? = nil,
7052
7171
  format: Bool = false,
7172
+ noCache: Bool = false,
7053
7173
  compilerLogPath: String? = nil) {
7054
7174
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
7055
7175
  RubyCommand.Argument(name: "path", value: path),
@@ -7058,10 +7178,12 @@ func swiftlint(mode: Any = "lint",
7058
7178
  RubyCommand.Argument(name: "strict", value: strict),
7059
7179
  RubyCommand.Argument(name: "files", value: files),
7060
7180
  RubyCommand.Argument(name: "ignore_exit_status", value: ignoreExitStatus),
7181
+ RubyCommand.Argument(name: "raise_if_swiftlint_error", value: raiseIfSwiftlintError),
7061
7182
  RubyCommand.Argument(name: "reporter", value: reporter),
7062
7183
  RubyCommand.Argument(name: "quiet", value: quiet),
7063
7184
  RubyCommand.Argument(name: "executable", value: executable),
7064
7185
  RubyCommand.Argument(name: "format", value: format),
7186
+ RubyCommand.Argument(name: "no_cache", value: noCache),
7065
7187
  RubyCommand.Argument(name: "compiler_log_path", value: compilerLogPath)])
7066
7188
  _ = runner.executeCommand(command)
7067
7189
  }
@@ -7091,6 +7213,10 @@ func swiftlint(mode: Any = "lint",
7091
7213
  - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
7092
7214
  - googleCloudKeysFile: Path to the gc_keys.json file
7093
7215
  - googleCloudProjectId: ID of the Google Cloud project to use for authentication
7216
+ - s3Region: Name of the S3 region
7217
+ - s3AccessKey: S3 access key
7218
+ - s3SecretAccessKey: S3 secret access key
7219
+ - s3Bucket: Name of the S3 bucket
7094
7220
  - keychainName: Keychain the items should be imported to
7095
7221
  - 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
7096
7222
  - force: Renew the provisioning profiles every time you run match
@@ -7125,6 +7251,10 @@ func syncCodeSigning(type: String = "development",
7125
7251
  googleCloudBucketName: String? = nil,
7126
7252
  googleCloudKeysFile: String? = nil,
7127
7253
  googleCloudProjectId: String? = nil,
7254
+ s3Region: String? = nil,
7255
+ s3AccessKey: String? = nil,
7256
+ s3SecretAccessKey: String? = nil,
7257
+ s3Bucket: String? = nil,
7128
7258
  keychainName: String = "login.keychain",
7129
7259
  keychainPassword: String? = nil,
7130
7260
  force: Bool = false,
@@ -7156,6 +7286,10 @@ func syncCodeSigning(type: String = "development",
7156
7286
  RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
7157
7287
  RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
7158
7288
  RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
7289
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
7290
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
7291
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
7292
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
7159
7293
  RubyCommand.Argument(name: "keychain_name", value: keychainName),
7160
7294
  RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
7161
7295
  RubyCommand.Argument(name: "force", value: force),
@@ -7256,6 +7390,8 @@ func testfairy(apiKey: String,
7256
7390
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
7257
7391
  - distributeExternal: Should the build be distributed to external testers?
7258
7392
  - notifyExternalTesters: Should notify external testers?
7393
+ - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
7394
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
7259
7395
  - firstName: The tester's first name
7260
7396
  - lastName: The tester's last name
7261
7397
  - email: The tester's email
@@ -7290,6 +7426,8 @@ func testflight(username: String,
7290
7426
  usesNonExemptEncryption: Bool = false,
7291
7427
  distributeExternal: Bool = false,
7292
7428
  notifyExternalTesters: Bool = true,
7429
+ appVersion: String? = nil,
7430
+ buildNumber: String? = nil,
7293
7431
  firstName: String? = nil,
7294
7432
  lastName: String? = nil,
7295
7433
  email: String? = nil,
@@ -7320,6 +7458,8 @@ func testflight(username: String,
7320
7458
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
7321
7459
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
7322
7460
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
7461
+ RubyCommand.Argument(name: "app_version", value: appVersion),
7462
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
7323
7463
  RubyCommand.Argument(name: "first_name", value: firstName),
7324
7464
  RubyCommand.Argument(name: "last_name", value: lastName),
7325
7465
  RubyCommand.Argument(name: "email", value: email),
@@ -7457,6 +7597,45 @@ func updateAppIdentifier(xcodeproj: String,
7457
7597
  _ = runner.executeCommand(command)
7458
7598
  }
7459
7599
 
7600
+ /**
7601
+ Configures Xcode's Codesigning options
7602
+
7603
+ - parameters:
7604
+ - path: Path to your Xcode project
7605
+ - useAutomaticSigning: Defines if project should use automatic signing
7606
+ - teamId: Team ID, is used when upgrading project
7607
+ - targets: Specify targets you want to toggle the signing mech. (default to all targets)
7608
+ - buildConfigurations: Specify build_configurations you want to toggle the signing mech. (default to all targets)
7609
+ - codeSignIdentity: Code signing identity type (iPhone Developer, iPhone Distribution)
7610
+ - profileName: Provisioning profile name to use for code signing
7611
+ - profileUuid: Provisioning profile UUID to use for code signing
7612
+ - bundleIdentifier: Application Product Bundle Identifier
7613
+
7614
+ - returns: The current status (boolean) of codesigning after modification
7615
+
7616
+ Configures Xcode's Codesigning options of all targets in the project
7617
+ */
7618
+ func updateCodeSigningSettings(path: String,
7619
+ useAutomaticSigning: Bool = false,
7620
+ teamId: String? = nil,
7621
+ targets: [String]? = nil,
7622
+ buildConfigurations: [String]? = nil,
7623
+ codeSignIdentity: String? = nil,
7624
+ profileName: String? = nil,
7625
+ profileUuid: String? = nil,
7626
+ bundleIdentifier: String? = nil) {
7627
+ let command = RubyCommand(commandID: "", methodName: "update_code_signing_settings", className: nil, args: [RubyCommand.Argument(name: "path", value: path),
7628
+ RubyCommand.Argument(name: "use_automatic_signing", value: useAutomaticSigning),
7629
+ RubyCommand.Argument(name: "team_id", value: teamId),
7630
+ RubyCommand.Argument(name: "targets", value: targets),
7631
+ RubyCommand.Argument(name: "build_configurations", value: buildConfigurations),
7632
+ RubyCommand.Argument(name: "code_sign_identity", value: codeSignIdentity),
7633
+ RubyCommand.Argument(name: "profile_name", value: profileName),
7634
+ RubyCommand.Argument(name: "profile_uuid", value: profileUuid),
7635
+ RubyCommand.Argument(name: "bundle_identifier", value: bundleIdentifier)])
7636
+ _ = runner.executeCommand(command)
7637
+ }
7638
+
7460
7639
  /**
7461
7640
  Makes sure fastlane-tools are up-to-date when running fastlane
7462
7641
 
@@ -7690,6 +7869,7 @@ func updateUrlSchemes(path: String,
7690
7869
  - dsymPaths: Paths to the DSYM files or zips to upload
7691
7870
  - apiToken: Crashlytics API Key
7692
7871
  - gspPath: Path to GoogleService-Info.plist
7872
+ - appId: Firebase Crashlytics APP ID
7693
7873
  - binaryPath: The path to the upload-symbols file of the Fabric app
7694
7874
  - platform: The platform of the app (ios, appletvos, mac)
7695
7875
  - dsymWorkerThreads: The number of threads to use for simultaneous dSYM upload
@@ -7700,6 +7880,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
7700
7880
  dsymPaths: [String]? = nil,
7701
7881
  apiToken: String? = nil,
7702
7882
  gspPath: String? = nil,
7883
+ appId: String? = nil,
7703
7884
  binaryPath: String? = nil,
7704
7885
  platform: String = "ios",
7705
7886
  dsymWorkerThreads: Int = 1) {
@@ -7707,6 +7888,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
7707
7888
  RubyCommand.Argument(name: "dsym_paths", value: dsymPaths),
7708
7889
  RubyCommand.Argument(name: "api_token", value: apiToken),
7709
7890
  RubyCommand.Argument(name: "gsp_path", value: gspPath),
7891
+ RubyCommand.Argument(name: "app_id", value: appId),
7710
7892
  RubyCommand.Argument(name: "binary_path", value: binaryPath),
7711
7893
  RubyCommand.Argument(name: "platform", value: platform),
7712
7894
  RubyCommand.Argument(name: "dsym_worker_threads", value: dsymWorkerThreads)])
@@ -8114,6 +8296,8 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8114
8296
  - usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
8115
8297
  - distributeExternal: Should the build be distributed to external testers?
8116
8298
  - notifyExternalTesters: Should notify external testers?
8299
+ - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
8300
+ - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
8117
8301
  - firstName: The tester's first name
8118
8302
  - lastName: The tester's last name
8119
8303
  - email: The tester's email
@@ -8148,6 +8332,8 @@ func uploadToTestflight(username: String,
8148
8332
  usesNonExemptEncryption: Bool = false,
8149
8333
  distributeExternal: Bool = false,
8150
8334
  notifyExternalTesters: Bool = true,
8335
+ appVersion: String? = nil,
8336
+ buildNumber: String? = nil,
8151
8337
  firstName: String? = nil,
8152
8338
  lastName: String? = nil,
8153
8339
  email: String? = nil,
@@ -8178,6 +8364,8 @@ func uploadToTestflight(username: String,
8178
8364
  RubyCommand.Argument(name: "uses_non_exempt_encryption", value: usesNonExemptEncryption),
8179
8365
  RubyCommand.Argument(name: "distribute_external", value: distributeExternal),
8180
8366
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
8367
+ RubyCommand.Argument(name: "app_version", value: appVersion),
8368
+ RubyCommand.Argument(name: "build_number", value: buildNumber),
8181
8369
  RubyCommand.Argument(name: "first_name", value: firstName),
8182
8370
  RubyCommand.Argument(name: "last_name", value: lastName),
8183
8371
  RubyCommand.Argument(name: "email", value: email),
@@ -8487,7 +8675,7 @@ func xcov(workspace: String? = nil,
8487
8675
  coverallsServiceJobId: String? = nil,
8488
8676
  coverallsRepoToken: String? = nil,
8489
8677
  xcconfig: String? = nil,
8490
- ideFoundationPath: String = "/Applications/Xcode-11.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8678
+ ideFoundationPath: String = "/Applications/Xcode-11.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8491
8679
  legacySupport: Bool = false) {
8492
8680
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8493
8681
  RubyCommand.Argument(name: "project", value: project),
@@ -8632,4 +8820,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8632
8820
 
8633
8821
  // Please don't remove the lines below
8634
8822
  // They are used to detect outdated files
8635
- // FastlaneRunnerAPIVersion [0.9.69]
8823
+ // FastlaneRunnerAPIVersion [0.9.74]