fastlane 2.211.0 → 2.212.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -0
  4. data/deliver/lib/deliver/runner.rb +2 -6
  5. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
  6. data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/xcodes.rb +17 -2
  9. data/fastlane/lib/fastlane/fast_file.rb +18 -5
  10. data/fastlane/lib/fastlane/features.rb +3 -0
  11. data/fastlane/lib/fastlane/version.rb +1 -1
  12. data/fastlane/swift/Actions.swift +1 -1
  13. data/fastlane/swift/Appfile.swift +1 -1
  14. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  15. data/fastlane/swift/Atomic.swift +1 -1
  16. data/fastlane/swift/ControlCommand.swift +1 -1
  17. data/fastlane/swift/Deliverfile.swift +2 -2
  18. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  19. data/fastlane/swift/Fastlane.swift +30 -6
  20. data/fastlane/swift/Gymfile.swift +2 -2
  21. data/fastlane/swift/GymfileProtocol.swift +6 -2
  22. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  23. data/fastlane/swift/MainProcess.swift +1 -1
  24. data/fastlane/swift/Matchfile.swift +2 -2
  25. data/fastlane/swift/MatchfileProtocol.swift +3 -3
  26. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  27. data/fastlane/swift/Plugins.swift +1 -1
  28. data/fastlane/swift/Precheckfile.swift +2 -2
  29. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  30. data/fastlane/swift/RubyCommand.swift +1 -1
  31. data/fastlane/swift/RubyCommandable.swift +1 -1
  32. data/fastlane/swift/Runner.swift +1 -1
  33. data/fastlane/swift/RunnerArgument.swift +1 -1
  34. data/fastlane/swift/Scanfile.swift +2 -2
  35. data/fastlane/swift/ScanfileProtocol.swift +6 -2
  36. data/fastlane/swift/Screengrabfile.swift +2 -2
  37. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  38. data/fastlane/swift/Snapshotfile.swift +2 -2
  39. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  40. data/fastlane/swift/SocketClient.swift +1 -1
  41. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  42. data/fastlane/swift/SocketResponse.swift +1 -1
  43. data/fastlane/swift/formatting/Brewfile.lock.json +26 -18
  44. data/fastlane/swift/main.swift +1 -1
  45. data/fastlane_core/lib/fastlane_core/cert_checker.rb +9 -2
  46. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
  47. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  48. data/gym/lib/gym/options.rb +7 -0
  49. data/match/lib/match/importer.rb +4 -0
  50. data/match/lib/match/module.rb +1 -1
  51. data/scan/lib/scan/options.rb +5 -0
  52. data/scan/lib/scan/test_command_generator.rb +6 -1
  53. data/spaceship/lib/spaceship/client.rb +23 -0
  54. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
  55. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +17 -0
  56. data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +9 -0
  57. data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
  58. data/spaceship/lib/spaceship/connect_api/models/device.rb +44 -4
  59. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
  60. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
  61. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  62. data/spaceship/lib/spaceship/errors.rb +34 -0
  63. data/spaceship/lib/spaceship/hashcash.rb +52 -0
  64. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +10 -2
  65. data/spaceship/lib/spaceship.rb +1 -0
  66. metadata +24 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9109ddee20194fc927133f3885a6a460d09ea8ccf81d865822c1c7c028b428c2
4
- data.tar.gz: 5f6fe9b0094d3fb6582e88c44ac8e4e2a0830d2f5f556628744e67f26b307f17
3
+ metadata.gz: 244364fbe5e40c851dc1afbb79fe8c79ba76fedee6e607d7cf950f043ba7b921
4
+ data.tar.gz: 5f4f4f4462eb64a87ed63df0ece646c100ae8d3a0c37a84eff9cbad76f51c2a8
5
5
  SHA512:
6
- metadata.gz: '08db10e18729135ecebec8ac1735e9ab79a4e878b1ab249b4011c086072c945f0024f4d95a241335bb8807da7a1402c98f70183f0cd45c2985d87c5de6188d03'
7
- data.tar.gz: 20c188c9ad9a9b270d64f0dbb8011861f79a2932e7665df511401be49e0d6f8ecb03cbfb8c5ce81274e239930084c535fc2735fc3997d185545ef4460aa12d99
6
+ metadata.gz: ae5c7a99e698db70b74516d415601ee4368fa864cd114a867d44098e0e52a2b68a361fc0178f902c0f0e6fefe3618639a259c92bde33906cb6a0501aa82d18e2
7
+ data.tar.gz: b736ceec481316c6d9cde333299bff4c8145e5b11f5e802acb60a9c59028c9a9444a7a771dcf8f21f952a3cd64e2959e7a87ae224fecad503e34a1d032481123
data/README.md CHANGED
@@ -35,29 +35,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='łukasz-grabowski'>
39
- <a href='https://github.com/lucgrabowski'>
40
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
41
- </a>
42
- <h4 align='center'>Łukasz Grabowski</h4>
43
- </td>
44
- <td id='luka-mirosevic'>
45
- <a href='https://github.com/lmirosevic'>
46
- <img src='https://github.com/lmirosevic.png' width='140px;'>
38
+ <td id='roger-oba'>
39
+ <a href='https://github.com/rogerluan'>
40
+ <img src='https://github.com/rogerluan.png' width='140px;'>
47
41
  </a>
48
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
49
43
  </td>
50
- <td id='satoshi-namai'>
51
- <a href='https://github.com/ainame'>
52
- <img src='https://github.com/ainame.png' width='140px;'>
44
+ <td id='fumiya-nakamura'>
45
+ <a href='https://github.com/nafu'>
46
+ <img src='https://github.com/nafu.png' width='140px;'>
53
47
  </a>
54
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
55
49
  </td>
56
- <td id='olivier-halligon'>
57
- <a href='https://github.com/AliSoftware'>
58
- <img src='https://github.com/AliSoftware.png' width='140px;'>
50
+ <td id='josh-holtz'>
51
+ <a href='https://github.com/joshdholtz'>
52
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
59
53
  </a>
60
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
61
55
  </td>
62
56
  <td id='daniel-jankowski'>
63
57
  <a href='https://github.com/mollyIV'>
@@ -65,25 +59,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
65
59
  </a>
66
60
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
67
61
  </td>
68
- </tr>
69
- <tr>
70
- <td id='kohki-miki'>
71
- <a href='https://github.com/giginet'>
72
- <img src='https://github.com/giginet.png' width='140px;'>
73
- </a>
74
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
75
- </td>
76
- <td id='stefan-natchev'>
77
- <a href='https://github.com/snatchev'>
78
- <img src='https://github.com/snatchev.png' width='140px;'>
62
+ <td id='jan-piotrowski'>
63
+ <a href='https://github.com/janpio'>
64
+ <img src='https://github.com/janpio.png' width='140px;'>
79
65
  </a>
80
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
81
67
  </td>
82
- <td id='felix-krause'>
83
- <a href='https://github.com/KrauseFx'>
84
- <img src='https://github.com/KrauseFx.png' width='140px;'>
68
+ </tr>
69
+ <tr>
70
+ <td id='satoshi-namai'>
71
+ <a href='https://github.com/ainame'>
72
+ <img src='https://github.com/ainame.png' width='140px;'>
85
73
  </a>
86
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
87
75
  </td>
88
76
  <td id='danielle-tomlinson'>
89
77
  <a href='https://github.com/endocrimes'>
@@ -91,43 +79,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
79
  </a>
92
80
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
93
81
  </td>
94
- <td id='jimmy-dee'>
95
- <a href='https://github.com/jdee'>
96
- <img src='https://github.com/jdee.png' width='140px;'>
82
+ <td id='stefan-natchev'>
83
+ <a href='https://github.com/snatchev'>
84
+ <img src='https://github.com/snatchev.png' width='140px;'>
97
85
  </a>
98
- <h4 align='center'>Jimmy Dee</h4>
86
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
99
87
  </td>
100
- </tr>
101
- <tr>
102
88
  <td id='matthew-ellis'>
103
89
  <a href='https://github.com/matthewellis'>
104
90
  <img src='https://github.com/matthewellis.png' width='140px;'>
105
91
  </a>
106
92
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
107
93
  </td>
108
- <td id='jérôme-lacoste'>
109
- <a href='https://github.com/lacostej'>
110
- <img src='https://github.com/lacostej.png' width='140px;'>
111
- </a>
112
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
113
- </td>
114
- <td id='andrew-mcburney'>
115
- <a href='https://github.com/armcburney'>
116
- <img src='https://github.com/armcburney.png' width='140px;'>
117
- </a>
118
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
119
- </td>
120
- <td id='manu-wallner'>
121
- <a href='https://github.com/milch'>
122
- <img src='https://github.com/milch.png' width='140px;'>
123
- </a>
124
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
125
- </td>
126
- <td id='max-ott'>
127
- <a href='https://github.com/max-ott'>
128
- <img src='https://github.com/max-ott.png' width='140px;'>
94
+ <td id='iulian-onofrei'>
95
+ <a href='https://github.com/revolter'>
96
+ <img src='https://github.com/revolter.png' width='140px;'>
129
97
  </a>
130
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
131
99
  </td>
132
100
  </tr>
133
101
  <tr>
@@ -137,37 +105,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
137
105
  </a>
138
106
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
139
107
  </td>
108
+ <td id='maksym-grebenets'>
109
+ <a href='https://github.com/mgrebenets'>
110
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
111
+ </a>
112
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
113
+ </td>
114
+ <td id='luka-mirosevic'>
115
+ <a href='https://github.com/lmirosevic'>
116
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
117
+ </a>
118
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
119
+ </td>
140
120
  <td id='manish-rathi'>
141
121
  <a href='https://github.com/crazymanish'>
142
122
  <img src='https://github.com/crazymanish.png' width='140px;'>
143
123
  </a>
144
124
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
145
125
  </td>
146
- <td id='joshua-liebowitz'>
147
- <a href='https://github.com/taquitos'>
148
- <img src='https://github.com/taquitos.png' width='140px;'>
126
+ <td id='felix-krause'>
127
+ <a href='https://github.com/KrauseFx'>
128
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
149
129
  </a>
150
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
151
131
  </td>
152
- <td id='iulian-onofrei'>
153
- <a href='https://github.com/revolter'>
154
- <img src='https://github.com/revolter.png' width='140px;'>
132
+ </tr>
133
+ <tr>
134
+ <td id='helmut-januschka'>
135
+ <a href='https://github.com/hjanuschka'>
136
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
155
137
  </a>
156
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
157
139
  </td>
158
- <td id='maksym-grebenets'>
159
- <a href='https://github.com/mgrebenets'>
160
- <img src='https://github.com/mgrebenets.png' width='140px;'>
140
+ <td id='olivier-halligon'>
141
+ <a href='https://github.com/AliSoftware'>
142
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
161
143
  </a>
162
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
145
+ </td>
146
+ <td id='łukasz-grabowski'>
147
+ <a href='https://github.com/lucgrabowski'>
148
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
149
+ </a>
150
+ <h4 align='center'>Łukasz Grabowski</h4>
151
+ </td>
152
+ <td id='kohki-miki'>
153
+ <a href='https://github.com/giginet'>
154
+ <img src='https://github.com/giginet.png' width='140px;'>
155
+ </a>
156
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
157
+ </td>
158
+ <td id='joshua-liebowitz'>
159
+ <a href='https://github.com/taquitos'>
160
+ <img src='https://github.com/taquitos.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='roger-oba'>
167
- <a href='https://github.com/rogerluan'>
168
- <img src='https://github.com/rogerluan.png' width='140px;'>
166
+ <td id='jimmy-dee'>
167
+ <a href='https://github.com/jdee'>
168
+ <img src='https://github.com/jdee.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
170
+ <h4 align='center'>Jimmy Dee</h4>
171
+ </td>
172
+ <td id='manu-wallner'>
173
+ <a href='https://github.com/milch'>
174
+ <img src='https://github.com/milch.png' width='140px;'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
171
177
  </td>
172
178
  <td id='aaron-brager'>
173
179
  <a href='https://github.com/getaaron'>
@@ -175,31 +181,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
181
  </a>
176
182
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
177
183
  </td>
178
- <td id='josh-holtz'>
179
- <a href='https://github.com/joshdholtz'>
180
- <img src='https://github.com/joshdholtz.png' width='140px;'>
181
- </a>
182
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
183
- </td>
184
- <td id='fumiya-nakamura'>
185
- <a href='https://github.com/nafu'>
186
- <img src='https://github.com/nafu.png' width='140px;'>
184
+ <td id='max-ott'>
185
+ <a href='https://github.com/max-ott'>
186
+ <img src='https://github.com/max-ott.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
189
189
  </td>
190
- <td id='jan-piotrowski'>
191
- <a href='https://github.com/janpio'>
192
- <img src='https://github.com/janpio.png' width='140px;'>
190
+ <td id='andrew-mcburney'>
191
+ <a href='https://github.com/armcburney'>
192
+ <img src='https://github.com/armcburney.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='helmut-januschka'>
199
- <a href='https://github.com/hjanuschka'>
200
- <img src='https://github.com/hjanuschka.png' width='140px;'>
198
+ <td id='jérôme-lacoste'>
199
+ <a href='https://github.com/lacostej'>
200
+ <img src='https://github.com/lacostej.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -349,6 +349,7 @@ module Deliver
349
349
  "iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
350
350
  "iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
351
351
  "iPad Pro (12.9-inch) (5th generation)", # Default simulator has this name
352
+ "iPad Pro (12.9-inch) (6th generation)", # Default simulator has this name
352
353
  "IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
353
354
  "ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
354
355
  ].any? { |key| filename.include?(key) }
@@ -245,13 +245,9 @@ module Deliver
245
245
  UI.message("Review submission cancellation has been requested")
246
246
 
247
247
  # An app version won't get removed from review instantly
248
- # Polling until app version has a state of DEVELOPER_REJECT
248
+ # Polling until there is no longer an in-progress version
249
249
  loop do
250
- version = app.get_edit_app_store_version(platform: platform)
251
- if version.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REJECTED
252
- break
253
- end
254
-
250
+ break if app.get_in_progress_review_submission(platform: platform).nil?
255
251
  UI.message("Waiting for cancellation to take effect...")
256
252
  sleep(15)
257
253
  end
@@ -25,6 +25,7 @@ gem install fastlane
25
25
  ```
26
26
 
27
27
  ##### Gradle dependency
28
+
28
29
  ```java
29
30
  androidTestImplementation 'tools.fastlane:screengrab:x.x.x'
30
31
  ```
@@ -60,17 +61,23 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
60
61
  ##### Configuring your <a href="#ui-tests">UI Tests</a> for Screenshots
61
62
 
62
63
  1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
64
+
63
65
  If you're using Java use:
66
+
64
67
  ```java
65
68
  @ClassRule
66
69
  public static final LocaleTestRule localeTestRule = new LocaleTestRule();
67
70
  ```
71
+
68
72
  If you're using Kotlin use:
73
+
69
74
  ```kotlin
70
75
  @Rule @JvmField
71
76
  val localeTestRule = LocaleTestRule()
72
77
  ```
78
+
73
79
  The `@JvmField` annotation is important. It won't work like this:
80
+
74
81
  ```kotlin
75
82
  companion object {
76
83
  @get:ClassRule
@@ -84,6 +91,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
84
91
  - Then, before running `fastlane screengrab` you'll need a debug and test apk
85
92
  - You can create your APKs manually with `./gradlew assembleDebug assembleAndroidTest`
86
93
  - You can also create a lane and use `build_android_app`:
94
+
87
95
  ```ruby
88
96
  desc "Build debug and test APK for screenshots"
89
97
  lane :build_and_screengrab do
@@ -163,7 +171,9 @@ fastlane action screengrab
163
171
  Check out [Testing UI for a Single App](http://developer.android.com/training/testing/ui-testing/espresso-testing.html) for an introduction to using Espresso for UI testing.
164
172
 
165
173
  ##### Example UI Test Class (Using JUnit4)
174
+
166
175
  Java:
176
+
167
177
  ```java
168
178
  @RunWith(JUnit4.class)
169
179
  public class JUnit4StyleTests {
@@ -182,9 +192,10 @@ public class JUnit4StyleTests {
182
192
  Screengrab.screenshot("after_button_click");
183
193
  }
184
194
  }
185
-
186
195
  ```
196
+
187
197
  Kotlin:
198
+
188
199
  ```kotlin
189
200
  @RunWith(JUnit4.class)
190
201
  class JUnit4StyleTests {
@@ -203,7 +214,6 @@ class JUnit4StyleTests {
203
214
  Screengrab.screenshot("after_button_click")
204
215
  }
205
216
  }
206
-
207
217
  ```
208
218
 
209
219
  There is an [example project](https://github.com/fastlane/fastlane/tree/master/screengrab/example/src/androidTest/java/tools/fastlane/localetester) showing how to use JUnit 3 or 4 and Espresso with the screengrab Java library to capture screenshots during a UI test run.
@@ -224,6 +234,7 @@ Note: the clean status bar feature is only supported on devices with *API level
224
234
 
225
235
  You can enable and disable the clean status bar at any moment during your tests.
226
236
  In most cases you probably want to do this in the @BeforeClass and @AfterClass methods.
237
+
227
238
  ```java
228
239
  @BeforeClass
229
240
  public static void beforeAll() {
@@ -238,6 +249,7 @@ public static void afterAll() {
238
249
 
239
250
  Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
240
251
  You could for example show the Bluetooth icon and the LTE text.
252
+
241
253
  ```java
242
254
  new CleanStatusBar()
243
255
  .setBluetoothState(BluetoothState.DISCONNECTED)
@@ -283,6 +295,7 @@ if (extras != null) {
283
295
  For some apps, it is helpful to know when _screengrab_ is running so that you can display specific data for your screenshots. For iOS fastlane users, this is much like "FASTLANE_SNAPSHOT". In order to do this, you'll need to have at least two product flavors of your app.
284
296
 
285
297
  Add two product flavors to the app-level build.gradle file:
298
+
286
299
  ```
287
300
  android {
288
301
  ...
@@ -300,6 +313,7 @@ android {
300
313
  ```
301
314
 
302
315
  Check for the existence of that flavor (i.e screengrab) in your app code as follows in order to use mock data or customize data for screenshots:
316
+
303
317
  ```
304
318
  if (BuildConfig.FLAVOR == "screengrab") {
305
319
  System.out.println("screengrab is running!");
@@ -307,14 +321,17 @@ if (BuildConfig.FLAVOR == "screengrab") {
307
321
  ```
308
322
 
309
323
  When running _screengrab_, do the following to build the flavor you want as well as the test apk. Note that you use "assembleFlavor_name" where Flavor_name is the flavor name, capitalized (i.e. Screengrab).
324
+
310
325
  ```
311
326
  ./gradlew assembleScreengrab assembleAndroidTest
312
327
  ```
313
328
 
314
329
  Run _screengrab_:
330
+
315
331
  ```
316
332
  fastlane screengrab
317
333
  ```
334
+
318
335
  _screengrab_ will ask you to select the debug and test apps (which you can then add to your Screengrabfile to skip this step later).
319
336
 
320
337
  The debug apk should be somewhere like this:
@@ -29,7 +29,7 @@ module Fastlane
29
29
  command << "--analyze" if params[:analyze]
30
30
 
31
31
  result = Actions.sh(command.join(' '))
32
- UI.success("Pod lib lint Successfully ⬆️ ")
32
+ UI.success("Pod lib lint successful ⬆️ ")
33
33
  return result
34
34
  end
35
35
 
@@ -19,7 +19,7 @@ module Fastlane
19
19
  UI.user_error!("Could not find path to project config '#{project_file_path}'. Pass the path to your project (not workspace)!") unless File.exist?(project_file_path)
20
20
 
21
21
  # download certificate
22
- unless File.exist?(params[:certificate])
22
+ unless File.exist?(params[:certificate]) && File.size(params[:certificate]) > 0
23
23
  UI.message("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
24
24
  File.open(params[:certificate], "w:ASCII-8BIT") do |file|
25
25
  file.write(FastlaneCore::Helper.open_uri(ROOT_CERTIFICATE_URL, "rb").read)
@@ -36,8 +36,23 @@ module Fastlane
36
36
  command << binary
37
37
  command << "installed"
38
38
  command << "'#{version}'"
39
- # Prints something like /Applications/Xcode-14.app
40
- xcode_path = Actions.sh(command.join(" ")).strip
39
+
40
+ # `installed <version>` will either return the path to the given
41
+ # version or fail because the version can't be found.
42
+ #
43
+ # Store the path if we get one, fail the action otherwise.
44
+ xcode_path = Actions.sh(command.join(" ")) do |status, result, sh_command|
45
+ formatted_result = result.chomp
46
+
47
+ unless status.success?
48
+ UI.user_error!("Command `#{sh_command}` failed with status #{status.exitstatus} and message: #{formatted_result}")
49
+ end
50
+
51
+ formatted_result
52
+ end
53
+
54
+ # If the command succeeded, `xcode_path` will be something like:
55
+ # /Applications/Xcode-14.app
41
56
  xcode_developer_path = File.join(xcode_path, "/Contents/Developer")
42
57
 
43
58
  UI.message("Setting Xcode version '#{version}' at '#{xcode_path}' for all build steps")
@@ -338,11 +338,24 @@ module Fastlane
338
338
  UI.user_error!("No tag found matching #{version.inspect}") if checkout_param.nil?
339
339
  end
340
340
 
341
- if is_eligible_for_caching && version.nil?
342
- # Update the repo if it's eligible for caching but the version isn't specified
343
- UI.message("Fetching remote git branches and updating git repo...")
344
- Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
345
- Actions.sh("cd #{clone_folder.shellescape} && git fetch --all --quiet && git checkout #{checkout_param.shellescape} #{checkout_path} && git reset --hard && git rebase")
341
+ if is_eligible_for_caching
342
+ if version.nil?
343
+ # Update the repo if it's eligible for caching but the version isn't specified
344
+ UI.message("Fetching remote git branches and updating git repo...")
345
+ Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
346
+ Actions.sh("cd #{clone_folder.shellescape} && git fetch --all --quiet && git checkout #{checkout_param.shellescape} #{checkout_path} && git reset --hard && git rebase")
347
+ end
348
+ else
349
+ begin
350
+ # https://stackoverflow.com/a/1593574/865175
351
+ current_tag = Actions.sh("cd #{clone_folder.shellescape} && git describe --exact-match --tags HEAD").strip
352
+ rescue
353
+ current_tag = nil
354
+ end
355
+
356
+ if current_tag != version
357
+ Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
358
+ end
346
359
  end
347
360
  else
348
361
  Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
@@ -5,3 +5,6 @@
5
5
 
6
6
  FastlaneCore::Feature.register(env_var: 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS',
7
7
  description: 'Use a newly implemented screenshots synchronization logic')
8
+
9
+ FastlaneCore::Feature.register(env_var: 'FASTLANE_WWDR_USE_HTTP1_AND_RETRIES',
10
+ description: 'Adds --http1.1 and --retry 3 --retry-all-errors to the curl command to download WWDR certificates')
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.211.0'.freeze
2
+ VERSION = '2.212.1'.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 = '1.12.1'.freeze
@@ -1,5 +1,5 @@
1
1
  // Actions.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  // This autogenerated file will be overwritten or replaced when running "fastlane generate_swift"
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // Appfile.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  var appIdentifier: String { return "" } // The bundle identifier of your app
5
5
  var appleID: String { return "" } // Your Apple Developer Portal username
@@ -1,5 +1,5 @@
1
1
  // ArgumentProcessor.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Atomic.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  import Foundation
5
5
 
@@ -1,5 +1,5 @@
1
1
  // ControlCommand.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  //
5
5
  // ** NOTE **
@@ -1,5 +1,5 @@
1
1
  // Deliverfile.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  // This class is automatically included in FastlaneRunner during build
5
5
 
@@ -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.211.0
20
+ // Generated with fastlane 2.212.1
@@ -1,5 +1,5 @@
1
1
  // DeliverfileProtocol.swift
2
- // Copyright (c) 2022 FastlaneTools
2
+ // Copyright (c) 2023 FastlaneTools
3
3
 
4
4
  public protocol DeliverfileProtocol: AnyObject {
5
5
  /// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
@@ -264,4 +264,4 @@ public extension DeliverfileProtocol {
264
264
 
265
265
  // Please don't remove the lines below
266
266
  // They are used to detect outdated files
267
- // FastlaneRunnerAPIVersion [0.9.112]
267
+ // FastlaneRunnerAPIVersion [0.9.114]