fastlane 2.147.0 → 2.150.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/cert/lib/cert/commands_generator.rb +1 -0
  4. data/credentials_manager/lib/credentials_manager/cli.rb +2 -0
  5. data/deliver/lib/deliver.rb +0 -1
  6. data/deliver/lib/deliver/app_screenshot.rb +28 -27
  7. data/deliver/lib/deliver/commands_generator.rb +1 -0
  8. data/deliver/lib/deliver/html_generator.rb +2 -2
  9. data/deliver/lib/deliver/options.rb +6 -11
  10. data/deliver/lib/deliver/runner.rb +7 -4
  11. data/deliver/lib/deliver/setup.rb +5 -30
  12. data/deliver/lib/deliver/submit_for_review.rb +124 -83
  13. data/deliver/lib/deliver/upload_metadata.rb +284 -143
  14. data/deliver/lib/deliver/upload_price_tier.rb +15 -8
  15. data/deliver/lib/deliver/upload_screenshots.rb +86 -37
  16. data/fastlane/lib/assets/s3_html_template.erb +1 -1
  17. data/fastlane/lib/fastlane/actions/crashlytics.rb +0 -4
  18. data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -1
  19. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +42 -2
  20. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  21. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
  22. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +3 -11
  23. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +15 -2
  24. data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -1
  25. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
  27. data/fastlane/lib/fastlane/actions/hipchat.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/slack.rb +2 -2
  30. data/fastlane/lib/fastlane/actions/slather.rb +8 -1
  31. data/fastlane/lib/fastlane/actions/spm.rb +7 -0
  32. data/fastlane/lib/fastlane/actions/swiftlint.rb +14 -0
  33. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
  34. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +3 -34
  35. data/fastlane/lib/fastlane/actions/xcodebuild.rb +4 -4
  36. data/fastlane/lib/fastlane/cli_tools_distributor.rb +28 -6
  37. data/fastlane/lib/fastlane/commands_generator.rb +1 -1
  38. data/fastlane/lib/fastlane/documentation/actions_list.rb +1 -1
  39. data/fastlane/lib/fastlane/lane.rb +3 -3
  40. data/fastlane/lib/fastlane/lane_manager.rb +0 -10
  41. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +3 -3
  42. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +29 -0
  43. data/fastlane/lib/fastlane/swift_fastlane_function.rb +22 -5
  44. data/fastlane/lib/fastlane/swift_lane_manager.rb +0 -8
  45. data/fastlane/lib/fastlane/version.rb +1 -1
  46. data/fastlane/swift/ControlCommand.swift +1 -0
  47. data/fastlane/swift/Deliverfile.swift +1 -1
  48. data/fastlane/swift/Fastlane.swift +140 -30
  49. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
  50. data/fastlane/swift/Gymfile.swift +1 -1
  51. data/fastlane/swift/GymfileProtocol.swift +1 -1
  52. data/fastlane/swift/Matchfile.swift +1 -1
  53. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  54. data/fastlane/swift/Precheckfile.swift +1 -1
  55. data/fastlane/swift/RubyCommand.swift +29 -6
  56. data/fastlane/swift/RubyCommandable.swift +1 -0
  57. data/fastlane/swift/Runner.swift +85 -13
  58. data/fastlane/swift/Scanfile.swift +1 -1
  59. data/fastlane/swift/ScanfileProtocol.swift +10 -2
  60. data/fastlane/swift/Screengrabfile.swift +1 -1
  61. data/fastlane/swift/Snapshotfile.swift +1 -1
  62. data/fastlane/swift/SnapshotfileProtocol.swift +17 -1
  63. data/fastlane/swift/SocketClient.swift +76 -45
  64. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  65. data/fastlane/swift/SocketResponse.swift +1 -0
  66. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -3
  67. data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
  68. data/frameit/lib/frameit/commands_generator.rb +1 -0
  69. data/frameit/lib/frameit/device_types.rb +100 -100
  70. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  71. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +4 -0
  72. data/gym/lib/gym/options.rb +1 -1
  73. data/gym/lib/gym/runner.rb +14 -0
  74. data/match/lib/match/commands_generator.rb +1 -0
  75. data/match/lib/match/generator.rb +2 -1
  76. data/match/lib/match/nuke.rb +21 -16
  77. data/match/lib/match/options.rb +18 -1
  78. data/match/lib/match/storage/git_storage.rb +4 -0
  79. data/match/lib/match/storage/google_cloud_storage.rb +4 -0
  80. data/match/lib/match/storage/interface.rb +4 -0
  81. data/match/lib/match/storage/s3_storage.rb +4 -0
  82. data/pem/lib/pem/commands_generator.rb +1 -0
  83. data/pilot/lib/pilot/build_manager.rb +23 -7
  84. data/pilot/lib/pilot/options.rb +5 -0
  85. data/produce/lib/produce/commands_generator.rb +1 -0
  86. data/produce/lib/produce/itunes_connect.rb +20 -20
  87. data/produce/lib/produce/options.rb +3 -3
  88. data/scan/lib/scan/detect_values.rb +3 -0
  89. data/scan/lib/scan/options.rb +20 -2
  90. data/scan/lib/scan/test_command_generator.rb +6 -1
  91. data/scan/lib/scan/test_result_parser.rb +9 -2
  92. data/screengrab/lib/screengrab/runner.rb +10 -9
  93. data/sigh/lib/assets/resign.sh +7 -7
  94. data/sigh/lib/sigh/commands_generator.rb +1 -0
  95. data/sigh/lib/sigh/options.rb +7 -1
  96. data/sigh/lib/sigh/runner.rb +2 -1
  97. data/snapshot/lib/assets/SnapshotHelper.swift +16 -37
  98. data/snapshot/lib/assets/SnapshotHelperXcode8.swift +3 -3
  99. data/snapshot/lib/snapshot/detect_values.rb +15 -0
  100. data/snapshot/lib/snapshot/options.rb +31 -0
  101. data/snapshot/lib/snapshot/reports_generator.rb +8 -1
  102. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +3 -1
  103. data/snapshot/lib/snapshot/test_command_generator.rb +8 -3
  104. data/snapshot/lib/snapshot/test_command_generator_base.rb +7 -1
  105. data/spaceship/lib/spaceship/.DS_Store +0 -0
  106. data/spaceship/lib/spaceship/client.rb +9 -1
  107. data/spaceship/lib/spaceship/commands_generator.rb +1 -0
  108. data/spaceship/lib/spaceship/connect_api.rb +21 -2
  109. data/spaceship/lib/spaceship/connect_api/client.rb +47 -11
  110. data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
  111. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +109 -0
  112. data/spaceship/lib/spaceship/connect_api/models/app.rb +113 -3
  113. data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
  114. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +74 -0
  115. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
  116. data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
  117. data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
  118. data/spaceship/lib/spaceship/connect_api/models/app_review_attachment.rb +81 -0
  119. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +117 -0
  120. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +101 -0
  121. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
  122. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +182 -0
  123. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +70 -0
  124. data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +36 -0
  125. data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
  126. data/spaceship/lib/spaceship/connect_api/models/build.rb +8 -0
  127. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +40 -0
  128. data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
  129. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +10 -3
  130. data/spaceship/lib/spaceship/connect_api/tunes/client.rb +33 -0
  131. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +703 -0
  132. data/spaceship/lib/spaceship/errors.rb +3 -0
  133. data/spaceship/lib/spaceship/spaceauth_runner.rb +2 -2
  134. data/supply/lib/supply/client.rb +19 -0
  135. data/supply/lib/supply/commands_generator.rb +1 -0
  136. data/supply/lib/supply/options.rb +9 -0
  137. data/supply/lib/supply/reader.rb +16 -0
  138. data/supply/lib/supply/uploader.rb +4 -0
  139. metadata +52 -47
  140. data/deliver/lib/deliver/upload_assets.rb +0 -27
  141. data/supply/lib/supply/.client.rb.swp +0 -0
@@ -95,8 +95,14 @@ module Fastlane
95
95
  return "Int"
96
96
  elsif type_override == Boolean
97
97
  return "Bool"
98
+ elsif type_override == Float
99
+ return "Float"
98
100
  elsif type_override == :string_callback
99
- return "((String) -> Void)"
101
+ # David Hart:
102
+ # It doesn't make sense to add escaping annotations to optional closures because they aren't function types:
103
+ # they are basically an enum (Optional) containing a function, the same way you would store a closure in any type:
104
+ # it's implicitly escaping because it's owned by another type.
105
+ return "((String) -> Void)?"
100
106
  else
101
107
  return default_type
102
108
  end
@@ -104,7 +110,7 @@ module Fastlane
104
110
 
105
111
  def override_default_value_if_not_correct_type(param_name: nil, param_type: nil, default_value: nil)
106
112
  return "[]" if param_type == "[String]" && default_value == ""
107
- return "{_ in }" if param_type == "((String) -> Void)"
113
+ return "nil" if param_type == "((String) -> Void)?"
108
114
 
109
115
  return default_value
110
116
  end
@@ -119,7 +125,7 @@ module Fastlane
119
125
 
120
126
  optional_specifier = ""
121
127
  # if we are optional and don't have a default value, we'll need to use ?
122
- optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)"
128
+ optional_specifier = "?" if (optional && default_value.nil?) && type != "((String) -> Void)?"
123
129
 
124
130
  # If we have a default value of true or false, we can infer it is a Bool
125
131
  if default_value.class == FalseClass
@@ -130,8 +136,19 @@ module Fastlane
130
136
  type = "[String]"
131
137
  elsif default_value.kind_of?(Hash)
132
138
  type = "[String : Any]"
139
+ # Altough we can have a default value of Integer type, if param_type_override overridden that value, respect it.
133
140
  elsif default_value.kind_of?(Integer)
134
- type = "Int"
141
+ if type == "Double" || type == "Float"
142
+ begin
143
+ # If we're not able to instantiate
144
+ _ = BigDecimal(default_value)
145
+ rescue
146
+ # We set it as a Int
147
+ type = "Int"
148
+ end
149
+ else
150
+ type = "Int"
151
+ end
135
152
  end
136
153
  return "#{type}#{optional_specifier}"
137
154
  end
@@ -149,7 +166,7 @@ module Fastlane
149
166
  # we can't handle default values for Hashes, yet
150
167
  # see method swift_default_implementations for similar behavior
151
168
  default_value = "[:]"
152
- elsif type != "Bool" && type != "[String]" && type != "Int" && type != "((String) -> Void)"
169
+ elsif type != "Bool" && type != "[String]" && type != "Int" && type != "@escaping ((String) -> Void)" && type != "Float" && type != "Double"
153
170
  default_value = "\"#{default_value}\""
154
171
  end
155
172
  end
@@ -14,14 +14,6 @@ module Fastlane
14
14
  ENV["FASTLANE_LANE_NAME"] = lane
15
15
  Actions.lane_context[Actions::SharedValues::LANE_NAME] = lane
16
16
 
17
- # xcodeproj has a bug in certain versions that causes it to change directories
18
- # and not return to the original working directory
19
- # https://github.com/CocoaPods/Xcodeproj/issues/426
20
- # Setting this environment variable causes xcodeproj to work around the problem
21
- ENV["FORK_XCODE_WRITING"] = "true"
22
-
23
- Fastlane::Helper::DotenvHelper.load_dot_env(env)
24
-
25
17
  started = Time.now
26
18
  e = nil
27
19
  begin
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.147.0'.freeze
2
+ VERSION = '2.150.0.rc1'.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
@@ -49,6 +49,7 @@ struct ControlCommand: RubyCommandable {
49
49
  }
50
50
 
51
51
  let message: String?
52
+ let id: String = UUID().uuidString
52
53
  let shutdownCommandType: ShutdownCommandType
53
54
  var commandJson: String {
54
55
  var jsonDictionary: [String: Any] = [ControlCommand.commandKey : self.shutdownCommandType.token]
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.147.0
21
+ // Generated with fastlane 2.149.1
@@ -894,7 +894,7 @@ func buildAndroidApp(task: String? = nil,
894
894
  - skipArchive: After building, don't archive, effectively not including -archivePath param
895
895
  - skipCodesigning: Build without codesigning
896
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)`
897
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
898
898
  - buildPath: The directory in which the archive should be stored in
899
899
  - archivePath: The path to the created archive
900
900
  - derivedDataPath: The directory where built products and other derived data will go
@@ -1171,7 +1171,7 @@ func buildIosApp(workspace: String? = nil,
1171
1171
  - skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
1172
1172
  - skipArchive: After building, don't archive, effectively not including -archivePath param
1173
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)`
1174
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
1175
1175
  - buildPath: The directory in which the archive should be stored in
1176
1176
  - archivePath: The path to the created archive
1177
1177
  - derivedDataPath: The directory where built products and other derived data will go
@@ -1448,6 +1448,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1448
1448
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
1449
1449
  - addPhotos: A list of photos that should be added to the simulator before running the application
1450
1450
  - addVideos: A list of videos that should be added to the simulator before running the application
1451
+ - htmlTemplate: A path to screenshots.html template
1451
1452
  - buildlogPath: The directory where to store the build log
1452
1453
  - clean: Should the project be cleaned before building it?
1453
1454
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -1465,6 +1466,9 @@ func captureAndroidScreenshots(androidHome: String? = nil,
1465
1466
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1466
1467
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1467
1468
  - testplan: The testplan associated with the scheme that should be used for testing
1469
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1470
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1471
+ - disableXcpretty: Disable xcpretty formatting of build
1468
1472
  */
1469
1473
  func captureIosScreenshots(workspace: String? = nil,
1470
1474
  project: String? = nil,
@@ -1487,6 +1491,7 @@ func captureIosScreenshots(workspace: String? = nil,
1487
1491
  appIdentifier: String? = nil,
1488
1492
  addPhotos: [String]? = nil,
1489
1493
  addVideos: [String]? = nil,
1494
+ htmlTemplate: String? = nil,
1490
1495
  buildlogPath: String = "~/Library/Logs/snapshot",
1491
1496
  clean: Bool = false,
1492
1497
  testWithoutBuilding: Bool? = nil,
@@ -1503,7 +1508,10 @@ func captureIosScreenshots(workspace: String? = nil,
1503
1508
  concurrentSimulators: Bool = true,
1504
1509
  disableSlideToType: Bool = false,
1505
1510
  clonedSourcePackagesPath: String? = nil,
1506
- testplan: String? = nil) {
1511
+ testplan: String? = nil,
1512
+ onlyTesting: Any? = nil,
1513
+ skipTesting: Any? = nil,
1514
+ disableXcpretty: Bool? = nil) {
1507
1515
  let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1508
1516
  RubyCommand.Argument(name: "project", value: project),
1509
1517
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1525,6 +1533,7 @@ func captureIosScreenshots(workspace: String? = nil,
1525
1533
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1526
1534
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
1527
1535
  RubyCommand.Argument(name: "add_videos", value: addVideos),
1536
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
1528
1537
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1529
1538
  RubyCommand.Argument(name: "clean", value: clean),
1530
1539
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -1541,7 +1550,10 @@ func captureIosScreenshots(workspace: String? = nil,
1541
1550
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1542
1551
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1543
1552
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1544
- RubyCommand.Argument(name: "testplan", value: testplan)])
1553
+ RubyCommand.Argument(name: "testplan", value: testplan),
1554
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1555
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1556
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1545
1557
  _ = runner.executeCommand(command)
1546
1558
  }
1547
1559
 
@@ -1570,6 +1582,7 @@ func captureIosScreenshots(workspace: String? = nil,
1570
1582
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
1571
1583
  - addPhotos: A list of photos that should be added to the simulator before running the application
1572
1584
  - addVideos: A list of videos that should be added to the simulator before running the application
1585
+ - htmlTemplate: A path to screenshots.html template
1573
1586
  - buildlogPath: The directory where to store the build log
1574
1587
  - clean: Should the project be cleaned before building it?
1575
1588
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -1587,6 +1600,9 @@ func captureIosScreenshots(workspace: String? = nil,
1587
1600
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
1588
1601
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
1589
1602
  - testplan: The testplan associated with the scheme that should be used for testing
1603
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
1604
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
1605
+ - disableXcpretty: Disable xcpretty formatting of build
1590
1606
  */
1591
1607
  func captureScreenshots(workspace: String? = nil,
1592
1608
  project: String? = nil,
@@ -1609,6 +1625,7 @@ func captureScreenshots(workspace: String? = nil,
1609
1625
  appIdentifier: String? = nil,
1610
1626
  addPhotos: [String]? = nil,
1611
1627
  addVideos: [String]? = nil,
1628
+ htmlTemplate: String? = nil,
1612
1629
  buildlogPath: String = "~/Library/Logs/snapshot",
1613
1630
  clean: Bool = false,
1614
1631
  testWithoutBuilding: Bool? = nil,
@@ -1625,7 +1642,10 @@ func captureScreenshots(workspace: String? = nil,
1625
1642
  concurrentSimulators: Bool = true,
1626
1643
  disableSlideToType: Bool = false,
1627
1644
  clonedSourcePackagesPath: String? = nil,
1628
- testplan: String? = nil) {
1645
+ testplan: String? = nil,
1646
+ onlyTesting: Any? = nil,
1647
+ skipTesting: Any? = nil,
1648
+ disableXcpretty: Bool? = nil) {
1629
1649
  let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1630
1650
  RubyCommand.Argument(name: "project", value: project),
1631
1651
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -1647,6 +1667,7 @@ func captureScreenshots(workspace: String? = nil,
1647
1667
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
1648
1668
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
1649
1669
  RubyCommand.Argument(name: "add_videos", value: addVideos),
1670
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
1650
1671
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
1651
1672
  RubyCommand.Argument(name: "clean", value: clean),
1652
1673
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -1663,7 +1684,10 @@ func captureScreenshots(workspace: String? = nil,
1663
1684
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
1664
1685
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
1665
1686
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
1666
- RubyCommand.Argument(name: "testplan", value: testplan)])
1687
+ RubyCommand.Argument(name: "testplan", value: testplan),
1688
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
1689
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
1690
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
1667
1691
  _ = runner.executeCommand(command)
1668
1692
  }
1669
1693
 
@@ -2015,7 +2039,7 @@ func cocoapods(repoUpdate: Bool = false,
2015
2039
  ansi: Bool = true,
2016
2040
  useBundleExec: Bool = true,
2017
2041
  podfile: String? = nil,
2018
- errorCallback: Any? = nil,
2042
+ errorCallback: ((String) -> Void)? = nil,
2019
2043
  tryRepoUpdateOnError: Bool = false,
2020
2044
  deployment: Bool = false,
2021
2045
  clean: Bool = true,
@@ -2027,7 +2051,7 @@ func cocoapods(repoUpdate: Bool = false,
2027
2051
  RubyCommand.Argument(name: "ansi", value: ansi),
2028
2052
  RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
2029
2053
  RubyCommand.Argument(name: "podfile", value: podfile),
2030
- RubyCommand.Argument(name: "error_callback", value: errorCallback),
2054
+ RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure),
2031
2055
  RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError),
2032
2056
  RubyCommand.Argument(name: "deployment", value: deployment),
2033
2057
  RubyCommand.Argument(name: "clean", value: clean),
@@ -2149,10 +2173,6 @@ func copyArtifacts(keepOriginal: Bool = true,
2149
2173
  - notifications: Crashlytics notification option (true/false)
2150
2174
  - debug: Crashlytics debug option (true/false)
2151
2175
 
2152
- Crashlytics Beta has been deprecated and replaced with Firebase App Distribution.
2153
- Beta will continue working until May 4, 2020.
2154
- Check out the [Firebase App Distribution docs](https://github.com/fastlane/fastlane-plugin-firebase_app_distribution) to get started.
2155
-
2156
2176
  Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.
2157
2177
  Distributing to Groups: When using the `groups` parameter, it's important to use the group **alias** names for each group you'd like to distribute to. A group's alias can be found in the web UI. If you're viewing the Beta page, you can open the groups dialog by clicking the 'Manage Groups' button.
2158
2178
  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.
@@ -3034,7 +3054,7 @@ func frameScreenshots(white: Bool? = nil,
3034
3054
  useLegacyIphonexr: Bool = false,
3035
3055
  useLegacyIphonexs: Bool = false,
3036
3056
  useLegacyIphonexsmax: Bool = false,
3037
- forceOrientationBlock: String? = nil,
3057
+ forceOrientationBlock: ((String) -> Void)? = nil,
3038
3058
  debugMode: Bool = false,
3039
3059
  resume: Bool = false,
3040
3060
  usePlatform: String = "IOS",
@@ -3051,7 +3071,7 @@ func frameScreenshots(white: Bool? = nil,
3051
3071
  RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3052
3072
  RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3053
3073
  RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3054
- RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3074
+ RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
3055
3075
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3056
3076
  RubyCommand.Argument(name: "resume", value: resume),
3057
3077
  RubyCommand.Argument(name: "use_platform", value: usePlatform),
@@ -3096,7 +3116,7 @@ func frameit(white: Bool? = nil,
3096
3116
  useLegacyIphonexr: Bool = false,
3097
3117
  useLegacyIphonexs: Bool = false,
3098
3118
  useLegacyIphonexsmax: Bool = false,
3099
- forceOrientationBlock: String? = nil,
3119
+ forceOrientationBlock: ((String) -> Void)? = nil,
3100
3120
  debugMode: Bool = false,
3101
3121
  resume: Bool = false,
3102
3122
  usePlatform: String = "IOS",
@@ -3113,7 +3133,7 @@ func frameit(white: Bool? = nil,
3113
3133
  RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
3114
3134
  RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
3115
3135
  RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
3116
- RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
3136
+ RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock, type: .stringClosure),
3117
3137
  RubyCommand.Argument(name: "debug_mode", value: debugMode),
3118
3138
  RubyCommand.Argument(name: "resume", value: resume),
3119
3139
  RubyCommand.Argument(name: "use_platform", value: usePlatform),
@@ -3353,6 +3373,7 @@ func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3353
3373
  - platform: Set the provisioning profile's platform (i.e. ios, tvos)
3354
3374
  - readonly: Only fetch existing profile, don't generate new ones
3355
3375
  - 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")
3376
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
3356
3377
 
3357
3378
  - returns: The UUID of the profile sigh just fetched/generated
3358
3379
 
@@ -3377,7 +3398,8 @@ func getProvisioningProfile(adhoc: Bool = false,
3377
3398
  skipCertificateVerification: Bool = false,
3378
3399
  platform: Any = "ios",
3379
3400
  readonly: Bool = false,
3380
- templateName: String? = nil) {
3401
+ templateName: String? = nil,
3402
+ failOnNameTaken: Bool = false) {
3381
3403
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
3382
3404
  RubyCommand.Argument(name: "developer_id", value: developerId),
3383
3405
  RubyCommand.Argument(name: "development", value: development),
@@ -3397,7 +3419,8 @@ func getProvisioningProfile(adhoc: Bool = false,
3397
3419
  RubyCommand.Argument(name: "skip_certificate_verification", value: skipCertificateVerification),
3398
3420
  RubyCommand.Argument(name: "platform", value: platform),
3399
3421
  RubyCommand.Argument(name: "readonly", value: readonly),
3400
- RubyCommand.Argument(name: "template_name", value: templateName)])
3422
+ RubyCommand.Argument(name: "template_name", value: templateName),
3423
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
3401
3424
  _ = runner.executeCommand(command)
3402
3425
  }
3403
3426
 
@@ -3616,6 +3639,42 @@ func githubApi(serverUrl: String = "https://api.github.com",
3616
3639
  _ = runner.executeCommand(command)
3617
3640
  }
3618
3641
 
3642
+ /**
3643
+ Retrieves release names for a Google Play track
3644
+
3645
+ - parameters:
3646
+ - packageName: The package name of the application to use
3647
+ - track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
3648
+ - key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
3649
+ - issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
3650
+ - jsonKey: The path to a file containing service account JSON, used to authenticate with Google
3651
+ - jsonKeyData: The raw service account JSON data used to authenticate with Google
3652
+ - rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
3653
+ - timeout: Timeout for read, open, and send (in seconds)
3654
+
3655
+ - returns: Array of strings representing the release names for the given Google Play track
3656
+
3657
+ More information: [https://docs.fastlane.tools/actions/supply/](https://docs.fastlane.tools/actions/supply/)
3658
+ */
3659
+ func googlePlayTrackReleaseNames(packageName: String,
3660
+ track: String = "production",
3661
+ key: String? = nil,
3662
+ issuer: String? = nil,
3663
+ jsonKey: String? = nil,
3664
+ jsonKeyData: String? = nil,
3665
+ rootUrl: String? = nil,
3666
+ timeout: Int = 300) {
3667
+ let command = RubyCommand(commandID: "", methodName: "google_play_track_release_names", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
3668
+ RubyCommand.Argument(name: "track", value: track),
3669
+ RubyCommand.Argument(name: "key", value: key),
3670
+ RubyCommand.Argument(name: "issuer", value: issuer),
3671
+ RubyCommand.Argument(name: "json_key", value: jsonKey),
3672
+ RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
3673
+ RubyCommand.Argument(name: "root_url", value: rootUrl),
3674
+ RubyCommand.Argument(name: "timeout", value: timeout)])
3675
+ _ = runner.executeCommand(command)
3676
+ }
3677
+
3619
3678
  /**
3620
3679
  Retrieves version codes for a Google Play track
3621
3680
 
@@ -3724,7 +3783,7 @@ func gradle(task: String? = nil,
3724
3783
  - skipArchive: After building, don't archive, effectively not including -archivePath param
3725
3784
  - skipCodesigning: Build without codesigning
3726
3785
  - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
3727
- - installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3786
+ - installerCertName: Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
3728
3787
  - buildPath: The directory in which the archive should be stored in
3729
3788
  - archivePath: The path to the created archive
3730
3789
  - derivedDataPath: The directory where built products and other derived data will go
@@ -4509,6 +4568,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
4509
4568
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
4510
4569
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
4511
4570
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
4571
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
4512
4572
  - outputPath: Path in which to export certificates, key and profile
4513
4573
  - verbose: Print out extra information and all commands
4514
4574
 
@@ -4548,6 +4608,7 @@ func match(type: Any = matchfile.type,
4548
4608
  platform: Any = matchfile.platform,
4549
4609
  templateName: Any? = matchfile.templateName,
4550
4610
  profileName: Any? = matchfile.profileName,
4611
+ failOnNameTaken: Bool = matchfile.failOnNameTaken,
4551
4612
  outputPath: Any? = matchfile.outputPath,
4552
4613
  verbose: Bool = matchfile.verbose) {
4553
4614
  let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -4584,6 +4645,7 @@ func match(type: Any = matchfile.type,
4584
4645
  RubyCommand.Argument(name: "platform", value: platform),
4585
4646
  RubyCommand.Argument(name: "template_name", value: templateName),
4586
4647
  RubyCommand.Argument(name: "profile_name", value: profileName),
4648
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
4587
4649
  RubyCommand.Argument(name: "output_path", value: outputPath),
4588
4650
  RubyCommand.Argument(name: "verbose", value: verbose)])
4589
4651
  _ = runner.executeCommand(command)
@@ -4979,6 +5041,7 @@ func pem(development: Bool = false,
4979
5041
  - notifyExternalTesters: Should notify external testers?
4980
5042
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
4981
5043
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
5044
+ - expirePreviousBuilds: Should expire previous builds?
4982
5045
  - firstName: The tester's first name
4983
5046
  - lastName: The tester's last name
4984
5047
  - email: The tester's email
@@ -5015,6 +5078,7 @@ func pilot(username: String,
5015
5078
  notifyExternalTesters: Bool = true,
5016
5079
  appVersion: String? = nil,
5017
5080
  buildNumber: String? = nil,
5081
+ expirePreviousBuilds: Bool = false,
5018
5082
  firstName: String? = nil,
5019
5083
  lastName: String? = nil,
5020
5084
  email: String? = nil,
@@ -5047,6 +5111,7 @@ func pilot(username: String,
5047
5111
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
5048
5112
  RubyCommand.Argument(name: "app_version", value: appVersion),
5049
5113
  RubyCommand.Argument(name: "build_number", value: buildNumber),
5114
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
5050
5115
  RubyCommand.Argument(name: "first_name", value: firstName),
5051
5116
  RubyCommand.Argument(name: "last_name", value: lastName),
5052
5117
  RubyCommand.Argument(name: "email", value: email),
@@ -5678,6 +5743,8 @@ func rubyVersion() {
5678
5743
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5679
5744
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5680
5745
  - testplan: The testplan associated with the scheme that should be used for testing
5746
+ - onlyTestConfigurations: Array of strings matching test plan configurations to run
5747
+ - skipTestConfigurations: Array of strings matching test plan configurations to skip
5681
5748
  - xctestrun: Run tests using the provided `.xctestrun` file
5682
5749
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5683
5750
  - clean: Should the project be cleaned before building it?
@@ -5742,6 +5809,8 @@ func runTests(workspace: String? = nil,
5742
5809
  onlyTesting: Any? = nil,
5743
5810
  skipTesting: Any? = nil,
5744
5811
  testplan: String? = nil,
5812
+ onlyTestConfigurations: Any? = nil,
5813
+ skipTestConfigurations: Any? = nil,
5745
5814
  xctestrun: String? = nil,
5746
5815
  toolchain: Any? = nil,
5747
5816
  clean: Bool = false,
@@ -5780,7 +5849,7 @@ func runTests(workspace: String? = nil,
5780
5849
  slackMessage: String? = nil,
5781
5850
  slackUseWebhookConfiguredUsernameAndIcon: Bool = false,
5782
5851
  slackUsername: String = "fastlane",
5783
- slackIconUrl: String = "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
5852
+ slackIconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
5784
5853
  skipSlack: Bool = false,
5785
5854
  slackOnlyOnFailure: Bool = false,
5786
5855
  destination: Any? = nil,
@@ -5803,6 +5872,8 @@ func runTests(workspace: String? = nil,
5803
5872
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
5804
5873
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
5805
5874
  RubyCommand.Argument(name: "testplan", value: testplan),
5875
+ RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations),
5876
+ RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations),
5806
5877
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
5807
5878
  RubyCommand.Argument(name: "toolchain", value: toolchain),
5808
5879
  RubyCommand.Argument(name: "clean", value: clean),
@@ -5945,6 +6016,8 @@ func say(text: Any,
5945
6016
  - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
5946
6017
  - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
5947
6018
  - testplan: The testplan associated with the scheme that should be used for testing
6019
+ - onlyTestConfigurations: Array of strings matching test plan configurations to run
6020
+ - skipTestConfigurations: Array of strings matching test plan configurations to skip
5948
6021
  - xctestrun: Run tests using the provided `.xctestrun` file
5949
6022
  - toolchain: The toolchain that should be used for building the application (e.g. `com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a`)
5950
6023
  - clean: Should the project be cleaned before building it?
@@ -6009,6 +6082,8 @@ func scan(workspace: Any? = scanfile.workspace,
6009
6082
  onlyTesting: Any? = scanfile.onlyTesting,
6010
6083
  skipTesting: Any? = scanfile.skipTesting,
6011
6084
  testplan: Any? = scanfile.testplan,
6085
+ onlyTestConfigurations: Any? = scanfile.onlyTestConfigurations,
6086
+ skipTestConfigurations: Any? = scanfile.skipTestConfigurations,
6012
6087
  xctestrun: Any? = scanfile.xctestrun,
6013
6088
  toolchain: Any? = scanfile.toolchain,
6014
6089
  clean: Bool = scanfile.clean,
@@ -6070,6 +6145,8 @@ func scan(workspace: Any? = scanfile.workspace,
6070
6145
  RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6071
6146
  RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6072
6147
  RubyCommand.Argument(name: "testplan", value: testplan),
6148
+ RubyCommand.Argument(name: "only_test_configurations", value: onlyTestConfigurations),
6149
+ RubyCommand.Argument(name: "skip_test_configurations", value: skipTestConfigurations),
6073
6150
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
6074
6151
  RubyCommand.Argument(name: "toolchain", value: toolchain),
6075
6152
  RubyCommand.Argument(name: "clean", value: clean),
@@ -6479,10 +6556,10 @@ func setupTravis(force: Bool = false) {
6479
6556
  */
6480
6557
  @discardableResult func sh(command: String,
6481
6558
  log: Bool = true,
6482
- errorCallback: Any? = nil) -> String {
6559
+ errorCallback: ((String) -> Void)? = nil) -> String {
6483
6560
  let command = RubyCommand(commandID: "", methodName: "sh", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
6484
6561
  RubyCommand.Argument(name: "log", value: log),
6485
- RubyCommand.Argument(name: "error_callback", value: errorCallback)])
6562
+ RubyCommand.Argument(name: "error_callback", value: errorCallback, type: .stringClosure)])
6486
6563
  return runner.executeCommand(command)
6487
6564
  }
6488
6565
 
@@ -6510,6 +6587,7 @@ func setupTravis(force: Bool = false) {
6510
6587
  - platform: Set the provisioning profile's platform (i.e. ios, tvos)
6511
6588
  - readonly: Only fetch existing profile, don't generate new ones
6512
6589
  - 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")
6590
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
6513
6591
 
6514
6592
  - returns: The UUID of the profile sigh just fetched/generated
6515
6593
 
@@ -6534,7 +6612,8 @@ func sigh(adhoc: Bool = false,
6534
6612
  skipCertificateVerification: Bool = false,
6535
6613
  platform: Any = "ios",
6536
6614
  readonly: Bool = false,
6537
- templateName: String? = nil) {
6615
+ templateName: String? = nil,
6616
+ failOnNameTaken: Bool = false) {
6538
6617
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
6539
6618
  RubyCommand.Argument(name: "developer_id", value: developerId),
6540
6619
  RubyCommand.Argument(name: "development", value: development),
@@ -6554,7 +6633,8 @@ func sigh(adhoc: Bool = false,
6554
6633
  RubyCommand.Argument(name: "skip_certificate_verification", value: skipCertificateVerification),
6555
6634
  RubyCommand.Argument(name: "platform", value: platform),
6556
6635
  RubyCommand.Argument(name: "readonly", value: readonly),
6557
- RubyCommand.Argument(name: "template_name", value: templateName)])
6636
+ RubyCommand.Argument(name: "template_name", value: templateName),
6637
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
6558
6638
  _ = runner.executeCommand(command)
6559
6639
  }
6560
6640
 
@@ -6594,7 +6674,7 @@ func slack(message: String? = nil,
6594
6674
  useWebhookConfiguredUsernameAndIcon: Bool = false,
6595
6675
  slackUrl: String,
6596
6676
  username: String = "fastlane",
6597
- iconUrl: String = "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
6677
+ iconUrl: String = "https://fastlane.tools/assets/img/fastlane_icon.png",
6598
6678
  payload: [String : Any] = [:],
6599
6679
  defaultPayloads: [String]? = nil,
6600
6680
  attachmentProperties: [String : Any] = [:],
@@ -6675,6 +6755,7 @@ func slackTrainStart(distance: Int = 5,
6675
6755
  - simpleOutput: Tell slather that it should output results to the terminal
6676
6756
  - gutterJson: Tell slather that it should output results as Gutter JSON format
6677
6757
  - coberturaXml: Tell slather that it should output results as Cobertura XML format
6758
+ - sonarqubeXml: Tell slather that it should output results as SonarQube Generic XML format
6678
6759
  - llvmCov: Tell slather that it should output results as llvm-cov show format
6679
6760
  - html: Tell slather that it should output results as static HTML pages
6680
6761
  - show: Tell slather that it should open static html pages automatically
@@ -6708,6 +6789,7 @@ func slather(buildDirectory: String? = nil,
6708
6789
  simpleOutput: Bool? = nil,
6709
6790
  gutterJson: Bool? = nil,
6710
6791
  coberturaXml: Bool? = nil,
6792
+ sonarqubeXml: Bool? = nil,
6711
6793
  llvmCov: Any? = nil,
6712
6794
  html: Bool? = nil,
6713
6795
  show: Bool = false,
@@ -6737,6 +6819,7 @@ func slather(buildDirectory: String? = nil,
6737
6819
  RubyCommand.Argument(name: "simple_output", value: simpleOutput),
6738
6820
  RubyCommand.Argument(name: "gutter_json", value: gutterJson),
6739
6821
  RubyCommand.Argument(name: "cobertura_xml", value: coberturaXml),
6822
+ RubyCommand.Argument(name: "sonarqube_xml", value: sonarqubeXml),
6740
6823
  RubyCommand.Argument(name: "llvm_cov", value: llvmCov),
6741
6824
  RubyCommand.Argument(name: "html", value: html),
6742
6825
  RubyCommand.Argument(name: "show", value: show),
@@ -6778,6 +6861,7 @@ func slather(buildDirectory: String? = nil,
6778
6861
  - appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
6779
6862
  - addPhotos: A list of photos that should be added to the simulator before running the application
6780
6863
  - addVideos: A list of videos that should be added to the simulator before running the application
6864
+ - htmlTemplate: A path to screenshots.html template
6781
6865
  - buildlogPath: The directory where to store the build log
6782
6866
  - clean: Should the project be cleaned before building it?
6783
6867
  - testWithoutBuilding: Test without building, requires a derived data path
@@ -6795,6 +6879,9 @@ func slather(buildDirectory: String? = nil,
6795
6879
  - disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
6796
6880
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
6797
6881
  - testplan: The testplan associated with the scheme that should be used for testing
6882
+ - onlyTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to run
6883
+ - skipTesting: Array of strings matching Test Bundle/Test Suite/Test Cases to skip
6884
+ - disableXcpretty: Disable xcpretty formatting of build
6798
6885
  */
6799
6886
  func snapshot(workspace: Any? = snapshotfile.workspace,
6800
6887
  project: Any? = snapshotfile.project,
@@ -6817,6 +6904,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6817
6904
  appIdentifier: Any? = snapshotfile.appIdentifier,
6818
6905
  addPhotos: [String]? = snapshotfile.addPhotos,
6819
6906
  addVideos: [String]? = snapshotfile.addVideos,
6907
+ htmlTemplate: Any? = snapshotfile.htmlTemplate,
6820
6908
  buildlogPath: Any = snapshotfile.buildlogPath,
6821
6909
  clean: Bool = snapshotfile.clean,
6822
6910
  testWithoutBuilding: Bool? = snapshotfile.testWithoutBuilding,
@@ -6833,7 +6921,10 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6833
6921
  concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
6834
6922
  disableSlideToType: Bool = snapshotfile.disableSlideToType,
6835
6923
  clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath,
6836
- testplan: Any? = snapshotfile.testplan) {
6924
+ testplan: Any? = snapshotfile.testplan,
6925
+ onlyTesting: Any? = snapshotfile.onlyTesting,
6926
+ skipTesting: Any? = snapshotfile.skipTesting,
6927
+ disableXcpretty: Bool? = snapshotfile.disableXcpretty) {
6837
6928
  let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
6838
6929
  RubyCommand.Argument(name: "project", value: project),
6839
6930
  RubyCommand.Argument(name: "xcargs", value: xcargs),
@@ -6855,6 +6946,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6855
6946
  RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
6856
6947
  RubyCommand.Argument(name: "add_photos", value: addPhotos),
6857
6948
  RubyCommand.Argument(name: "add_videos", value: addVideos),
6949
+ RubyCommand.Argument(name: "html_template", value: htmlTemplate),
6858
6950
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
6859
6951
  RubyCommand.Argument(name: "clean", value: clean),
6860
6952
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
@@ -6871,7 +6963,10 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
6871
6963
  RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
6872
6964
  RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
6873
6965
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
6874
- RubyCommand.Argument(name: "testplan", value: testplan)])
6966
+ RubyCommand.Argument(name: "testplan", value: testplan),
6967
+ RubyCommand.Argument(name: "only_testing", value: onlyTesting),
6968
+ RubyCommand.Argument(name: "skip_testing", value: skipTesting),
6969
+ RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty)])
6875
6970
  _ = runner.executeCommand(command)
6876
6971
  }
6877
6972
 
@@ -7087,6 +7182,7 @@ func ssh(username: String,
7087
7182
  - timeout: Timeout for read, open, and send (in seconds)
7088
7183
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
7089
7184
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
7185
+ - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
7090
7186
  - obbMainReferencesVersion: References version of 'main' expansion file
7091
7187
  - obbMainFileSize: Size of 'main' expansion file in bytes
7092
7188
  - obbPatchReferencesVersion: References version of 'patch' expansion file
@@ -7124,6 +7220,7 @@ func supply(packageName: String,
7124
7220
  timeout: Int = 300,
7125
7221
  deactivateOnPromote: Bool = true,
7126
7222
  versionCodesToRetain: [String]? = nil,
7223
+ inAppUpdatePriority: Int? = nil,
7127
7224
  obbMainReferencesVersion: String? = nil,
7128
7225
  obbMainFileSize: String? = nil,
7129
7226
  obbPatchReferencesVersion: String? = nil,
@@ -7158,6 +7255,7 @@ func supply(packageName: String,
7158
7255
  RubyCommand.Argument(name: "timeout", value: timeout),
7159
7256
  RubyCommand.Argument(name: "deactivate_on_promote", value: deactivateOnPromote),
7160
7257
  RubyCommand.Argument(name: "version_codes_to_retain", value: versionCodesToRetain),
7258
+ RubyCommand.Argument(name: "in_app_update_priority", value: inAppUpdatePriority),
7161
7259
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
7162
7260
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
7163
7261
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
@@ -7253,6 +7351,7 @@ func swiftlint(mode: Any = "lint",
7253
7351
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
7254
7352
  - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7255
7353
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7354
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
7256
7355
  - outputPath: Path in which to export certificates, key and profile
7257
7356
  - verbose: Print out extra information and all commands
7258
7357
 
@@ -7292,6 +7391,7 @@ func syncCodeSigning(type: String = "development",
7292
7391
  platform: String = "ios",
7293
7392
  templateName: String? = nil,
7294
7393
  profileName: String? = nil,
7394
+ failOnNameTaken: Bool = false,
7295
7395
  outputPath: String? = nil,
7296
7396
  verbose: Bool = false) {
7297
7397
  let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
@@ -7328,6 +7428,7 @@ func syncCodeSigning(type: String = "development",
7328
7428
  RubyCommand.Argument(name: "platform", value: platform),
7329
7429
  RubyCommand.Argument(name: "template_name", value: templateName),
7330
7430
  RubyCommand.Argument(name: "profile_name", value: profileName),
7431
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
7331
7432
  RubyCommand.Argument(name: "output_path", value: outputPath),
7332
7433
  RubyCommand.Argument(name: "verbose", value: verbose)])
7333
7434
  _ = runner.executeCommand(command)
@@ -7422,6 +7523,7 @@ func testfairy(apiKey: String,
7422
7523
  - notifyExternalTesters: Should notify external testers?
7423
7524
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
7424
7525
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
7526
+ - expirePreviousBuilds: Should expire previous builds?
7425
7527
  - firstName: The tester's first name
7426
7528
  - lastName: The tester's last name
7427
7529
  - email: The tester's email
@@ -7458,6 +7560,7 @@ func testflight(username: String,
7458
7560
  notifyExternalTesters: Bool = true,
7459
7561
  appVersion: String? = nil,
7460
7562
  buildNumber: String? = nil,
7563
+ expirePreviousBuilds: Bool = false,
7461
7564
  firstName: String? = nil,
7462
7565
  lastName: String? = nil,
7463
7566
  email: String? = nil,
@@ -7490,6 +7593,7 @@ func testflight(username: String,
7490
7593
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
7491
7594
  RubyCommand.Argument(name: "app_version", value: appVersion),
7492
7595
  RubyCommand.Argument(name: "build_number", value: buildNumber),
7596
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
7493
7597
  RubyCommand.Argument(name: "first_name", value: firstName),
7494
7598
  RubyCommand.Argument(name: "last_name", value: lastName),
7495
7599
  RubyCommand.Argument(name: "email", value: email),
@@ -8187,6 +8291,7 @@ func uploadToAppStore(username: String,
8187
8291
  - timeout: Timeout for read, open, and send (in seconds)
8188
8292
  - deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
8189
8293
  - versionCodesToRetain: An array of version codes to retain when publishing a new APK
8294
+ - inAppUpdatePriority: In-app update priority for all the newly added apks in the release. Can take values between [0,5]
8190
8295
  - obbMainReferencesVersion: References version of 'main' expansion file
8191
8296
  - obbMainFileSize: Size of 'main' expansion file in bytes
8192
8297
  - obbPatchReferencesVersion: References version of 'patch' expansion file
@@ -8224,6 +8329,7 @@ func uploadToPlayStore(packageName: String,
8224
8329
  timeout: Int = 300,
8225
8330
  deactivateOnPromote: Bool = true,
8226
8331
  versionCodesToRetain: [String]? = nil,
8332
+ inAppUpdatePriority: Int? = nil,
8227
8333
  obbMainReferencesVersion: String? = nil,
8228
8334
  obbMainFileSize: String? = nil,
8229
8335
  obbPatchReferencesVersion: String? = nil,
@@ -8258,6 +8364,7 @@ func uploadToPlayStore(packageName: String,
8258
8364
  RubyCommand.Argument(name: "timeout", value: timeout),
8259
8365
  RubyCommand.Argument(name: "deactivate_on_promote", value: deactivateOnPromote),
8260
8366
  RubyCommand.Argument(name: "version_codes_to_retain", value: versionCodesToRetain),
8367
+ RubyCommand.Argument(name: "in_app_update_priority", value: inAppUpdatePriority),
8261
8368
  RubyCommand.Argument(name: "obb_main_references_version", value: obbMainReferencesVersion),
8262
8369
  RubyCommand.Argument(name: "obb_main_file_size", value: obbMainFileSize),
8263
8370
  RubyCommand.Argument(name: "obb_patch_references_version", value: obbPatchReferencesVersion),
@@ -8328,6 +8435,7 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
8328
8435
  - notifyExternalTesters: Should notify external testers?
8329
8436
  - appVersion: The version number of the application build to distribute. If the version number is not specified, then the most recent build uploaded to TestFlight will be distributed. If specified, the most recent build for the version number will be distributed
8330
8437
  - buildNumber: The build number of the application build to distribute. If the build number is not specified, the most recent build is distributed
8438
+ - expirePreviousBuilds: Should expire previous builds?
8331
8439
  - firstName: The tester's first name
8332
8440
  - lastName: The tester's last name
8333
8441
  - email: The tester's email
@@ -8364,6 +8472,7 @@ func uploadToTestflight(username: String,
8364
8472
  notifyExternalTesters: Bool = true,
8365
8473
  appVersion: String? = nil,
8366
8474
  buildNumber: String? = nil,
8475
+ expirePreviousBuilds: Bool = false,
8367
8476
  firstName: String? = nil,
8368
8477
  lastName: String? = nil,
8369
8478
  email: String? = nil,
@@ -8396,6 +8505,7 @@ func uploadToTestflight(username: String,
8396
8505
  RubyCommand.Argument(name: "notify_external_testers", value: notifyExternalTesters),
8397
8506
  RubyCommand.Argument(name: "app_version", value: appVersion),
8398
8507
  RubyCommand.Argument(name: "build_number", value: buildNumber),
8508
+ RubyCommand.Argument(name: "expire_previous_builds", value: expirePreviousBuilds),
8399
8509
  RubyCommand.Argument(name: "first_name", value: firstName),
8400
8510
  RubyCommand.Argument(name: "last_name", value: lastName),
8401
8511
  RubyCommand.Argument(name: "email", value: email),
@@ -8689,7 +8799,7 @@ func xcov(workspace: String? = nil,
8689
8799
  htmlReport: Bool = true,
8690
8800
  markdownReport: Bool = false,
8691
8801
  jsonReport: Bool = false,
8692
- minimumCoveragePercentage: Int = 0,
8802
+ minimumCoveragePercentage: Float = 0,
8693
8803
  slackUrl: String? = nil,
8694
8804
  slackChannel: String? = nil,
8695
8805
  skipSlack: Bool = false,
@@ -8705,7 +8815,7 @@ func xcov(workspace: String? = nil,
8705
8815
  coverallsServiceJobId: String? = nil,
8706
8816
  coverallsRepoToken: String? = nil,
8707
8817
  xcconfig: String? = nil,
8708
- ideFoundationPath: String = "/Applications/Xcode-11.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8818
+ ideFoundationPath: String = "/Applications/Xcode-11.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
8709
8819
  legacySupport: Bool = false) {
8710
8820
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
8711
8821
  RubyCommand.Argument(name: "project", value: project),
@@ -8850,4 +8960,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
8850
8960
 
8851
8961
  // Please don't remove the lines below
8852
8962
  // They are used to detect outdated files
8853
- // FastlaneRunnerAPIVersion [0.9.75]
8963
+ // FastlaneRunnerAPIVersion [0.9.71]