fastlane 2.175.0 → 2.176.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68170ec370531b330f2955c2d41ba3034cee82eed1684062f7850fb4cb684848
4
- data.tar.gz: 46be2e9005002001ecad77101f3ef29fb3b8ce693f240be32a40476a21949ba7
3
+ metadata.gz: 7ba261e1e70a178f818c12e9f44a9da7d339da6f103aad678777f0a66592bf97
4
+ data.tar.gz: f1b3689af027c08af744d5a25a4dedb5b1e96ca89ed61cc30c30756526726117
5
5
  SHA512:
6
- metadata.gz: 819474aabb8daecf3543a068641d84ef7cefb77626660027e8bd3bc98701d5983b8a05a7a892f54015cfc4537d7ae930a8b1f3aa5eb860420dcc4d574b599281
7
- data.tar.gz: 19916ecfea7aef5c4371bd6ae6f420c6694e197eca113b2db73180deb9f4ceec84baa652586dab4d8633d40ead0f6c100e50a23480fa75b499a4c2d3ec425821
6
+ metadata.gz: 4f45f74114acc9ad5585743e3a352e75ebc2bb671372206d217c3d5bcb14c79bd7fe672b6b35cb94068bc9dbc66c7942a9afbb27680d37233f37f9c0bc780d7a
7
+ data.tar.gz: dd59ef529c0ac9f650dfe8afb9ce18ea4dbec6c0b637fb57ff9f52105399558f63186c97b795531536fd557af10ef5b05e3d8010cb40b2444a6e5bbc4368f409
data/README.md CHANGED
@@ -34,125 +34,107 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='kohki-miki'>
38
- <a href='https://github.com/giginet'>
39
- <img src='https://github.com/giginet.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
42
- </td>
43
- <td id='max-ott'>
44
- <a href='https://github.com/max-ott'>
45
- <img src='https://github.com/max-ott.png?size=140'>
46
- </a>
47
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
48
- </td>
49
37
  <td id='matthew-ellis'>
50
38
  <a href='https://github.com/matthewellis'>
51
39
  <img src='https://github.com/matthewellis.png?size=140'>
52
40
  </a>
53
41
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
54
42
  </td>
55
- <td id='stefan-natchev'>
56
- <a href='https://github.com/snatchev'>
57
- <img src='https://github.com/snatchev.png?size=140'>
58
- </a>
59
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
60
- </td>
61
- <td id='josh-holtz'>
62
- <a href='https://github.com/joshdholtz'>
63
- <img src='https://github.com/joshdholtz.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
66
- </td>
67
- </tr>
68
- <tr>
69
43
  <td id='maksym-grebenets'>
70
44
  <a href='https://github.com/mgrebenets'>
71
45
  <img src='https://github.com/mgrebenets.png?size=140'>
72
46
  </a>
73
47
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
74
48
  </td>
75
- <td id='felix-krause'>
76
- <a href='https://github.com/KrauseFx'>
77
- <img src='https://github.com/KrauseFx.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
80
- </td>
81
- <td id='danielle-tomlinson'>
82
- <a href='https://github.com/endocrimes'>
83
- <img src='https://github.com/endocrimes.png?size=140'>
49
+ <td id='aaron-brager'>
50
+ <a href='https://github.com/getaaron'>
51
+ <img src='https://github.com/getaaron.png?size=140'>
84
52
  </a>
85
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
86
54
  </td>
87
- <td id='andrew-mcburney'>
88
- <a href='https://github.com/armcburney'>
89
- <img src='https://github.com/armcburney.png?size=140'>
55
+ <td id='jorge-revuelta-h'>
56
+ <a href='https://github.com/minuscorp'>
57
+ <img src='https://github.com/minuscorp.png?size=140'>
90
58
  </a>
91
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
92
60
  </td>
93
- <td id='jérôme-lacoste'>
94
- <a href='https://github.com/lacostej'>
95
- <img src='https://github.com/lacostej.png?size=140'>
61
+ <td id='felix-krause'>
62
+ <a href='https://github.com/KrauseFx'>
63
+ <img src='https://github.com/KrauseFx.png?size=140'>
96
64
  </a>
97
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
98
66
  </td>
99
67
  </tr>
100
68
  <tr>
101
- <td id='iulian-onofrei'>
102
- <a href='https://github.com/revolter'>
103
- <img src='https://github.com/revolter.png?size=140'>
104
- </a>
105
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
106
- </td>
107
69
  <td id='jimmy-dee'>
108
70
  <a href='https://github.com/jdee'>
109
71
  <img src='https://github.com/jdee.png?size=140'>
110
72
  </a>
111
73
  <h4 align='center'>Jimmy Dee</h4>
112
74
  </td>
113
- <td id='joshua-liebowitz'>
114
- <a href='https://github.com/taquitos'>
115
- <img src='https://github.com/taquitos.png?size=140'>
75
+ <td id='kohki-miki'>
76
+ <a href='https://github.com/giginet'>
77
+ <img src='https://github.com/giginet.png?size=140'>
116
78
  </a>
117
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
118
80
  </td>
119
- <td id='aaron-brager'>
120
- <a href='https://github.com/getaaron'>
121
- <img src='https://github.com/getaaron.png?size=140'>
81
+ <td id='stefan-natchev'>
82
+ <a href='https://github.com/snatchev'>
83
+ <img src='https://github.com/snatchev.png?size=140'>
122
84
  </a>
123
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
124
86
  </td>
125
- <td id='daniel-jankowski'>
126
- <a href='https://github.com/mollyIV'>
127
- <img src='https://github.com/mollyIV.png?size=140'>
87
+ <td id='joshua-liebowitz'>
88
+ <a href='https://github.com/taquitos'>
89
+ <img src='https://github.com/taquitos.png?size=140'>
128
90
  </a>
129
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
130
92
  </td>
131
- </tr>
132
- <tr>
133
93
  <td id='fumiya-nakamura'>
134
94
  <a href='https://github.com/nafu'>
135
95
  <img src='https://github.com/nafu.png?size=140'>
136
96
  </a>
137
97
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
138
98
  </td>
139
- <td id='luka-mirosevic'>
140
- <a href='https://github.com/lmirosevic'>
141
- <img src='https://github.com/lmirosevic.png?size=140'>
99
+ </tr>
100
+ <tr>
101
+ <td id='andrew-mcburney'>
102
+ <a href='https://github.com/armcburney'>
103
+ <img src='https://github.com/armcburney.png?size=140'>
142
104
  </a>
143
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
144
106
  </td>
145
- <td id='jorge-revuelta-h'>
146
- <a href='https://github.com/minuscorp'>
147
- <img src='https://github.com/minuscorp.png?size=140'>
107
+ <td id='olivier-halligon'>
108
+ <a href='https://github.com/AliSoftware'>
109
+ <img src='https://github.com/AliSoftware.png?size=140'>
148
110
  </a>
149
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
150
112
  </td>
151
- <td id='manu-wallner'>
152
- <a href='https://github.com/milch'>
153
- <img src='https://github.com/milch.png?size=140'>
113
+ <td id='jérôme-lacoste'>
114
+ <a href='https://github.com/lacostej'>
115
+ <img src='https://github.com/lacostej.png?size=140'>
154
116
  </a>
155
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
118
+ </td>
119
+ <td id='jan-piotrowski'>
120
+ <a href='https://github.com/janpio'>
121
+ <img src='https://github.com/janpio.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
124
+ </td>
125
+ <td id='danielle-tomlinson'>
126
+ <a href='https://github.com/endocrimes'>
127
+ <img src='https://github.com/endocrimes.png?size=140'>
128
+ </a>
129
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
130
+ </td>
131
+ </tr>
132
+ <tr>
133
+ <td id='luka-mirosevic'>
134
+ <a href='https://github.com/lmirosevic'>
135
+ <img src='https://github.com/lmirosevic.png?size=140'>
136
+ </a>
137
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
156
138
  </td>
157
139
  <td id='helmut-januschka'>
158
140
  <a href='https://github.com/hjanuschka'>
@@ -160,19 +142,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
160
142
  </a>
161
143
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
162
144
  </td>
145
+ <td id='max-ott'>
146
+ <a href='https://github.com/max-ott'>
147
+ <img src='https://github.com/max-ott.png?size=140'>
148
+ </a>
149
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
150
+ </td>
151
+ <td id='josh-holtz'>
152
+ <a href='https://github.com/joshdholtz'>
153
+ <img src='https://github.com/joshdholtz.png?size=140'>
154
+ </a>
155
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
156
+ </td>
157
+ <td id='iulian-onofrei'>
158
+ <a href='https://github.com/revolter'>
159
+ <img src='https://github.com/revolter.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
162
+ </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='olivier-halligon'>
166
- <a href='https://github.com/AliSoftware'>
167
- <img src='https://github.com/AliSoftware.png?size=140'>
165
+ <td id='daniel-jankowski'>
166
+ <a href='https://github.com/mollyIV'>
167
+ <img src='https://github.com/mollyIV.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
170
170
  </td>
171
- <td id='jan-piotrowski'>
172
- <a href='https://github.com/janpio'>
173
- <img src='https://github.com/janpio.png?size=140'>
171
+ <td id='manu-wallner'>
172
+ <a href='https://github.com/milch'>
173
+ <img src='https://github.com/milch.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -83,7 +83,7 @@ module Deliver
83
83
 
84
84
  if options[:api_key] || options[:api_key_path]
85
85
  if options[:precheck_include_in_app_purchases]
86
- UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck or use Apple ID login")
86
+ UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck, disable the precheck step in your build step, or use Apple ID login")
87
87
  end
88
88
 
89
89
  precheck_options[:api_key] = options[:api_key]
@@ -5,6 +5,7 @@ module Fastlane
5
5
  Actions.verify_gem!('jazzy')
6
6
  command = "jazzy"
7
7
  command << " --config #{params[:config]}" if params[:config]
8
+ command << " --module-version #{params[:module_version]}" if params[:module_version]
8
9
  Actions.sh(command)
9
10
  end
10
11
 
@@ -24,6 +25,13 @@ module Fastlane
24
25
  description: 'Path to jazzy config file',
25
26
  is_string: true,
26
27
  optional: true
28
+ ),
29
+ FastlaneCore::ConfigItem.new(
30
+ key: :module_version,
31
+ env_name: 'FL_JAZZY_MODULE_VERSION',
32
+ description: 'Version string to use as part of the the default docs title and inside the docset',
33
+ is_string: true,
34
+ optional: true
27
35
  )
28
36
  ]
29
37
  end
@@ -44,7 +52,8 @@ module Fastlane
44
52
 
45
53
  def self.example_code
46
54
  [
47
- 'jazzy'
55
+ 'jazzy',
56
+ 'jazzy(config: ".jazzy.yaml", module_version: "2.1.37")'
48
57
  ]
49
58
  end
50
59
 
@@ -22,7 +22,11 @@ module Fastlane
22
22
  return values if Helper.test?
23
23
 
24
24
  if distribute_only
25
- Pilot::BuildManager.new.distribute(values) # we already have the finished config
25
+ build_manager = Pilot::BuildManager.new
26
+ build_manager.start(values, should_login: true)
27
+
28
+ build_manager.wait_for_build_processing_to_be_complete(false) unless values[:skip_waiting_for_build_processing]
29
+ build_manager.distribute(values) # we already have the finished config
26
30
  else
27
31
  Pilot::BuildManager.new.upload(values) # we already have the finished config
28
32
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.175.0'.freeze
2
+ VERSION = '2.176.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.175.0
20
+ // Generated with fastlane 2.176.0
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.58]
259
+ // FastlaneRunnerAPIVersion [0.9.59]
@@ -4680,10 +4680,15 @@ public func ipa(workspace: String? = nil,
4680
4680
  /**
4681
4681
  Generate docs using Jazzy
4682
4682
 
4683
- - parameter config: Path to jazzy config file
4683
+ - parameters:
4684
+ - config: Path to jazzy config file
4685
+ - moduleVersion: Version string to use as part of the the default docs title and inside the docset
4684
4686
  */
4685
- public func jazzy(config: String? = nil) {
4686
- let command = RubyCommand(commandID: "", methodName: "jazzy", className: nil, args: [RubyCommand.Argument(name: "config", value: config)])
4687
+ public func jazzy(config: String? = nil,
4688
+ moduleVersion: String? = nil)
4689
+ {
4690
+ let command = RubyCommand(commandID: "", methodName: "jazzy", className: nil, args: [RubyCommand.Argument(name: "config", value: config),
4691
+ RubyCommand.Argument(name: "module_version", value: moduleVersion)])
4687
4692
  _ = runner.executeCommand(command)
4688
4693
  }
4689
4694
 
@@ -5457,7 +5462,7 @@ public func pilot(apiKeyPath: String? = nil,
5457
5462
  appPlatform: String = "ios",
5458
5463
  appleId: String? = nil,
5459
5464
  ipa: String? = nil,
5460
- demoAccountRequired: Bool = false,
5465
+ demoAccountRequired: Bool? = nil,
5461
5466
  betaAppReviewInfo: [String: Any]? = nil,
5462
5467
  localizedAppInfo: [String: Any]? = nil,
5463
5468
  betaAppDescription: String? = nil,
@@ -6214,6 +6219,7 @@ public func rubyVersion() {
6214
6219
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
6215
6220
  - derivedDataPath: The directory where build products and other derived data will go
6216
6221
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
6222
+ - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
6217
6223
  - resultBundle: Should an Xcode result bundle be generated in the output directory
6218
6224
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
6219
6225
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
@@ -6285,6 +6291,7 @@ public func runTests(workspace: String? = nil,
6285
6291
  xcprettyArgs: String? = nil,
6286
6292
  derivedDataPath: String? = nil,
6287
6293
  shouldZipBuildProducts: Bool = false,
6294
+ outputXctestrun: Bool = false,
6288
6295
  resultBundle: Bool = false,
6289
6296
  useClangReportName: Bool = false,
6290
6297
  concurrentWorkers: Int? = nil,
@@ -6354,6 +6361,7 @@ public func runTests(workspace: String? = nil,
6354
6361
  RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
6355
6362
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
6356
6363
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
6364
+ RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
6357
6365
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
6358
6366
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
6359
6367
  RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
@@ -6505,6 +6513,7 @@ public func say(text: Any,
6505
6513
  - xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
6506
6514
  - derivedDataPath: The directory where build products and other derived data will go
6507
6515
  - shouldZipBuildProducts: Should zip the derived data build products and place in output path?
6516
+ - outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
6508
6517
  - resultBundle: Should an Xcode result bundle be generated in the output directory
6509
6518
  - useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
6510
6519
  - concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
@@ -6576,6 +6585,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6576
6585
  xcprettyArgs: Any? = scanfile.xcprettyArgs,
6577
6586
  derivedDataPath: Any? = scanfile.derivedDataPath,
6578
6587
  shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
6588
+ outputXctestrun: Bool = scanfile.outputXctestrun,
6579
6589
  resultBundle: Bool = scanfile.resultBundle,
6580
6590
  useClangReportName: Bool = scanfile.useClangReportName,
6581
6591
  concurrentWorkers: Int? = scanfile.concurrentWorkers,
@@ -6645,6 +6655,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6645
6655
  RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
6646
6656
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
6647
6657
  RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
6658
+ RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
6648
6659
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
6649
6660
  RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
6650
6661
  RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
@@ -8134,7 +8145,7 @@ public func testflight(apiKeyPath: String? = nil,
8134
8145
  appPlatform: String = "ios",
8135
8146
  appleId: String? = nil,
8136
8147
  ipa: String? = nil,
8137
- demoAccountRequired: Bool = false,
8148
+ demoAccountRequired: Bool? = nil,
8138
8149
  betaAppReviewInfo: [String: Any]? = nil,
8139
8150
  localizedAppInfo: [String: Any]? = nil,
8140
8151
  betaAppDescription: String? = nil,
@@ -9127,7 +9138,7 @@ public func uploadToTestflight(apiKeyPath: String? = nil,
9127
9138
  appPlatform: String = "ios",
9128
9139
  appleId: String? = nil,
9129
9140
  ipa: String? = nil,
9130
- demoAccountRequired: Bool = false,
9141
+ demoAccountRequired: Bool? = nil,
9131
9142
  betaAppReviewInfo: [String: Any]? = nil,
9132
9143
  localizedAppInfo: [String: Any]? = nil,
9133
9144
  betaAppDescription: String? = nil,
@@ -9645,4 +9656,4 @@ public let snapshotfile = Snapshotfile()
9645
9656
 
9646
9657
  // Please don't remove the lines below
9647
9658
  // They are used to detect outdated files
9648
- // FastlaneRunnerAPIVersion [0.9.111]
9659
+ // FastlaneRunnerAPIVersion [0.9.112]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.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.61]
199
+ // FastlaneRunnerAPIVersion [0.9.62]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.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.55]
187
+ // FastlaneRunnerAPIVersion [0.9.56]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.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.54]
55
+ // FastlaneRunnerAPIVersion [0.9.55]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.0
@@ -110,6 +110,9 @@ public protocol ScanfileProtocol: class {
110
110
  /// Should zip the derived data build products and place in output path?
111
111
  var shouldZipBuildProducts: Bool { get }
112
112
 
113
+ /// Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
114
+ var outputXctestrun: Bool { get }
115
+
113
116
  /// Should an Xcode result bundle be generated in the output directory
114
117
  var resultBundle: Bool { get }
115
118
 
@@ -244,6 +247,7 @@ public extension ScanfileProtocol {
244
247
  var xcprettyArgs: String? { return nil }
245
248
  var derivedDataPath: String? { return nil }
246
249
  var shouldZipBuildProducts: Bool { return false }
250
+ var outputXctestrun: Bool { return false }
247
251
  var resultBundle: Bool { return false }
248
252
  var useClangReportName: Bool { return false }
249
253
  var concurrentWorkers: Int? { return nil }
@@ -280,4 +284,4 @@ public extension ScanfileProtocol {
280
284
 
281
285
  // Please don't remove the lines below
282
286
  // They are used to detect outdated files
283
- // FastlaneRunnerAPIVersion [0.9.66]
287
+ // FastlaneRunnerAPIVersion [0.9.67]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.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.56]
99
+ // FastlaneRunnerAPIVersion [0.9.57]
@@ -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.175.0
20
+ // Generated with fastlane 2.176.0
@@ -196,4 +196,4 @@ public extension SnapshotfileProtocol {
196
196
 
197
197
  // Please don't remove the lines below
198
198
  // They are used to detect outdated files
199
- // FastlaneRunnerAPIVersion [0.9.50]
199
+ // FastlaneRunnerAPIVersion [0.9.51]
@@ -33,9 +33,9 @@
33
33
  "system": {
34
34
  "macos": {
35
35
  "catalina": {
36
- "HOMEBREW_VERSION": "3.0.1-93-g53d840c",
36
+ "HOMEBREW_VERSION": "3.0.2",
37
37
  "HOMEBREW_PREFIX": "/usr/local",
38
- "Homebrew/homebrew-core": "703451fe242d959d029d867909ffd92f0d522ffd",
38
+ "Homebrew/homebrew-core": "372d8a99773af6b309354856d1295825ab43d7e0",
39
39
  "CLT": "11.0.33.12",
40
40
  "Xcode": "12.2",
41
41
  "macOS": "10.15.7"
@@ -90,8 +90,13 @@ module Pilot
90
90
 
91
91
  def wait_for_build_processing_to_be_complete(return_when_build_appears = false)
92
92
  platform = fetch_app_platform
93
- app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
94
- app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
93
+ if config[:ipa]
94
+ app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
95
+ app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
96
+ else
97
+ app_version = config[:app_version]
98
+ app_build = config[:build_number]
99
+ end
95
100
 
96
101
  latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(
97
102
  app_id: app.id,
@@ -88,7 +88,7 @@ module Pilot
88
88
  type: Boolean,
89
89
  env_name: "DEMO_ACCOUNT_REQUIRED",
90
90
  description: "Do you need a demo account when Apple does review?",
91
- default_value: false),
91
+ optional: true),
92
92
  FastlaneCore::ConfigItem.new(key: :beta_app_review_info,
93
93
  type: Hash,
94
94
  env_name: "PILOT_BETA_APP_REVIEW_INFO",
@@ -26,7 +26,7 @@ module Precheck
26
26
  # There is also a check in Deliver::Runner for this.
27
27
  # Please remove check in Deliver when the API support IAPs.
28
28
  if Precheck.config[:include_in_app_purchases]
29
- UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck or use Apple ID login")
29
+ UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck, disable the precheck step in your build step, or use Apple ID login")
30
30
  end
31
31
 
32
32
  UI.message("Creating authorization token for App Store Connect API")
@@ -269,6 +269,11 @@ module Scan
269
269
  optional: true,
270
270
  is_string: false,
271
271
  default_value: false),
272
+ FastlaneCore::ConfigItem.new(key: :output_xctestrun,
273
+ type: Boolean,
274
+ env_name: "SCAN_OUTPUT_XCTESTRUN",
275
+ description: "Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?",
276
+ default_value: false),
272
277
  FastlaneCore::ConfigItem.new(key: :result_bundle,
273
278
  short_option: "-z",
274
279
  env_name: "SCAN_RESULT_BUNDLE",
@@ -110,6 +110,7 @@ module Scan
110
110
 
111
111
  copy_simulator_logs
112
112
  zip_build_products
113
+ copy_xctestrun
113
114
 
114
115
  if result[:failures] > 0
115
116
  open_report
@@ -150,6 +151,32 @@ module Scan
150
151
  UI.message("Successfully zipped build products: #{output_path}")
151
152
  end
152
153
 
154
+ def copy_xctestrun
155
+ return unless Scan.config[:output_xctestrun]
156
+
157
+ # Gets :derived_data_path/Build/Products directory for coping .xctestrun file
158
+ derived_data_path = Scan.config[:derived_data_path]
159
+ path = File.join(derived_data_path, "Build", "Products")
160
+
161
+ # Gets absolute path of output directory
162
+ output_directory = File.absolute_path(Scan.config[:output_directory])
163
+ output_path = File.join(output_directory, "settings.xctestrun")
164
+
165
+ # Caching path for action to put into lane_context
166
+ Scan.cache[:output_xctestrun] = output_path
167
+
168
+ # Copy .xctestrun file and moves it to output directory
169
+ UI.message("Copying .xctestrun file")
170
+ xctestrun_file = Dir.glob("#{path}/*.xctestrun").first
171
+
172
+ if xctestrun_file
173
+ FileUtils.cp(xctestrun_file, output_path)
174
+ UI.message("Successfully copied xctestrun file: #{output_path}")
175
+ else
176
+ UI.user_error!("Could not find .xctextrun file to copy")
177
+ end
178
+ end
179
+
153
180
  def test_results
154
181
  temp_junit_report = Scan.cache[:temp_junit_report]
155
182
  return File.read(temp_junit_report) if temp_junit_report && File.file?(temp_junit_report)
@@ -392,13 +392,12 @@ module Screengrab
392
392
  end
393
393
 
394
394
  def run_adb_command(command, print_all: false, print_command: false, raise_errors: true)
395
- adb_path = @android_env.adb_path.chomp("adb")
396
395
  adb_host = @config[:adb_host]
397
396
  host = adb_host.nil? ? '' : "-H #{adb_host} "
398
397
  output = ''
399
398
  begin
400
399
  errout = nil
401
- cmdout = @executor.execute(command: adb_path + "adb " + host + command,
400
+ cmdout = @executor.execute(command: @android_env.adb_path + " " + host + command,
402
401
  print_all: print_all,
403
402
  print_command: print_command,
404
403
  error: raise_errors ? nil : proc { |out, status| errout = out }) || ''
@@ -135,7 +135,7 @@ module Spaceship
135
135
 
136
136
  phone_number = env_2fa_sms_default_phone_number
137
137
  phone_id = phone_id_from_number(response.body["trustedPhoneNumbers"], phone_number)
138
- push_mode = push_mode_from_masked_number(response.body["trustedPhoneNumbers"], phone_number)
138
+ push_mode = push_mode_from_number(response.body["trustedPhoneNumbers"], phone_number)
139
139
  # don't request sms if no trusted devices and env default is the only trusted number,
140
140
  # code was automatically sent
141
141
  should_request_code = !sms_automatically_sent(response)
@@ -234,34 +234,8 @@ module Spaceship
234
234
  end
235
235
 
236
236
  def phone_id_from_number(phone_numbers, phone_number)
237
- characters_to_remove_from_phone_numbers = ' \-()"'
238
-
239
- # start with e.g. +49 162 1234585 or +1-123-456-7866
240
- phone_number = phone_number.tr(characters_to_remove_from_phone_numbers, '')
241
- # cleaned: +491621234585 or +11234567866
242
-
243
237
  phone_numbers.each do |phone|
244
- # rubocop:disable Style/AsciiComments
245
- # start with: +49 •••• •••••85 or +1 (•••) •••-••66
246
- number_with_dialcode_masked = phone['numberWithDialCode'].tr(characters_to_remove_from_phone_numbers, '')
247
- # cleaned: +49•••••••••85 or +1••••••••66
248
- # rubocop:enable Style/AsciiComments
249
-
250
- maskings_count = number_with_dialcode_masked.count('•') # => 9 or 8
251
- pattern = /^([0-9+]{2,4})([•]{#{maskings_count}})([0-9]{2})$/
252
- # following regex: range from maskings_count-2 because sometimes the masked number has 1 or 2 dots more than the actual number
253
- # e.g. https://github.com/fastlane/fastlane/issues/14969
254
- replacement = "\\1([0-9]{#{maskings_count - 2},#{maskings_count}})\\3"
255
- number_with_dialcode_regex_part = number_with_dialcode_masked.gsub(pattern, replacement)
256
- # => +49([0-9]{8,9})85 or +1([0-9]{7,8})66
257
-
258
- backslash = '\\'
259
- number_with_dialcode_regex_part = backslash + number_with_dialcode_regex_part
260
- number_with_dialcode_regex = /^#{number_with_dialcode_regex_part}$/
261
- # => /^\+49([0-9]{8})85$/ or /^\+1([0-9]{7,8})66$/
262
-
263
- return phone['id'] if phone_number =~ number_with_dialcode_regex
264
- # +491621234585 matches /^\+49([0-9]{8})85$/
238
+ return phone['id'] if match_phone_to_masked_phone(phone_number, phone['numberWithDialCode'])
265
239
  end
266
240
 
267
241
  # Handle case of phone_number not existing in phone_numbers because ENV var is wrong or matcher is broken
@@ -272,6 +246,45 @@ If it is, please open an issue at https://github.com/fastlane/fastlane/issues/ne
272
246
  )
273
247
  end
274
248
 
249
+ def push_mode_from_number(phone_numbers, phone_number)
250
+ phone_numbers.each do |phone|
251
+ return phone['pushMode'] if match_phone_to_masked_phone(phone_number, phone['numberWithDialCode'])
252
+ end
253
+
254
+ # If no pushMode was supplied, assume sms
255
+ return "sms"
256
+ end
257
+
258
+ def match_phone_to_masked_phone(phone_number, masked_number)
259
+ characters_to_remove_from_phone_numbers = ' \-()"'
260
+
261
+ # start with e.g. +49 162 1234585 or +1-123-456-7866
262
+ phone_number = phone_number.tr(characters_to_remove_from_phone_numbers, '')
263
+ # cleaned: +491621234585 or +11234567866
264
+
265
+ # rubocop:disable Style/AsciiComments
266
+ # start with: +49 •••• •••••85 or +1 (•••) •••-••66
267
+ number_with_dialcode_masked = masked_number.tr(characters_to_remove_from_phone_numbers, '')
268
+ # cleaned: +49•••••••••85 or +1••••••••66
269
+ # rubocop:enable Style/AsciiComments
270
+
271
+ maskings_count = number_with_dialcode_masked.count('•') # => 9 or 8
272
+ pattern = /^([0-9+]{2,4})([•]{#{maskings_count}})([0-9]{2})$/
273
+ # following regex: range from maskings_count-2 because sometimes the masked number has 1 or 2 dots more than the actual number
274
+ # e.g. https://github.com/fastlane/fastlane/issues/14969
275
+ replacement = "\\1([0-9]{#{maskings_count - 2},#{maskings_count}})\\3"
276
+ number_with_dialcode_regex_part = number_with_dialcode_masked.gsub(pattern, replacement)
277
+ # => +49([0-9]{8,9})85 or +1([0-9]{7,8})66
278
+
279
+ backslash = '\\'
280
+ number_with_dialcode_regex_part = backslash + number_with_dialcode_regex_part
281
+ number_with_dialcode_regex = /^#{number_with_dialcode_regex_part}$/
282
+ # => /^\+49([0-9]{8})85$/ or /^\+1([0-9]{7,8})66$/
283
+
284
+ return phone_number =~ number_with_dialcode_regex
285
+ # +491621234585 matches /^\+49([0-9]{8})85$/
286
+ end
287
+
275
288
  def phone_id_from_masked_number(phone_numbers, masked_number)
276
289
  phone_numbers.each do |phone|
277
290
  return phone['id'] if phone['numberWithDialCode'] == masked_number
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.175.0
4
+ version: 2.176.0
5
5
  platform: ruby
6
6
  authors:
7
- - Joshua Liebowitz
8
- - Felix Krause
9
- - Jorge Revuelta H
10
- - Iulian Onofrei
11
7
  - Jan Piotrowski
12
- - Manu Wallner
13
- - Max Ott
14
- - Helmut Januschka
8
+ - Stefan Natchev
15
9
  - Aaron Brager
10
+ - Manu Wallner
16
11
  - Jérôme Lacoste
17
- - Luka Mirosevic
18
- - Danielle Tomlinson
19
- - Matthew Ellis
20
- - Stefan Natchev
21
- - Fumiya Nakamura
22
12
  - Olivier Halligon
13
+ - Helmut Januschka
14
+ - Jorge Revuelta H
15
+ - Danielle Tomlinson
16
+ - Jimmy Dee
17
+ - Felix Krause
23
18
  - Andrew McBurney
19
+ - Fumiya Nakamura
20
+ - Daniel Jankowski
24
21
  - Maksym Grebenets
22
+ - Iulian Onofrei
25
23
  - Josh Holtz
26
- - Jimmy Dee
24
+ - Max Ott
25
+ - Luka Mirosevic
26
+ - Joshua Liebowitz
27
27
  - Kohki Miki
28
- - Daniel Jankowski
28
+ - Matthew Ellis
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2021-02-19 00:00:00.000000000 Z
32
+ date: 2021-02-24 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: slack-notifier
@@ -1514,6 +1514,7 @@ files:
1514
1514
  - pem/lib/pem/options.rb
1515
1515
  - pilot/README.md
1516
1516
  - pilot/lib/pilot.rb
1517
+ - pilot/lib/pilot/.build_manager.rb.swp
1517
1518
  - pilot/lib/pilot/build_manager.rb
1518
1519
  - pilot/lib/pilot/commands_generator.rb
1519
1520
  - pilot/lib/pilot/features.rb