fastlane 2.181.0 → 2.184.0

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 +90 -90
  3. data/cert/lib/cert/commands_generator.rb +2 -1
  4. data/cert/lib/cert/runner.rb +3 -7
  5. data/deliver/lib/assets/summary.html.erb +10 -10
  6. data/deliver/lib/deliver/commands_generator.rb +3 -2
  7. data/deliver/lib/deliver/detect_values.rb +5 -3
  8. data/deliver/lib/deliver/download_screenshots.rb +1 -1
  9. data/deliver/lib/deliver/html_generator.rb +2 -2
  10. data/deliver/lib/deliver/languages.rb +1 -1
  11. data/deliver/lib/deliver/module.rb +6 -0
  12. data/deliver/lib/deliver/options.rb +38 -53
  13. data/deliver/lib/deliver/runner.rb +8 -11
  14. data/deliver/lib/deliver/setup.rb +1 -1
  15. data/deliver/lib/deliver/submit_for_review.rb +4 -4
  16. data/deliver/lib/deliver/upload_metadata.rb +20 -6
  17. data/deliver/lib/deliver/upload_price_tier.rb +1 -1
  18. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/actions_helper.rb +2 -2
  20. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +7 -11
  21. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +12 -2
  22. data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +5 -1
  24. data/fastlane/lib/fastlane/actions/danger.rb +7 -1
  25. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  26. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +18 -1
  27. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +32 -12
  28. data/fastlane/lib/fastlane/actions/get_certificates.rb +5 -1
  29. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +3 -1
  30. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +5 -1
  31. data/fastlane/lib/fastlane/actions/git_commit.rb +3 -1
  32. data/fastlane/lib/fastlane/actions/git_pull.rb +4 -10
  33. data/fastlane/lib/fastlane/actions/git_submodule_update.rb +16 -8
  34. data/fastlane/lib/fastlane/actions/hipchat.rb +2 -1
  35. data/fastlane/lib/fastlane/actions/import_from_git.rb +5 -5
  36. data/fastlane/lib/fastlane/actions/notification.rb +1 -1
  37. data/fastlane/lib/fastlane/actions/register_device.rb +7 -10
  38. data/fastlane/lib/fastlane/actions/register_devices.rb +7 -10
  39. data/fastlane/lib/fastlane/actions/set_changelog.rb +7 -10
  40. data/fastlane/lib/fastlane/actions/slack.rb +19 -18
  41. data/fastlane/lib/fastlane/actions/swiftlint.rb +16 -4
  42. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +6 -1
  43. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +4 -2
  44. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +5 -1
  45. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +2 -1
  46. data/fastlane/lib/fastlane/actions/xcodebuild.rb +5 -5
  47. data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
  48. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  49. data/fastlane/lib/fastlane/fast_file.rb +10 -2
  50. data/fastlane/lib/fastlane/notification/slack.rb +56 -0
  51. data/fastlane/lib/fastlane/plugins/plugin_info.rb +2 -2
  52. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +7 -6
  53. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +30 -35
  54. data/fastlane/lib/fastlane/plugins/template/spec/spec_helper.rb.erb +1 -1
  55. data/fastlane/lib/fastlane/swift_fastlane_function.rb +37 -14
  56. data/fastlane/lib/fastlane/version.rb +2 -2
  57. data/fastlane/swift/Deliverfile.swift +1 -1
  58. data/fastlane/swift/DeliverfileProtocol.swift +20 -20
  59. data/fastlane/swift/Fastlane.swift +6749 -3708
  60. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +4 -0
  61. data/fastlane/swift/Gymfile.swift +1 -1
  62. data/fastlane/swift/GymfileProtocol.swift +1 -1
  63. data/fastlane/swift/Matchfile.swift +1 -1
  64. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  65. data/fastlane/swift/OptionalConfigValue.swift +101 -0
  66. data/fastlane/swift/Precheckfile.swift +1 -1
  67. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  68. data/fastlane/swift/Scanfile.swift +1 -1
  69. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  70. data/fastlane/swift/Screengrabfile.swift +1 -1
  71. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  72. data/fastlane/swift/Snapshotfile.swift +1 -1
  73. data/fastlane/swift/SnapshotfileProtocol.swift +5 -1
  74. data/fastlane/swift/formatting/Brewfile.lock.json +12 -12
  75. data/fastlane/swift/upgrade_manifest.json +1 -1
  76. data/fastlane_core/lib/fastlane_core/build_watcher.rb +39 -3
  77. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +5 -0
  78. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +2 -0
  79. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  80. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  81. data/fastlane_core/lib/fastlane_core/helper.rb +4 -4
  82. data/fastlane_core/lib/fastlane_core/languages.rb +2 -2
  83. data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
  84. data/fastlane_core/lib/fastlane_core/ui/help.erb +35 -0
  85. data/fastlane_core/lib/fastlane_core/ui/help_formatter.rb +16 -0
  86. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -1
  87. data/frameit/lib/frameit/commands_generator.rb +2 -1
  88. data/frameit/lib/frameit/config_parser.rb +2 -2
  89. data/frameit/lib/frameit/frame_downloader.rb +2 -1
  90. data/gym/lib/gym/code_signing_mapping.rb +2 -2
  91. data/gym/lib/gym/commands_generator.rb +2 -1
  92. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +6 -5
  93. data/match/lib/match/commands_generator.rb +2 -1
  94. data/match/lib/match/importer.rb +6 -10
  95. data/match/lib/match/migrate.rb +2 -3
  96. data/match/lib/match/nuke.rb +3 -7
  97. data/match/lib/match/runner.rb +2 -3
  98. data/match/lib/match/spaceship_ensure.rb +3 -0
  99. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  100. data/match/lib/match/storage/s3_storage.rb +2 -2
  101. data/pem/lib/pem/commands_generator.rb +2 -1
  102. data/pilot/lib/pilot/build_manager.rb +5 -3
  103. data/pilot/lib/pilot/commands_generator.rb +2 -1
  104. data/pilot/lib/pilot/manager.rb +3 -7
  105. data/pilot/lib/pilot/options.rb +10 -2
  106. data/pilot/lib/pilot/tester_exporter.rb +0 -1
  107. data/pilot/lib/pilot/tester_manager.rb +0 -1
  108. data/precheck/lib/precheck/commands_generator.rb +2 -1
  109. data/precheck/lib/precheck/runner.rb +8 -7
  110. data/produce/lib/produce/commands_generator.rb +2 -1
  111. data/scan/lib/scan/commands_generator.rb +2 -1
  112. data/scan/lib/scan/runner.rb +1 -1
  113. data/screengrab/lib/screengrab/commands_generator.rb +2 -1
  114. data/sigh/lib/assets/resign.sh +77 -46
  115. data/sigh/lib/sigh/commands_generator.rb +2 -1
  116. data/sigh/lib/sigh/download_all.rb +4 -8
  117. data/sigh/lib/sigh/runner.rb +4 -8
  118. data/snapshot/lib/assets/SnapfileTemplate +1 -1
  119. data/snapshot/lib/snapshot/commands_generator.rb +3 -1
  120. data/snapshot/lib/snapshot/options.rb +5 -0
  121. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  122. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
  123. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +8 -4
  124. data/spaceship/README.md +2 -2
  125. data/spaceship/lib/spaceship/base.rb +2 -2
  126. data/spaceship/lib/spaceship/commands_generator.rb +2 -1
  127. data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
  128. data/spaceship/lib/spaceship/connect_api/models/.age_rating_declaration.rb.swp +0 -0
  129. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +35 -4
  130. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +10 -0
  131. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +2 -3
  132. data/spaceship/lib/spaceship/connect_api/models/profile.rb +6 -0
  133. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +6 -2
  134. data/spaceship/lib/spaceship/connect_api/token.rb +6 -0
  135. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +4 -2
  136. data/spaceship/lib/spaceship/ui.rb +2 -2
  137. data/supply/lib/supply/client.rb +2 -2
  138. data/supply/lib/supply/commands_generator.rb +2 -1
  139. data/supply/lib/supply/uploader.rb +2 -2
  140. metadata +74 -86
  141. data/pilot/lib/pilot/tester_util.rb +0 -0
@@ -10,6 +10,7 @@
10
10
  0311E387230AC1B20060BB5C /* Plugins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E386230AC1B20060BB5C /* Plugins.swift */; };
11
11
  0311E38B230AC9490060BB5C /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E38A230AC9490060BB5C /* Actions.swift */; };
12
12
  1257253924B7992C00E04FA3 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1257253824B7992B00E04FA3 /* main.swift */; };
13
+ 12D2EB8D2620D83C00844013 /* OptionalConfigValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12D2EB8C2620D83B00844013 /* OptionalConfigValue.swift */; };
13
14
  B302067B1F5E3E9000DE6EBD /* SnapshotfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */; };
14
15
  B302067C1F5E3E9000DE6EBD /* GymfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */; };
15
16
  B302067D1F5E3E9000DE6EBD /* MatchfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */; };
@@ -43,6 +44,7 @@
43
44
  0311E386230AC1B20060BB5C /* Plugins.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Plugins.swift; path = ../Plugins.swift; sourceTree = "<group>"; };
44
45
  0311E38A230AC9490060BB5C /* Actions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Actions.swift; path = ../Actions.swift; sourceTree = "<group>"; };
45
46
  1257253824B7992B00E04FA3 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = main.swift; path = ../main.swift; sourceTree = "<group>"; };
47
+ 12D2EB8C2620D83B00844013 /* OptionalConfigValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OptionalConfigValue.swift; path = ../OptionalConfigValue.swift; sourceTree = "<group>"; };
46
48
  B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotfileProtocol.swift; path = ../SnapshotfileProtocol.swift; sourceTree = "<group>"; };
47
49
  B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GymfileProtocol.swift; path = ../GymfileProtocol.swift; sourceTree = "<group>"; };
48
50
  B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MatchfileProtocol.swift; path = ../MatchfileProtocol.swift; sourceTree = "<group>"; };
@@ -154,6 +156,7 @@
154
156
  children = (
155
157
  B3144C08200553C800470AFE /* README.txt */,
156
158
  B3BA659E1F5A269100B34850 /* LaneFileProtocol.swift */,
159
+ 12D2EB8C2620D83B00844013 /* OptionalConfigValue.swift */,
157
160
  );
158
161
  name = "Fastfile Components";
159
162
  sourceTree = "<group>";
@@ -275,6 +278,7 @@
275
278
  D55B28C91F6C588300DC42C5 /* Snapshotfile.swift in Sources */,
276
279
  B3BA65A61F5A269100B34850 /* Fastlane.swift in Sources */,
277
280
  D55B28C81F6C588300DC42C5 /* Screengrabfile.swift in Sources */,
281
+ 12D2EB8D2620D83C00844013 /* OptionalConfigValue.swift in Sources */,
278
282
  );
279
283
  runOnlyForDeploymentPostprocessing = 0;
280
284
  };
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -196,4 +196,4 @@ public extension GymfileProtocol {
196
196
 
197
197
  // Please don't remove the lines below
198
198
  // They are used to detect outdated files
199
- // FastlaneRunnerAPIVersion [0.9.68]
199
+ // FastlaneRunnerAPIVersion [0.9.73]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -184,4 +184,4 @@ public extension MatchfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.62]
187
+ // FastlaneRunnerAPIVersion [0.9.67]
@@ -0,0 +1,101 @@
1
+ // OptionalConfigValue.swift
2
+ // Copyright (c) 2021 FastlaneTools
3
+
4
+ //
5
+ // ** NOTE **
6
+ // This file is provided by fastlane and WILL be overwritten in future updates
7
+ // If you want to add extra functionality to this project, create a new file in a
8
+ // new group so that it won't be marked for upgrade
9
+ //
10
+
11
+ import Foundation
12
+
13
+ public enum OptionalConfigValue<T> {
14
+ case fastlaneDefault(T)
15
+ case userDefined(T)
16
+ case `nil`
17
+
18
+ func asRubyArgument(name: String, type: RubyCommand.Argument.ArgType? = nil) -> RubyCommand.Argument? {
19
+ if case let .userDefined(value) = self {
20
+ return RubyCommand.Argument(name: name, value: value, type: type)
21
+ }
22
+ return nil
23
+ }
24
+ }
25
+
26
+ extension OptionalConfigValue: ExpressibleByUnicodeScalarLiteral where T == String? {
27
+ public typealias UnicodeScalarLiteralType = String
28
+
29
+ public init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
30
+ self = .userDefined(value)
31
+ }
32
+ }
33
+
34
+ extension OptionalConfigValue: ExpressibleByExtendedGraphemeClusterLiteral where T == String? {
35
+ public typealias ExtendedGraphemeClusterLiteralType = String
36
+
37
+ public init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
38
+ self = .userDefined(value)
39
+ }
40
+ }
41
+
42
+ extension OptionalConfigValue: ExpressibleByStringLiteral where T == String? {
43
+ public typealias StringLiteralType = String
44
+
45
+ public init(stringLiteral value: StringLiteralType) {
46
+ self = .userDefined(value)
47
+ }
48
+ }
49
+
50
+ extension OptionalConfigValue: ExpressibleByStringInterpolation where T == String? {}
51
+
52
+ extension OptionalConfigValue: ExpressibleByNilLiteral {
53
+ public init(nilLiteral _: ()) {
54
+ self = .nil
55
+ }
56
+ }
57
+
58
+ extension OptionalConfigValue: ExpressibleByIntegerLiteral where T == Int? {
59
+ public typealias IntegerLiteralType = Int
60
+
61
+ public init(integerLiteral value: IntegerLiteralType) {
62
+ self = .userDefined(value)
63
+ }
64
+ }
65
+
66
+ extension OptionalConfigValue: ExpressibleByArrayLiteral where T == [String] {
67
+ public typealias ArrayLiteralElement = String
68
+
69
+ public init(arrayLiteral elements: ArrayLiteralElement...) {
70
+ self = .userDefined(elements)
71
+ }
72
+ }
73
+
74
+ extension OptionalConfigValue: ExpressibleByFloatLiteral where T == Float {
75
+ public typealias FloatLiteralType = Float
76
+
77
+ public init(floatLiteral value: FloatLiteralType) {
78
+ self = .userDefined(value)
79
+ }
80
+ }
81
+
82
+ extension OptionalConfigValue: ExpressibleByBooleanLiteral where T == Bool {
83
+ public typealias BooleanLiteralType = Bool
84
+
85
+ public init(booleanLiteral value: BooleanLiteralType) {
86
+ self = .userDefined(value)
87
+ }
88
+ }
89
+
90
+ extension OptionalConfigValue: ExpressibleByDictionaryLiteral where T == [String: Any] {
91
+ public typealias Key = String
92
+ public typealias Value = Any
93
+
94
+ public init(dictionaryLiteral elements: (Key, Value)...) {
95
+ var dict: [Key: Value] = [:]
96
+ elements.forEach {
97
+ dict[$0.0] = $0.1
98
+ }
99
+ self = .userDefined(dict)
100
+ }
101
+ }
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.61]
55
+ // FastlaneRunnerAPIVersion [0.9.66]
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -292,4 +292,4 @@ public extension ScanfileProtocol {
292
292
 
293
293
  // Please don't remove the lines below
294
294
  // They are used to detect outdated files
295
- // FastlaneRunnerAPIVersion [0.9.73]
295
+ // FastlaneRunnerAPIVersion [0.9.78]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.63]
99
+ // FastlaneRunnerAPIVersion [0.9.68]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.181.0
20
+ // Generated with fastlane 2.184.0
@@ -53,6 +53,9 @@ public protocol SnapshotfileProtocol: class {
53
53
  /// Enabling this option will automatically override the status bar to show 9:41 AM, full battery, and full reception
54
54
  var overrideStatusBar: Bool { get }
55
55
 
56
+ /// Fully customize the status bar by setting each option here. See `xcrun simctl status_bar --help`
57
+ var overrideStatusBarArguments: String? { get }
58
+
56
59
  /// Enabling this option will configure the Simulator's system language
57
60
  var localizeSimulator: Bool { get }
58
61
 
@@ -162,6 +165,7 @@ public extension SnapshotfileProtocol {
162
165
  var eraseSimulator: Bool { return false }
163
166
  var headless: Bool { return true }
164
167
  var overrideStatusBar: Bool { return false }
168
+ var overrideStatusBarArguments: String? { return nil }
165
169
  var localizeSimulator: Bool { return false }
166
170
  var darkMode: Bool? { return nil }
167
171
  var appIdentifier: String? { return nil }
@@ -196,4 +200,4 @@ public extension SnapshotfileProtocol {
196
200
 
197
201
  // Please don't remove the lines below
198
202
  // They are used to detect outdated files
199
- // FastlaneRunnerAPIVersion [0.9.57]
203
+ // FastlaneRunnerAPIVersion [0.9.62]
@@ -2,30 +2,30 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.47.13",
5
+ "version": "0.48.2",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_big_sur": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:fdcdb5e94b9c4d66a32d4515ba3d2db4057865f96aefab0e41fdeaf2879f4f89",
13
- "sha256": "fdcdb5e94b9c4d66a32d4515ba3d2db4057865f96aefab0e41fdeaf2879f4f89"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:35f197cd20e7112460002fd08aa1c5b8902cfec22b1065669726c23820f8bc5b",
13
+ "sha256": "35f197cd20e7112460002fd08aa1c5b8902cfec22b1065669726c23820f8bc5b"
14
14
  },
15
15
  "big_sur": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:cbb7a9803926d8bfaacf5c1a7d4cd07d8fe2255b1885be3ae2ffd8414e4c5292",
18
- "sha256": "cbb7a9803926d8bfaacf5c1a7d4cd07d8fe2255b1885be3ae2ffd8414e4c5292"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:456fcbe08ec3a57d9730fa4ad70e36c53f74fc64fc5f1cae1b25dfc43f693480",
18
+ "sha256": "456fcbe08ec3a57d9730fa4ad70e36c53f74fc64fc5f1cae1b25dfc43f693480"
19
19
  },
20
20
  "catalina": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:3a13e9b1f4a63bc03601897944f71dd4e6942788531dc060322d20fc6b36d2fd",
23
- "sha256": "3a13e9b1f4a63bc03601897944f71dd4e6942788531dc060322d20fc6b36d2fd"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:390c8307574e61a372e2fde3f6d0fdfff7401683b8875f22ba6712b154092a64",
23
+ "sha256": "390c8307574e61a372e2fde3f6d0fdfff7401683b8875f22ba6712b154092a64"
24
24
  },
25
25
  "mojave": {
26
26
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:4e0691f12a5ef3b01eba9f41091b8f3457bc65151bfad057a45e8de9525074cd",
28
- "sha256": "4e0691f12a5ef3b01eba9f41091b8f3457bc65151bfad057a45e8de9525074cd"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:07b289fad1b3fae73824a483cae12233b09c5bacdba7d1ee921b99940af77baf",
28
+ "sha256": "07b289fad1b3fae73824a483cae12233b09c5bacdba7d1ee921b99940af77baf"
29
29
  }
30
30
  }
31
31
  }
@@ -35,11 +35,11 @@
35
35
  "system": {
36
36
  "macos": {
37
37
  "catalina": {
38
- "HOMEBREW_VERSION": "3.1.2-40-g520b811",
38
+ "HOMEBREW_VERSION": "3.1.8-62-gc278da1",
39
39
  "HOMEBREW_PREFIX": "/usr/local",
40
- "Homebrew/homebrew-core": "241a44018cba812f495bfef054b29eab4de92686",
40
+ "Homebrew/homebrew-core": "decc1c2cbcdbaf86c19d95899ebecea59c8ce3ac",
41
41
  "CLT": "11.0.0.33.12",
42
- "Xcode": "12.2",
42
+ "Xcode": "12.4",
43
43
  "macOS": "10.15.7"
44
44
  },
45
45
  "big_sur": {
@@ -1 +1 @@
1
- {"Actions.swift":"Autogenerated API","Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","Plugins.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","main.swift":"Runner Code","ArgumentProcessor.swift":"Runner Code","RunnerArgument.swift":"Runner Code"}
1
+ {"Actions.swift":"Autogenerated API","Fastlane.swift":"Autogenerated API","DeliverfileProtocol.swift":"Autogenerated API","GymfileProtocol.swift":"Autogenerated API","MatchfileProtocol.swift":"Autogenerated API","Plugins.swift":"Autogenerated API","PrecheckfileProtocol.swift":"Autogenerated API","ScanfileProtocol.swift":"Autogenerated API","ScreengrabfileProtocol.swift":"Autogenerated API","SnapshotfileProtocol.swift":"Autogenerated API","LaneFileProtocol.swift":"Fastfile Components","OptionalConfigValue.swift":"Fastfile Components","ControlCommand.swift":"Networking","RubyCommand.swift":"Networking","RubyCommandable.swift":"Networking","Runner.swift":"Networking","SocketClient.swift":"Networking","SocketClientDelegateProtocol.swift":"Networking","SocketResponse.swift":"Networking","main.swift":"Runner Code","ArgumentProcessor.swift":"Runner Code","RunnerArgument.swift":"Runner Code"}
@@ -3,12 +3,15 @@ require 'spaceship/connect_api'
3
3
  require_relative 'ui/ui'
4
4
 
5
5
  module FastlaneCore
6
+ class BuildWatcherError < StandardError
7
+ end
8
+
6
9
  class BuildWatcher
7
10
  VersionMatches = Struct.new(:version, :builds)
8
11
 
9
12
  class << self
10
13
  # @return The build we waited for. This method will always return a build
11
- def wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, strict_build_watch: false, return_when_build_appears: false, return_spaceship_testflight_build: true, select_latest: false)
14
+ def wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, timeout_duration: nil, strict_build_watch: false, return_when_build_appears: false, return_spaceship_testflight_build: true, select_latest: false)
12
15
  # Warn about train_version being removed in the future
13
16
  if train_version
14
17
  UI.deprecated(":train_version is no longer a used argument on FastlaneCore::BuildWatcher. Please use :app_version instead.")
@@ -23,6 +26,12 @@ module FastlaneCore
23
26
  platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
24
27
  UI.message("Waiting for processing on... app_id: #{app_id}, app_version: #{app_version}, build_version: #{build_version}, platform: #{platform}")
25
28
 
29
+ build_watching_start_time = Time.new
30
+ unless timeout_duration.nil?
31
+ end_time = build_watching_start_time + timeout_duration
32
+ UI.message("Will timeout watching build after #{timeout_duration} seconds around #{end_time}...")
33
+ end
34
+
26
35
  showed_info = false
27
36
  loop do
28
37
  matched_build, app_version_queried = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id, platform: platform, select_latest: select_latest)
@@ -53,6 +62,9 @@ module FastlaneCore
53
62
  end
54
63
  end
55
64
 
65
+ # Before next poll, force stop build watching, if we exceeded the 'timeout_duration' waiting time
66
+ force_stop_build_watching_if_required(start_time: build_watching_start_time, timeout_duration: timeout_duration)
67
+
56
68
  sleep(poll_interval)
57
69
  end
58
70
  end
@@ -78,6 +90,16 @@ module FastlaneCore
78
90
  watched_app_version_alternate = alternate_version(watched_app_version)
79
91
  versions = [watched_app_version, watched_app_version_alternate].compact
80
92
 
93
+ if versions.empty?
94
+ if select_latest
95
+ UI.message("Watched build version should not be present when there is no app version to watch") unless watched_build_version.nil?
96
+ UI.message("Searching for the latest build")
97
+ versions = [nil]
98
+ else
99
+ raise BuildWatcherError.new, "There is no app version to watch"
100
+ end
101
+ end
102
+
81
103
  version_matches = versions.map do |version|
82
104
  match = VersionMatches.new
83
105
  match.version = version
@@ -98,8 +120,8 @@ module FastlaneCore
98
120
  error_builds = matched_builds.map do |build|
99
121
  "#{build.app_version}(#{build.version}) for #{build.platform} - #{build.processing_state}"
100
122
  end.join("\n")
101
- error_message = "FastlaneCore::BuildWatcher found more than 1 matching build: \n#{error_builds}"
102
- UI.crash!(error_message)
123
+ error_message = "Found more than 1 matching build: \n#{error_builds}"
124
+ raise BuildWatcherError.new, error_message
103
125
  end
104
126
 
105
127
  version_match = version_matches.reject do |match|
@@ -132,6 +154,20 @@ module FastlaneCore
132
154
  UI.message("Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)")
133
155
  end
134
156
  end
157
+
158
+ def force_stop_build_watching_if_required(start_time: nil, timeout_duration: nil)
159
+ return if start_time.nil? || timeout_duration.nil? # keep watching build for App Store Connect processing
160
+
161
+ current_time = Time.new
162
+ end_time = start_time + timeout_duration
163
+ pending_duration = end_time - current_time
164
+
165
+ if current_time > end_time
166
+ UI.crash!("FastlaneCore::BuildWatcher exceeded the '#{timeout_duration.to_i}' seconds, Stopping now!")
167
+ else
168
+ UI.verbose("Will timeout watching build after pending #{pending_duration.to_i} seconds around #{end_time}...")
169
+ end
170
+ end
135
171
  end
136
172
  end
137
173
  end
@@ -30,6 +30,11 @@ module FastlaneCore
30
30
  type = option.is_string ? String : nil
31
31
  end
32
32
 
33
+ # OptionParser doesn't like symbol but a symbol and string can be easily cast with `to_sym` and `to_s`
34
+ if type == Symbol
35
+ type = String
36
+ end
37
+
33
38
  # Boolean is a fastlane thing, it's either TrueClass, or FalseClass, but we won't know
34
39
  # that until runtime, so nil is the best we get
35
40
  if type == Fastlane::Boolean
@@ -262,6 +262,8 @@ module FastlaneCore
262
262
  return value.to_i if value.to_i.to_s == value.to_s
263
263
  elsif data_type == Float
264
264
  return value.to_f if value.to_f.to_s == value.to_s
265
+ elsif data_type == Symbol
266
+ return value.to_sym if value.to_sym.to_s == value.to_s
265
267
  elsif allow_shell_conversion
266
268
  return value.shelljoin if value.kind_of?(Array)
267
269
  return value.map { |k, v| "#{k.to_s.shellescape}=#{v.shellescape}" }.join(' ') if value.kind_of?(Hash)
@@ -212,7 +212,7 @@ module FastlaneCore
212
212
  # if 'force_ask' is true, the option is not required to be optional to ask
213
213
  # rubocop:disable Metrics/PerceivedComplexity
214
214
  def fetch(key, ask: true, force_ask: false)
215
- UI.crash!("Key '#{key}' must be a symbol. Example :app_id.") unless key.kind_of?(Symbol)
215
+ UI.crash!("Key '#{key}' must be a symbol. Example :#{key}") unless key.kind_of?(Symbol)
216
216
 
217
217
  option = verify_options_key!(key)
218
218
 
@@ -118,7 +118,7 @@ module FastlaneCore
118
118
  discover_devices(child_item, device_types, discovered_device_udids)
119
119
  end
120
120
 
121
- is_supported_device = device_types.any? { |device_type| usb_item['_name'] == device_type }
121
+ is_supported_device = device_types.any?(usb_item['_name'])
122
122
  serial_num = usb_item['serial_num'] || ''
123
123
  has_serial_number = serial_num.length == 40 || serial_num.length == 24
124
124
 
@@ -167,11 +167,11 @@ module FastlaneCore
167
167
  @xcode_version
168
168
  end
169
169
 
170
- # @return true if Xcode version is higher than 8.3
170
+ # @return true if installed Xcode version is 'greater than or equal to' the input parameter version
171
171
  def self.xcode_at_least?(version)
172
- FastlaneCore::UI.user_error!("Unable to locate Xcode. Please make sure to have Xcode installed on your machine") if xcode_version.nil?
173
- v = xcode_version
174
- Gem::Version.new(v) >= Gem::Version.new(version)
172
+ installed_xcode_version = xcode_version
173
+ UI.user_error!("Unable to locate Xcode. Please make sure to have Xcode installed on your machine") if installed_xcode_version.nil?
174
+ Gem::Version.new(installed_xcode_version) >= Gem::Version.new(version)
175
175
  end
176
176
 
177
177
  # iTMSTransporter
@@ -3,7 +3,7 @@ module FastlaneCore
3
3
  # These are all the languages which are available to use to upload app metadata and screenshots
4
4
 
5
5
  # The old format which was used until August 2015 (good old times)
6
- ALL_LANGUAGES_LEGACY = ["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "cmn-Hant"]
6
+ ALL_LANGUAGES_LEGACY = %w[da-DK de-DE el-GR en-AU en-CA en-GB en-US es-ES es-MX fi-FI fr-CA fr-FR id-ID it-IT ja-JP ko-KR ms-MY nl-NL no-NO pt-BR pt-PT ru-RU sv-SE th-TH tr-TR vi-VI cmn-Hans cmn-Hant]
7
7
 
8
8
  # The new format used from September 2015 on
9
9
  # This was generated from `Spaceship::Tunes.client.available_languages.sort`
@@ -11,6 +11,6 @@ module FastlaneCore
11
11
  # - produce/lib/produce/available_default_languages.rb
12
12
  # - spaceship/lib/assets/languageMapping.json
13
13
  # See pull request for example: https://github.com/fastlane/fastlane/pull/14110
14
- ALL_LANGUAGES = ["ar-SA", "ca", "cs", "da", "de-DE", "el", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi", "fr-CA", "fr-FR", "he", "hi", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl-NL", "no", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh-Hans", "zh-Hant"]
14
+ ALL_LANGUAGES = %w[ar-SA ca cs da de-DE el en-AU en-CA en-GB en-US es-ES es-MX fi fr-CA fr-FR he hi hr hu id it ja ko ms nl-NL no pl pt-BR pt-PT ro ru sk sv th tr uk vi zh-Hans zh-Hant]
15
15
  end
16
16
  end