fastlane 2.236.0 → 2.237.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +102 -102
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +3 -1
- data/fastlane/lib/fastlane/actions/swiftlint.rb +10 -1
- data/fastlane/lib/fastlane/helper/sh_helper.rb +7 -3
- data/fastlane/lib/fastlane/lane_manager.rb +0 -1
- data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +0 -7
- data/fastlane/lib/fastlane/plugins/template/.gitignore +0 -1
- data/fastlane/lib/fastlane/plugins/template/.rspec +0 -2
- data/fastlane/lib/fastlane/plugins/template/Gemfile.erb +0 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +23 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +8 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +8 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +5 -9
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
- data/fastlane_core/lib/fastlane_core/project.rb +3 -1
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_shell_error.rb +6 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/gym/lib/gym/error_handler.rb +11 -1
- data/gym/lib/gym/generators/build_command_generator.rb +2 -0
- data/match/lib/match/options.rb +8 -0
- data/match/lib/match/runner.rb +4 -2
- data/match/lib/match/storage/git_storage.rb +18 -2
- data/precheck/lib/precheck/rules/copyright_date_rule.rb +15 -9
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +1 -0
- data/scan/lib/scan/test_command_generator.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +7 -2
- data/supply/lib/supply/uploader.rb +7 -1
- data/trainer/lib/trainer/xcresult/test_case.rb +21 -2
- data/trainer/lib/trainer/xcresult/test_plan.rb +3 -3
- data/trainer/lib/trainer/xcresult/test_suite.rb +28 -19
- metadata +27 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2b25f32992804c871d4846acd7d3661e7549ed5012323d93b02ea4d545e57513
|
|
4
|
+
data.tar.gz: db58ec0cdc765c9ca09fde8b45771de859a1e752f30607495a008e957ea4ec95
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3e6e654e96e3c57b1e93f624e0bffb0e93a5e7e984578c4e32d2c6831ebe54982e7d4d5c1752e47451f6d15be37e71b23a59eb6db98861206697bb98c1636bdb
|
|
7
|
+
data.tar.gz: eee3973f328a2de3105a650295ecca9c0dd682c551fe28580ff8c8cc610e9988fa17fd09188e4895145b9c822964a09a13a4e92b70c60d15fc519f6ec202be46
|
data/README.md
CHANGED
|
@@ -36,23 +36,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
36
36
|
<!-- This table is regenerated and resorted on each release -->
|
|
37
37
|
<table id='team'>
|
|
38
38
|
<tr>
|
|
39
|
-
<td id='
|
|
40
|
-
<a href='https://github.com/
|
|
41
|
-
<img src='https://github.com/
|
|
39
|
+
<td id='connor-tumbleson'>
|
|
40
|
+
<a href='https://github.com/ibotpeaches'>
|
|
41
|
+
<img src='https://github.com/ibotpeaches.png' width='140px;'>
|
|
42
42
|
</a>
|
|
43
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
43
|
+
<h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
|
|
44
44
|
</td>
|
|
45
|
-
<td id='
|
|
46
|
-
<a href='https://github.com/
|
|
47
|
-
<img src='https://github.com/
|
|
45
|
+
<td id='manu-wallner'>
|
|
46
|
+
<a href='https://github.com/milch'>
|
|
47
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
|
48
48
|
</a>
|
|
49
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
49
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
50
50
|
</td>
|
|
51
|
-
<td id='
|
|
52
|
-
<a href='https://github.com/
|
|
53
|
-
<img src='https://github.com/
|
|
51
|
+
<td id='matthew-ellis'>
|
|
52
|
+
<a href='https://github.com/matthewellis'>
|
|
53
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
|
54
54
|
</a>
|
|
55
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
55
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
56
56
|
</td>
|
|
57
57
|
<td id='josh-holtz'>
|
|
58
58
|
<a href='https://github.com/joshdholtz'>
|
|
@@ -60,153 +60,153 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
60
60
|
</a>
|
|
61
61
|
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
62
62
|
</td>
|
|
63
|
-
<td id='
|
|
64
|
-
<a href='https://github.com/
|
|
65
|
-
<img src='https://github.com/
|
|
63
|
+
<td id='jorge-revuelta-h'>
|
|
64
|
+
<a href='https://github.com/minuscorp'>
|
|
65
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
|
66
66
|
</a>
|
|
67
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
67
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
68
68
|
</td>
|
|
69
69
|
</tr>
|
|
70
70
|
<tr>
|
|
71
|
-
<td id='
|
|
72
|
-
<a href='https://github.com/
|
|
73
|
-
<img src='https://github.com/
|
|
71
|
+
<td id='felix-krause'>
|
|
72
|
+
<a href='https://github.com/KrauseFx'>
|
|
73
|
+
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
|
74
74
|
</a>
|
|
75
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
75
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
76
76
|
</td>
|
|
77
|
-
<td id='
|
|
78
|
-
<a href='https://github.com/
|
|
79
|
-
<img src='https://github.com/
|
|
77
|
+
<td id='maksym-grebenets'>
|
|
78
|
+
<a href='https://github.com/mgrebenets'>
|
|
79
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
80
80
|
</a>
|
|
81
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
81
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
82
82
|
</td>
|
|
83
|
-
<td id='
|
|
84
|
-
<a href='https://github.com/
|
|
85
|
-
<img src='https://github.com/
|
|
83
|
+
<td id='kohki-miki'>
|
|
84
|
+
<a href='https://github.com/giginet'>
|
|
85
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
|
86
86
|
</a>
|
|
87
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
87
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
88
88
|
</td>
|
|
89
|
-
<td id='
|
|
90
|
-
<a href='https://github.com/
|
|
91
|
-
<img src='https://github.com/
|
|
89
|
+
<td id='joshua-liebowitz'>
|
|
90
|
+
<a href='https://github.com/taquitos'>
|
|
91
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
92
92
|
</a>
|
|
93
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
93
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
94
94
|
</td>
|
|
95
|
-
<td id='
|
|
96
|
-
<a href='https://github.com/
|
|
97
|
-
<img src='https://github.com/
|
|
95
|
+
<td id='luka-mirosevic'>
|
|
96
|
+
<a href='https://github.com/lmirosevic'>
|
|
97
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
98
98
|
</a>
|
|
99
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
99
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
100
100
|
</td>
|
|
101
101
|
</tr>
|
|
102
102
|
<tr>
|
|
103
|
-
<td id='
|
|
104
|
-
<a href='https://github.com/
|
|
105
|
-
<img src='https://github.com/
|
|
103
|
+
<td id='jan-piotrowski'>
|
|
104
|
+
<a href='https://github.com/janpio'>
|
|
105
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
|
106
106
|
</a>
|
|
107
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
107
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
108
108
|
</td>
|
|
109
|
-
<td id='
|
|
110
|
-
<a href='https://github.com/
|
|
111
|
-
<img src='https://github.com/
|
|
109
|
+
<td id='stefan-natchev'>
|
|
110
|
+
<a href='https://github.com/snatchev'>
|
|
111
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
112
112
|
</a>
|
|
113
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
113
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
114
114
|
</td>
|
|
115
|
-
<td id='
|
|
116
|
-
<a href='https://github.com/
|
|
117
|
-
<img src='https://github.com/
|
|
115
|
+
<td id='max-ott'>
|
|
116
|
+
<a href='https://github.com/max-ott'>
|
|
117
|
+
<img src='https://github.com/max-ott.png' width='140px;'>
|
|
118
118
|
</a>
|
|
119
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
119
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
120
120
|
</td>
|
|
121
|
-
<td id='
|
|
122
|
-
<a href='https://github.com/
|
|
123
|
-
<img src='https://github.com/
|
|
121
|
+
<td id='roger-oba'>
|
|
122
|
+
<a href='https://github.com/rogerluan'>
|
|
123
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
|
124
124
|
</a>
|
|
125
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
125
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
|
126
126
|
</td>
|
|
127
|
-
<td id='
|
|
128
|
-
<a href='https://github.com/
|
|
129
|
-
<img src='https://github.com/
|
|
127
|
+
<td id='jérôme-lacoste'>
|
|
128
|
+
<a href='https://github.com/lacostej'>
|
|
129
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
|
130
130
|
</a>
|
|
131
|
-
<h4 align='center'>
|
|
131
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
132
132
|
</td>
|
|
133
133
|
</tr>
|
|
134
134
|
<tr>
|
|
135
|
-
<td id='
|
|
136
|
-
<a href='https://github.com/
|
|
137
|
-
<img src='https://github.com/
|
|
135
|
+
<td id='iulian-onofrei'>
|
|
136
|
+
<a href='https://github.com/revolter'>
|
|
137
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
|
138
138
|
</a>
|
|
139
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
139
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
140
140
|
</td>
|
|
141
|
-
<td id='
|
|
142
|
-
<a href='https://github.com/
|
|
143
|
-
<img src='https://github.com/
|
|
141
|
+
<td id='aaron-brager'>
|
|
142
|
+
<a href='https://github.com/getaaron'>
|
|
143
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
|
144
144
|
</a>
|
|
145
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
145
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
146
146
|
</td>
|
|
147
|
-
<td id='
|
|
148
|
-
<a href='https://github.com/
|
|
149
|
-
<img src='https://github.com/
|
|
147
|
+
<td id='daniel-jankowski'>
|
|
148
|
+
<a href='https://github.com/mollyIV'>
|
|
149
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
|
150
150
|
</a>
|
|
151
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
151
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
152
152
|
</td>
|
|
153
|
-
<td id='
|
|
154
|
-
<a href='https://github.com/
|
|
155
|
-
<img src='https://github.com/
|
|
153
|
+
<td id='manish-rathi'>
|
|
154
|
+
<a href='https://github.com/crazymanish'>
|
|
155
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
156
156
|
</a>
|
|
157
|
-
<h4 align='center'
|
|
157
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
|
158
158
|
</td>
|
|
159
|
-
<td id='
|
|
160
|
-
<a href='https://github.com/
|
|
161
|
-
<img src='https://github.com/
|
|
159
|
+
<td id='danielle-tomlinson'>
|
|
160
|
+
<a href='https://github.com/endocrimes'>
|
|
161
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
|
162
162
|
</a>
|
|
163
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
163
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
164
164
|
</td>
|
|
165
165
|
</tr>
|
|
166
166
|
<tr>
|
|
167
|
-
<td id='maksym-grebenets'>
|
|
168
|
-
<a href='https://github.com/mgrebenets'>
|
|
169
|
-
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
170
|
-
</a>
|
|
171
|
-
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
172
|
-
</td>
|
|
173
167
|
<td id='satoshi-namai'>
|
|
174
168
|
<a href='https://github.com/ainame'>
|
|
175
169
|
<img src='https://github.com/ainame.png' width='140px;'>
|
|
176
170
|
</a>
|
|
177
171
|
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
178
172
|
</td>
|
|
179
|
-
<td id='
|
|
180
|
-
<a href='https://github.com/
|
|
181
|
-
<img src='https://github.com/
|
|
173
|
+
<td id='helmut-januschka'>
|
|
174
|
+
<a href='https://github.com/hjanuschka'>
|
|
175
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
|
182
176
|
</a>
|
|
183
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
177
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
184
178
|
</td>
|
|
185
|
-
<td id='
|
|
186
|
-
<a href='https://github.com/
|
|
187
|
-
<img src='https://github.com/
|
|
179
|
+
<td id='andrew-mcburney'>
|
|
180
|
+
<a href='https://github.com/armcburney'>
|
|
181
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
188
182
|
</a>
|
|
189
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
183
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
190
184
|
</td>
|
|
191
|
-
<td id='
|
|
192
|
-
<a href='https://github.com/
|
|
193
|
-
<img src='https://github.com/
|
|
185
|
+
<td id='olivier-halligon'>
|
|
186
|
+
<a href='https://github.com/AliSoftware'>
|
|
187
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
194
188
|
</a>
|
|
195
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
189
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
190
|
+
</td>
|
|
191
|
+
<td id='jimmy-dee'>
|
|
192
|
+
<a href='https://github.com/jdee'>
|
|
193
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
|
194
|
+
</a>
|
|
195
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
196
196
|
</td>
|
|
197
197
|
</tr>
|
|
198
198
|
<tr>
|
|
199
|
-
<td id='
|
|
200
|
-
<a href='https://github.com/
|
|
201
|
-
<img src='https://github.com/
|
|
199
|
+
<td id='fumiya-nakamura'>
|
|
200
|
+
<a href='https://github.com/nafu'>
|
|
201
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
|
202
202
|
</a>
|
|
203
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
203
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
204
204
|
</td>
|
|
205
|
-
<td id='
|
|
206
|
-
<a href='https://github.com/
|
|
207
|
-
<img src='https://github.com/
|
|
205
|
+
<td id='łukasz-grabowski'>
|
|
206
|
+
<a href='https://github.com/lucgrabowski'>
|
|
207
|
+
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
|
208
208
|
</a>
|
|
209
|
-
<h4 align='center'
|
|
209
|
+
<h4 align='center'>Łukasz Grabowski</h4>
|
|
210
210
|
</td>
|
|
211
211
|
</table>
|
|
212
212
|
|
|
@@ -817,7 +817,9 @@ In this case, default values for keywords, urls, name and release notes are used
|
|
|
817
817
|
|
|
818
818
|
[Starting March 20, 2019 Apple's App Store](https://developer.apple.com/news/?id=03202019a) requires 12.9-inch iPad Pro (3rd generation) screenshots additionally to the iPad Pro 2nd generation [screenshots](https://help.apple.com/app-store-connect/#/devd274dd925). As fastlane historically uses the screenshot dimensions to determine the "display family" of a screenshot, this poses a problem as both use the same dimensions and are recognized as the same device family.
|
|
819
819
|
|
|
820
|
-
|
|
820
|
+
For fastlane 2.230.0 and later, screenshots with the shared 12.9-inch iPad Pro resolution are treated as 3rd generation (and later) by default. To upload to the 2nd generation slot, include either `APP_IPAD_PRO_129` or both `12.9` and `2nd generation` in the filename.
|
|
821
|
+
|
|
822
|
+
> Note: For fastlane versions earlier than 2.230.0, a screenshot of a 12.9-inch iPad Pro (3rd generation) must contain either the string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129` (Apple's internal naming of the display family for the 3rd generation iPad Pro) in its filename to be assigned the correct display family and to be uploaded to the correct screenshot slot in your app's metadata.
|
|
821
823
|
|
|
822
824
|
## Automatically create screenshots
|
|
823
825
|
|
|
@@ -37,6 +37,8 @@ module Fastlane
|
|
|
37
37
|
command << " --use-script-input-files"
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
command << path_argument(params) if params[:path]
|
|
41
|
+
|
|
40
42
|
command << " > #{params[:output_file].shellescape}" if params[:output_file]
|
|
41
43
|
|
|
42
44
|
begin
|
|
@@ -49,7 +51,6 @@ module Fastlane
|
|
|
49
51
|
|
|
50
52
|
def self.optional_flags(params)
|
|
51
53
|
command = ""
|
|
52
|
-
command << " --path #{params[:path].shellescape}" if params[:path]
|
|
53
54
|
command << supported_option_switch(params, :strict, "0.9.2", true)
|
|
54
55
|
command << " --config #{params[:config_file].shellescape}" if params[:config_file]
|
|
55
56
|
command << " --reporter #{params[:reporter]}" if params[:reporter]
|
|
@@ -61,6 +62,14 @@ module Fastlane
|
|
|
61
62
|
return command
|
|
62
63
|
end
|
|
63
64
|
|
|
65
|
+
def self.path_argument(params)
|
|
66
|
+
escaped_path = params[:path].shellescape
|
|
67
|
+
version = swiftlint_version(executable: params[:executable])
|
|
68
|
+
return " --path #{escaped_path}" if version < Gem::Version.new('0.48.0')
|
|
69
|
+
|
|
70
|
+
" #{escaped_path}"
|
|
71
|
+
end
|
|
72
|
+
|
|
64
73
|
# Get current SwiftLint version
|
|
65
74
|
def self.swiftlint_version(executable: nil)
|
|
66
75
|
binary = executable || 'swiftlint'
|
|
@@ -65,12 +65,16 @@ module Fastlane
|
|
|
65
65
|
# with previous implementations of sh and... probably portable to all
|
|
66
66
|
# relevant platforms.
|
|
67
67
|
if exit_status.exitstatus != 0
|
|
68
|
+
# Due to some output and build systems having 30-80k lines of output.
|
|
69
|
+
# We will truncate what we will show to recap the failure.
|
|
70
|
+
truncated_msg = result.length > 500 ? result[-500..-1] : result
|
|
71
|
+
|
|
68
72
|
message = if print_command
|
|
69
|
-
"Exit status of command '#{shell_command}' was #{exit_status.exitstatus} instead of 0
|
|
73
|
+
"Exit status of command '#{shell_command}' was #{exit_status.exitstatus} instead of 0.\n"
|
|
70
74
|
else
|
|
71
|
-
"Shell command exited with exit status #{exit_status.exitstatus} instead of 0
|
|
75
|
+
"Shell command exited with exit status #{exit_status.exitstatus} instead of 0.\n"
|
|
72
76
|
end
|
|
73
|
-
message +=
|
|
77
|
+
message += (truncated_msg).to_s if print_command_output && !$stdout.isatty
|
|
74
78
|
|
|
75
79
|
if error_callback || block_given?
|
|
76
80
|
UI.error(message)
|
|
@@ -10,8 +10,6 @@ gem 'pry'
|
|
|
10
10
|
gem 'rake'
|
|
11
11
|
# Behavior-driven testing tool for Ruby.
|
|
12
12
|
gem 'rspec'
|
|
13
|
-
# Formatter for RSpec to generate JUnit compatible reports.
|
|
14
|
-
gem 'rspec_junit_formatter'
|
|
15
13
|
# A Ruby static code analyzer and formatter.
|
|
16
14
|
gem 'rubocop', '<%= Fastlane::RUBOCOP_REQUIREMENT %>'
|
|
17
15
|
# A collection of RuboCop cops for performance optimizations.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module Fastlane
|
|
2
|
-
VERSION = '2.
|
|
2
|
+
VERSION = '2.237.0'.freeze
|
|
3
3
|
SUMMARY = "The easiest way to build and release mobile apps.".freeze
|
|
4
4
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
|
5
5
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
|
@@ -2958,7 +2958,7 @@ public func chatwork(apiToken: String,
|
|
|
2958
2958
|
- curseWords: including words that might be considered objectionable
|
|
2959
2959
|
- freeStuffInIap: using text indicating that your IAP is free
|
|
2960
2960
|
- customText: mentioning any of the user-specified words passed to custom_text(data: [words])
|
|
2961
|
-
- copyrightDate: using a copyright
|
|
2961
|
+
- copyrightDate: using a copyright year in the future, or missing a copyright year
|
|
2962
2962
|
- unreachableUrls: unreachable URLs in app metadata
|
|
2963
2963
|
|
|
2964
2964
|
- returns: true if precheck passes, else, false
|
|
@@ -6909,6 +6909,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
|
6909
6909
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
|
6910
6910
|
- certificateId: Select certificate by id. Useful if multiple certificates are stored in one place
|
|
6911
6911
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
|
6912
|
+
- renewExpiredCerts: Automatically renew expired certificates. Note: to renew `developer_id` and `developer_id_installer` certificates you must log in with the Account Holder account by using username and password; App Store Connect API key doesn't work in this case. The expired certificate is removed from the match storage and a new one is created, but the old certificate is not revoked on the Apple Developer Portal — run `fastlane match nuke` if you need to free up certificate slots
|
|
6912
6913
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
|
6913
6914
|
- safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
|
|
6914
6915
|
- skipDocs: Skip generation of a README.md for the created git repository
|
|
@@ -6969,6 +6970,7 @@ public func match(type: String = matchfile.type,
|
|
|
6969
6970
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.includeAllCertificates),
|
|
6970
6971
|
certificateId: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.certificateId),
|
|
6971
6972
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.forceForNewCertificates),
|
|
6973
|
+
renewExpiredCerts: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.renewExpiredCerts),
|
|
6972
6974
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipConfirmation),
|
|
6973
6975
|
safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.safeRemoveCerts),
|
|
6974
6976
|
skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.skipDocs),
|
|
@@ -7027,6 +7029,7 @@ public func match(type: String = matchfile.type,
|
|
|
7027
7029
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
|
7028
7030
|
let certificateIdArg = certificateId.asRubyArgument(name: "certificate_id", type: nil)
|
|
7029
7031
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
|
7032
|
+
let renewExpiredCertsArg = renewExpiredCerts.asRubyArgument(name: "renew_expired_certs", type: nil)
|
|
7030
7033
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
|
7031
7034
|
let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
|
|
7032
7035
|
let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
|
|
@@ -7084,6 +7087,7 @@ public func match(type: String = matchfile.type,
|
|
|
7084
7087
|
includeAllCertificatesArg,
|
|
7085
7088
|
certificateIdArg,
|
|
7086
7089
|
forceForNewCertificatesArg,
|
|
7090
|
+
renewExpiredCertsArg,
|
|
7087
7091
|
skipConfirmationArg,
|
|
7088
7092
|
safeRemoveCertsArg,
|
|
7089
7093
|
skipDocsArg,
|
|
@@ -7152,6 +7156,7 @@ public func match(type: String = matchfile.type,
|
|
|
7152
7156
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
|
7153
7157
|
- certificateId: Select certificate by id. Useful if multiple certificates are stored in one place
|
|
7154
7158
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
|
7159
|
+
- renewExpiredCerts: Automatically renew expired certificates. Note: to renew `developer_id` and `developer_id_installer` certificates you must log in with the Account Holder account by using username and password; App Store Connect API key doesn't work in this case. The expired certificate is removed from the match storage and a new one is created, but the old certificate is not revoked on the Apple Developer Portal — run `fastlane match nuke` if you need to free up certificate slots
|
|
7155
7160
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
|
7156
7161
|
- safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
|
|
7157
7162
|
- skipDocs: Skip generation of a README.md for the created git repository
|
|
@@ -7216,6 +7221,7 @@ public func matchNuke(type: String = "development",
|
|
|
7216
7221
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
7217
7222
|
certificateId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
7218
7223
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
7224
|
+
renewExpiredCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
7219
7225
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
7220
7226
|
safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
7221
7227
|
skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
@@ -7274,6 +7280,7 @@ public func matchNuke(type: String = "development",
|
|
|
7274
7280
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
|
7275
7281
|
let certificateIdArg = certificateId.asRubyArgument(name: "certificate_id", type: nil)
|
|
7276
7282
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
|
7283
|
+
let renewExpiredCertsArg = renewExpiredCerts.asRubyArgument(name: "renew_expired_certs", type: nil)
|
|
7277
7284
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
|
7278
7285
|
let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
|
|
7279
7286
|
let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
|
|
@@ -7331,6 +7338,7 @@ public func matchNuke(type: String = "development",
|
|
|
7331
7338
|
includeAllCertificatesArg,
|
|
7332
7339
|
certificateIdArg,
|
|
7333
7340
|
forceForNewCertificatesArg,
|
|
7341
|
+
renewExpiredCertsArg,
|
|
7334
7342
|
skipConfirmationArg,
|
|
7335
7343
|
safeRemoveCertsArg,
|
|
7336
7344
|
skipDocsArg,
|
|
@@ -8959,6 +8967,7 @@ public func rubyVersion() {
|
|
|
8959
8967
|
- suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
|
|
8960
8968
|
- xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
|
|
8961
8969
|
- outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
|
|
8970
|
+
- forceLegacyXcresulttool: Force the use of the '--legacy' flag for xcresulttool instead of using the new commands
|
|
8962
8971
|
- disableXcpretty: **DEPRECATED!** Use `output_style: 'raw'` instead - Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
|
|
8963
8972
|
- formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
|
|
8964
8973
|
- xcprettyFormatter: A custom xcpretty formatter to use
|
|
@@ -9045,6 +9054,7 @@ public func rubyVersion() {
|
|
|
9045
9054
|
suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
|
9046
9055
|
xcodebuildFormatter: String = "xcbeautify",
|
|
9047
9056
|
outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
9057
|
+
forceLegacyXcresulttool: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
9048
9058
|
disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(nil),
|
|
9049
9059
|
formatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
9050
9060
|
xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
@@ -9127,6 +9137,7 @@ public func rubyVersion() {
|
|
|
9127
9137
|
let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
|
|
9128
9138
|
let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
|
|
9129
9139
|
let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
|
|
9140
|
+
let forceLegacyXcresulttoolArg = forceLegacyXcresulttool.asRubyArgument(name: "force_legacy_xcresulttool", type: nil)
|
|
9130
9141
|
let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
|
|
9131
9142
|
let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
|
|
9132
9143
|
let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
|
|
@@ -9208,6 +9219,7 @@ public func rubyVersion() {
|
|
|
9208
9219
|
suppressXcodeOutputArg,
|
|
9209
9220
|
xcodebuildFormatterArg,
|
|
9210
9221
|
outputRemoveRetryAttemptsArg,
|
|
9222
|
+
forceLegacyXcresulttoolArg,
|
|
9211
9223
|
disableXcprettyArg,
|
|
9212
9224
|
formatterArg,
|
|
9213
9225
|
xcprettyFormatterArg,
|
|
@@ -9402,6 +9414,7 @@ public func say(text: [String],
|
|
|
9402
9414
|
- suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
|
|
9403
9415
|
- xcodebuildFormatter: xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
|
|
9404
9416
|
- outputRemoveRetryAttempts: Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
|
|
9417
|
+
- forceLegacyXcresulttool: Force the use of the '--legacy' flag for xcresulttool instead of using the new commands
|
|
9405
9418
|
- disableXcpretty: **DEPRECATED!** Use `output_style: 'raw'` instead - Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
|
|
9406
9419
|
- formatter: **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
|
|
9407
9420
|
- xcprettyFormatter: A custom xcpretty formatter to use
|
|
@@ -9488,6 +9501,7 @@ public func say(text: [String],
|
|
|
9488
9501
|
suppressXcodeOutput: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.suppressXcodeOutput),
|
|
9489
9502
|
xcodebuildFormatter: String = scanfile.xcodebuildFormatter,
|
|
9490
9503
|
outputRemoveRetryAttempts: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.outputRemoveRetryAttempts),
|
|
9504
|
+
forceLegacyXcresulttool: OptionalConfigValue<Bool> = .fastlaneDefault(scanfile.forceLegacyXcresulttool),
|
|
9491
9505
|
disableXcpretty: OptionalConfigValue<Bool?> = .fastlaneDefault(scanfile.disableXcpretty),
|
|
9492
9506
|
formatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.formatter),
|
|
9493
9507
|
xcprettyFormatter: OptionalConfigValue<String?> = .fastlaneDefault(scanfile.xcprettyFormatter),
|
|
@@ -9570,6 +9584,7 @@ public func say(text: [String],
|
|
|
9570
9584
|
let suppressXcodeOutputArg = suppressXcodeOutput.asRubyArgument(name: "suppress_xcode_output", type: nil)
|
|
9571
9585
|
let xcodebuildFormatterArg = RubyCommand.Argument(name: "xcodebuild_formatter", value: xcodebuildFormatter, type: nil)
|
|
9572
9586
|
let outputRemoveRetryAttemptsArg = outputRemoveRetryAttempts.asRubyArgument(name: "output_remove_retry_attempts", type: nil)
|
|
9587
|
+
let forceLegacyXcresulttoolArg = forceLegacyXcresulttool.asRubyArgument(name: "force_legacy_xcresulttool", type: nil)
|
|
9573
9588
|
let disableXcprettyArg = disableXcpretty.asRubyArgument(name: "disable_xcpretty", type: nil)
|
|
9574
9589
|
let formatterArg = formatter.asRubyArgument(name: "formatter", type: nil)
|
|
9575
9590
|
let xcprettyFormatterArg = xcprettyFormatter.asRubyArgument(name: "xcpretty_formatter", type: nil)
|
|
@@ -9651,6 +9666,7 @@ public func say(text: [String],
|
|
|
9651
9666
|
suppressXcodeOutputArg,
|
|
9652
9667
|
xcodebuildFormatterArg,
|
|
9653
9668
|
outputRemoveRetryAttemptsArg,
|
|
9669
|
+
forceLegacyXcresulttoolArg,
|
|
9654
9670
|
disableXcprettyArg,
|
|
9655
9671
|
formatterArg,
|
|
9656
9672
|
xcprettyFormatterArg,
|
|
@@ -11481,6 +11497,7 @@ public func swiftlint(mode: String = "lint",
|
|
|
11481
11497
|
- includeAllCertificates: Include all matching certificates in the provisioning profile. Works only for the 'development' provisioning profile type
|
|
11482
11498
|
- certificateId: Select certificate by id. Useful if multiple certificates are stored in one place
|
|
11483
11499
|
- forceForNewCertificates: Renew the provisioning profiles if the certificate count on the developer portal has changed. Works only for the 'development' provisioning profile type. Requires 'include_all_certificates' option to be 'true'
|
|
11500
|
+
- renewExpiredCerts: Automatically renew expired certificates. Note: to renew `developer_id` and `developer_id_installer` certificates you must log in with the Account Holder account by using username and password; App Store Connect API key doesn't work in this case. The expired certificate is removed from the match storage and a new one is created, but the old certificate is not revoked on the Apple Developer Portal — run `fastlane match nuke` if you need to free up certificate slots
|
|
11484
11501
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
|
11485
11502
|
- safeRemoveCerts: Remove certs from repository during nuke without revoking them on the developer portal
|
|
11486
11503
|
- skipDocs: Skip generation of a README.md for the created git repository
|
|
@@ -11541,6 +11558,7 @@ public func syncCodeSigning(type: String = "development",
|
|
|
11541
11558
|
includeAllCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
11542
11559
|
certificateId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
11543
11560
|
forceForNewCertificates: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
11561
|
+
renewExpiredCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
11544
11562
|
skipConfirmation: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
11545
11563
|
safeRemoveCerts: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
11546
11564
|
skipDocs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
|
@@ -11599,6 +11617,7 @@ public func syncCodeSigning(type: String = "development",
|
|
|
11599
11617
|
let includeAllCertificatesArg = includeAllCertificates.asRubyArgument(name: "include_all_certificates", type: nil)
|
|
11600
11618
|
let certificateIdArg = certificateId.asRubyArgument(name: "certificate_id", type: nil)
|
|
11601
11619
|
let forceForNewCertificatesArg = forceForNewCertificates.asRubyArgument(name: "force_for_new_certificates", type: nil)
|
|
11620
|
+
let renewExpiredCertsArg = renewExpiredCerts.asRubyArgument(name: "renew_expired_certs", type: nil)
|
|
11602
11621
|
let skipConfirmationArg = skipConfirmation.asRubyArgument(name: "skip_confirmation", type: nil)
|
|
11603
11622
|
let safeRemoveCertsArg = safeRemoveCerts.asRubyArgument(name: "safe_remove_certs", type: nil)
|
|
11604
11623
|
let skipDocsArg = skipDocs.asRubyArgument(name: "skip_docs", type: nil)
|
|
@@ -11656,6 +11675,7 @@ public func syncCodeSigning(type: String = "development",
|
|
|
11656
11675
|
includeAllCertificatesArg,
|
|
11657
11676
|
certificateIdArg,
|
|
11658
11677
|
forceForNewCertificatesArg,
|
|
11678
|
+
renewExpiredCertsArg,
|
|
11659
11679
|
skipConfirmationArg,
|
|
11660
11680
|
safeRemoveCertsArg,
|
|
11661
11681
|
skipDocsArg,
|
|
@@ -13902,7 +13922,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
|
|
|
13902
13922
|
coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
13903
13923
|
coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
13904
13924
|
xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
|
13905
|
-
ideFoundationPath: String = "/Applications/
|
|
13925
|
+
ideFoundationPath: String = "/Applications/Xcode_26.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
|
13906
13926
|
legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
|
|
13907
13927
|
{
|
|
13908
13928
|
let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
|
|
@@ -14113,4 +14133,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
|
14113
14133
|
|
|
14114
14134
|
// Please don't remove the lines below
|
|
14115
14135
|
// They are used to detect outdated files
|
|
14116
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
14136
|
+
// FastlaneRunnerAPIVersion [0.9.204]
|