fastlane 2.198.1 → 2.201.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +92 -92
- data/deliver/lib/deliver/app_screenshot.rb +7 -0
- data/deliver/lib/deliver/app_screenshot_iterator.rb +1 -1
- data/fastlane/lib/.DS_Store +0 -0
- data/fastlane/lib/fastlane/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -27
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -0
- data/fastlane/lib/fastlane/actions/trainer.rb +49 -0
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +18 -1
- data/fastlane/lib/fastlane/actions/xcversion.rb +18 -3
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
- data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +9 -0
- data/fastlane/lib/fastlane/tools.rb +2 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +2 -2
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +28 -15
- data/fastlane/swift/Gymfile.swift +2 -2
- data/fastlane/swift/GymfileProtocol.swift +2 -2
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +2 -2
- data/fastlane/swift/MatchfileProtocol.swift +2 -2
- data/fastlane/swift/OptionalConfigValue.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +2 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +4 -8
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +2 -2
- data/fastlane/swift/ScanfileProtocol.swift +4 -4
- data/fastlane/swift/Screengrabfile.swift +2 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
- data/fastlane/swift/Snapshotfile.swift +2 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +14 -14
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +10 -5
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +4 -1
- data/gym/lib/gym/generators/build_command_generator.rb +68 -22
- data/gym/lib/gym/options.rb +17 -5
- data/scan/lib/scan/options.rb +27 -7
- data/scan/lib/scan/runner.rb +107 -14
- data/scan/lib/scan/test_command_generator.rb +55 -5
- data/snapshot/lib/snapshot/options.rb +23 -7
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +37 -2
- data/spaceship/lib/spaceship/client.rb +35 -15
- data/spaceship/lib/spaceship/commands_generator.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +73 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission_item.rb +40 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +83 -0
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/globals.rb +9 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
- data/supply/lib/supply/options.rb +8 -0
- data/supply/lib/supply/uploader.rb +6 -2
- data/trainer/lib/.DS_Store +0 -0
- data/trainer/lib/assets/junit.xml.erb +20 -0
- data/trainer/lib/trainer/commands_generator.rb +51 -0
- data/trainer/lib/trainer/junit_generator.rb +31 -0
- data/trainer/lib/trainer/module.rb +10 -0
- data/trainer/lib/trainer/options.rb +55 -0
- data/trainer/lib/trainer/test_parser.rb +346 -0
- data/trainer/lib/trainer/xcresult.rb +403 -0
- data/trainer/lib/trainer.rb +7 -0
- metadata +39 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41a222588b957ee2de626c4f5d4c68b06c225aa154d0a022b601c69676cde448
|
4
|
+
data.tar.gz: 50ea7458c9abe457367e1833e6f4fcafe820a52392191a0ce8e3dcf7e52cafc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0af11e8d7527c5c9fa47f76ad1ccd34b4c0a9ac4fc9ceb4aa5613f5a929761a4c4daa416717fae3e9be6c561c5ca59b58ce267ab8db4ef0722e3a1518d47ea90
|
7
|
+
data.tar.gz: 294ddfa23c72c683fa336d0437a2456d91d9bbb598a162af2f971eee012a476baca979e58e5702443c8b5f29218c50d6a25ed6f12d74a6f9bff1a417c945eceb
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2015-
|
3
|
+
Copyright (c) 2015-2022 The Fastlane Authors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -35,49 +35,49 @@ 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='
|
39
|
-
<a href='https://github.com/
|
40
|
-
<img src='https://github.com/
|
38
|
+
<td id='danielle-tomlinson'>
|
39
|
+
<a href='https://github.com/endocrimes'>
|
40
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
41
41
|
</a>
|
42
|
-
<h4 align='center'><a href='https://twitter.com/
|
42
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
43
43
|
</td>
|
44
|
-
<td id='
|
45
|
-
<a href='https://github.com/
|
46
|
-
<img src='https://github.com/
|
44
|
+
<td id='satoshi-namai'>
|
45
|
+
<a href='https://github.com/ainame'>
|
46
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
47
47
|
</a>
|
48
|
-
<h4 align='center'><a href='https://twitter.com/
|
48
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
49
49
|
</td>
|
50
|
-
<td id='
|
51
|
-
<a href='https://github.com/
|
52
|
-
<img src='https://github.com/
|
50
|
+
<td id='jorge-revuelta-h'>
|
51
|
+
<a href='https://github.com/minuscorp'>
|
52
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
53
53
|
</a>
|
54
|
-
<h4 align='center'><a href='https://twitter.com/
|
54
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
55
55
|
</td>
|
56
|
-
<td id='
|
57
|
-
<a href='https://github.com/
|
58
|
-
<img src='https://github.com/
|
56
|
+
<td id='jérôme-lacoste'>
|
57
|
+
<a href='https://github.com/lacostej'>
|
58
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
59
59
|
</a>
|
60
|
-
<h4 align='center'><a href='https://twitter.com/
|
60
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
61
61
|
</td>
|
62
|
-
<td id='
|
63
|
-
<a href='https://github.com/
|
64
|
-
<img src='https://github.com/
|
62
|
+
<td id='jan-piotrowski'>
|
63
|
+
<a href='https://github.com/janpio'>
|
64
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
65
65
|
</a>
|
66
|
-
<h4 align='center'><a href='https://twitter.com/
|
66
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
67
67
|
</td>
|
68
68
|
</tr>
|
69
69
|
<tr>
|
70
|
-
<td id='
|
71
|
-
<a href='https://github.com/
|
72
|
-
<img src='https://github.com/
|
70
|
+
<td id='roger-oba'>
|
71
|
+
<a href='https://github.com/rogerluan'>
|
72
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
73
73
|
</a>
|
74
|
-
<h4 align='center'><a href='https://twitter.com/
|
74
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
75
75
|
</td>
|
76
|
-
<td id='
|
77
|
-
<a href='https://github.com/
|
78
|
-
<img src='https://github.com/
|
76
|
+
<td id='kohki-miki'>
|
77
|
+
<a href='https://github.com/giginet'>
|
78
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
79
79
|
</a>
|
80
|
-
<h4 align='center'><a href='https://twitter.com/
|
80
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
81
81
|
</td>
|
82
82
|
<td id='olivier-halligon'>
|
83
83
|
<a href='https://github.com/AliSoftware'>
|
@@ -85,69 +85,69 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
85
85
|
</a>
|
86
86
|
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
87
87
|
</td>
|
88
|
-
<td id='
|
89
|
-
<a href='https://github.com/
|
90
|
-
<img src='https://github.com/
|
91
|
-
</a>
|
92
|
-
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
93
|
-
</td>
|
94
|
-
<td id='satoshi-namai'>
|
95
|
-
<a href='https://github.com/ainame'>
|
96
|
-
<img src='https://github.com/ainame.png' width='140px;'>
|
88
|
+
<td id='helmut-januschka'>
|
89
|
+
<a href='https://github.com/hjanuschka'>
|
90
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
97
91
|
</a>
|
98
|
-
<h4 align='center'><a href='https://twitter.com/
|
92
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
99
93
|
</td>
|
100
|
-
</tr>
|
101
|
-
<tr>
|
102
94
|
<td id='manish-rathi'>
|
103
95
|
<a href='https://github.com/crazymanish'>
|
104
96
|
<img src='https://github.com/crazymanish.png' width='140px;'>
|
105
97
|
</a>
|
106
98
|
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
107
99
|
</td>
|
108
|
-
|
109
|
-
<
|
110
|
-
<
|
100
|
+
</tr>
|
101
|
+
<tr>
|
102
|
+
<td id='matthew-ellis'>
|
103
|
+
<a href='https://github.com/matthewellis'>
|
104
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
111
105
|
</a>
|
112
|
-
<h4 align='center'><a href='https://twitter.com/
|
106
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
113
107
|
</td>
|
114
|
-
<td id='
|
115
|
-
<a href='https://github.com/
|
116
|
-
<img src='https://github.com/
|
108
|
+
<td id='joshua-liebowitz'>
|
109
|
+
<a href='https://github.com/taquitos'>
|
110
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
117
111
|
</a>
|
118
|
-
<h4 align='center'><a href='https://twitter.com/
|
112
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
119
113
|
</td>
|
120
|
-
<td id='
|
121
|
-
<a href='https://github.com/
|
122
|
-
<img src='https://github.com/
|
114
|
+
<td id='josh-holtz'>
|
115
|
+
<a href='https://github.com/joshdholtz'>
|
116
|
+
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
123
117
|
</a>
|
124
|
-
<h4 align='center'><a href='https://twitter.com/
|
118
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
125
119
|
</td>
|
126
|
-
<td id='
|
127
|
-
<a href='https://github.com/
|
128
|
-
<img src='https://github.com/
|
120
|
+
<td id='aaron-brager'>
|
121
|
+
<a href='https://github.com/getaaron'>
|
122
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
129
123
|
</a>
|
130
|
-
<h4 align='center'><a href='https://twitter.com/
|
124
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
125
|
+
</td>
|
126
|
+
<td id='manu-wallner'>
|
127
|
+
<a href='https://github.com/milch'>
|
128
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
129
|
+
</a>
|
130
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
131
131
|
</td>
|
132
132
|
</tr>
|
133
133
|
<tr>
|
134
|
-
<td id='
|
135
|
-
<a href='https://github.com/
|
136
|
-
<img src='https://github.com/
|
134
|
+
<td id='luka-mirosevic'>
|
135
|
+
<a href='https://github.com/lmirosevic'>
|
136
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
137
137
|
</a>
|
138
|
-
<h4 align='center'>
|
138
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
139
139
|
</td>
|
140
|
-
<td id='
|
141
|
-
<a href='https://github.com/
|
142
|
-
<img src='https://github.com/
|
140
|
+
<td id='daniel-jankowski'>
|
141
|
+
<a href='https://github.com/mollyIV'>
|
142
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
143
143
|
</a>
|
144
|
-
<h4 align='center'><a href='https://twitter.com/
|
144
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
145
145
|
</td>
|
146
|
-
<td id='
|
147
|
-
<a href='https://github.com/
|
148
|
-
<img src='https://github.com/
|
146
|
+
<td id='felix-krause'>
|
147
|
+
<a href='https://github.com/KrauseFx'>
|
148
|
+
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
149
149
|
</a>
|
150
|
-
<h4 align='center'><a href='https://twitter.com/
|
150
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
151
151
|
</td>
|
152
152
|
<td id='stefan-natchev'>
|
153
153
|
<a href='https://github.com/snatchev'>
|
@@ -155,43 +155,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
155
155
|
</a>
|
156
156
|
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
157
157
|
</td>
|
158
|
-
<td id='
|
159
|
-
<a href='https://github.com/
|
160
|
-
<img src='https://github.com/
|
158
|
+
<td id='iulian-onofrei'>
|
159
|
+
<a href='https://github.com/revolter'>
|
160
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
161
161
|
</a>
|
162
|
-
<h4 align='center'><a href='https://twitter.com/
|
162
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
163
163
|
</td>
|
164
164
|
</tr>
|
165
165
|
<tr>
|
166
|
-
<td id='
|
167
|
-
<a href='https://github.com/
|
168
|
-
<img src='https://github.com/
|
166
|
+
<td id='andrew-mcburney'>
|
167
|
+
<a href='https://github.com/armcburney'>
|
168
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
169
169
|
</a>
|
170
|
-
<h4 align='center'><a href='https://twitter.com/
|
170
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
171
171
|
</td>
|
172
|
-
<td id='
|
173
|
-
<a href='https://github.com/
|
174
|
-
<img src='https://github.com/
|
172
|
+
<td id='max-ott'>
|
173
|
+
<a href='https://github.com/max-ott'>
|
174
|
+
<img src='https://github.com/max-ott.png' width='140px;'>
|
175
175
|
</a>
|
176
|
-
<h4 align='center'><a href='https://twitter.com/
|
176
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
177
177
|
</td>
|
178
|
-
<td id='
|
179
|
-
<a href='https://github.com/
|
180
|
-
<img src='https://github.com/
|
178
|
+
<td id='fumiya-nakamura'>
|
179
|
+
<a href='https://github.com/nafu'>
|
180
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
181
181
|
</a>
|
182
|
-
<h4 align='center'><a href='https://twitter.com/
|
182
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
183
183
|
</td>
|
184
|
-
<td id='
|
185
|
-
<a href='https://github.com/
|
186
|
-
<img src='https://github.com/
|
184
|
+
<td id='jimmy-dee'>
|
185
|
+
<a href='https://github.com/jdee'>
|
186
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
187
187
|
</a>
|
188
|
-
<h4 align='center'
|
188
|
+
<h4 align='center'>Jimmy Dee</h4>
|
189
189
|
</td>
|
190
|
-
<td id='
|
191
|
-
<a href='https://github.com/
|
192
|
-
<img src='https://github.com/
|
190
|
+
<td id='maksym-grebenets'>
|
191
|
+
<a href='https://github.com/mgrebenets'>
|
192
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
193
193
|
</a>
|
194
|
-
<h4 align='center'><a href='https://twitter.com/
|
194
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
195
195
|
</td>
|
196
196
|
</tr>
|
197
197
|
</table>
|
@@ -63,6 +63,8 @@ module Deliver
|
|
63
63
|
IOS_APPLE_WATCH = "iOS-Apple-Watch"
|
64
64
|
# Apple Watch Series 4
|
65
65
|
IOS_APPLE_WATCH_SERIES4 = "iOS-Apple-Watch-Series4"
|
66
|
+
# Apple Watch Series 7
|
67
|
+
IOS_APPLE_WATCH_SERIES7 = "iOS-Apple-Watch-Series7"
|
66
68
|
|
67
69
|
# Apple TV
|
68
70
|
APPLE_TV = "Apple-TV"
|
@@ -117,6 +119,7 @@ module Deliver
|
|
117
119
|
ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
|
118
120
|
ScreenSize::IOS_APPLE_WATCH => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_3,
|
119
121
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_4,
|
122
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_7,
|
120
123
|
ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_APPLE_TV
|
121
124
|
}
|
122
125
|
return matching[self.screen_size]
|
@@ -151,6 +154,7 @@ module Deliver
|
|
151
154
|
ScreenSize::MAC => "Mac",
|
152
155
|
ScreenSize::IOS_APPLE_WATCH => "Watch",
|
153
156
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => "Watch Series4",
|
157
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => "Watch Series7",
|
154
158
|
ScreenSize::APPLE_TV => "Apple TV"
|
155
159
|
}
|
156
160
|
return matching[self.screen_size]
|
@@ -313,6 +317,9 @@ module Deliver
|
|
313
317
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => [
|
314
318
|
[368, 448]
|
315
319
|
],
|
320
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => [
|
321
|
+
[396, 484]
|
322
|
+
],
|
316
323
|
ScreenSize::APPLE_TV => [
|
317
324
|
[1920, 1080],
|
318
325
|
[3840, 2160]
|
@@ -80,7 +80,7 @@ module Deliver
|
|
80
80
|
screenshots_per_display_type = screenshots_for_language.reject { |screenshot| screenshot.device_type.nil? }.group_by(&:device_type)
|
81
81
|
|
82
82
|
screenshots_per_display_type.each do |display_type, screenshots|
|
83
|
-
# create AppScreenshotSet for given display_type if it doesn't
|
83
|
+
# create AppScreenshotSet for given display_type if it doesn't exist
|
84
84
|
app_screenshot_set = (app_screenshot_set_per_locale_and_display_type[language] || {})[display_type]
|
85
85
|
app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type })
|
86
86
|
|
Binary file
|
Binary file
|
Binary file
|
@@ -75,10 +75,11 @@ module Fastlane
|
|
75
75
|
|
76
76
|
filter = { app: app.id }
|
77
77
|
filter["preReleaseVersion.platform"] = platform
|
78
|
-
|
79
|
-
|
78
|
+
filter["preReleaseVersion.version"] = version if version
|
79
|
+
filter["version"] = build_number if build_number
|
80
|
+
build_resp = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion,buildBundles")
|
80
81
|
|
81
|
-
|
82
|
+
build_resp.all_pages_each do |build|
|
82
83
|
asc_app_version = build.app_version
|
83
84
|
asc_build_number = build.version
|
84
85
|
uploaded_date = DateTime.parse(build.uploaded_date)
|
@@ -100,7 +101,7 @@ module Fastlane
|
|
100
101
|
|
101
102
|
if after_uploaded_date && after_uploaded_date >= uploaded_date
|
102
103
|
UI.verbose("Upload date #{after_uploaded_date} not reached: #{uploaded_date}")
|
103
|
-
|
104
|
+
break
|
104
105
|
end
|
105
106
|
|
106
107
|
message = []
|
@@ -114,39 +115,37 @@ module Fastlane
|
|
114
115
|
end
|
115
116
|
|
116
117
|
UI.verbose("Build_version: #{asc_build_number} matches #{build_number}, grabbing dsym_url") if build_number
|
117
|
-
|
118
|
-
build.build_bundles&.each do |build_bundle|
|
119
|
-
download_dsym(build_bundle: build_bundle, build: build, app: app, wait_for_dsym_processing: wait_for_dsym_processing, wait_timeout: wait_timeout, output_directory: output_directory)
|
120
|
-
end
|
118
|
+
download_dsym(build: build, app: app, wait_for_dsym_processing: wait_for_dsym_processing, wait_timeout: wait_timeout, output_directory: output_directory)
|
121
119
|
end
|
122
120
|
end
|
123
121
|
|
124
|
-
def self.download_dsym(
|
122
|
+
def self.download_dsym(build: nil, app: nil, wait_for_dsym_processing: nil, wait_timeout: nil, output_directory: nil)
|
125
123
|
start = Time.now
|
126
|
-
|
124
|
+
dsym_urls = []
|
127
125
|
|
128
126
|
loop do
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
127
|
+
build_bundles = build.build_bundles.select { |b| b.includes_symbols == true }
|
128
|
+
dsym_urls = build_bundles.map(&:dsym_url).compact
|
129
|
+
|
130
|
+
break if build_bundles.count == dsym_urls.count
|
131
|
+
|
132
|
+
if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
|
133
|
+
# In some cases, AppStoreConnect does not process the dSYMs, thus no error should be thrown.
|
134
|
+
UI.message("Could not find any dSYM for #{build.version} (#{build.app_version})")
|
135
|
+
break
|
136
|
+
else
|
137
|
+
UI.message("Waiting for dSYM file to appear...")
|
138
|
+
sleep(30) unless FastlaneCore::Helper.is_test?
|
139
|
+
build = Spaceship::ConnectAPI::Build.get(build_id: build.id)
|
140
140
|
end
|
141
|
-
|
142
|
-
break
|
143
141
|
end
|
144
142
|
|
145
|
-
if
|
146
|
-
self.download(download_url, build, app, output_directory)
|
147
|
-
return if build.version
|
148
|
-
else
|
143
|
+
if dsym_urls.count == 0
|
149
144
|
UI.message("No dSYM URL for #{build.version} (#{build.app_version})")
|
145
|
+
else
|
146
|
+
dsym_urls.each do |url|
|
147
|
+
self.download(url, build, app, output_directory)
|
148
|
+
end
|
150
149
|
end
|
151
150
|
end
|
152
151
|
# rubocop:enable Metrics/PerceivedComplexity
|
@@ -75,7 +75,7 @@ module Fastlane
|
|
75
75
|
[
|
76
76
|
"If building your app requires a specific version of Xcode, you can invoke this command before using gym.",
|
77
77
|
"For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.",
|
78
|
-
"You can either manually provide a specific version using `version
|
78
|
+
"You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.",
|
79
79
|
"Using the `strict` parameter, you can either verify the full set of version numbers strictly (i.e. `11.3.1`) or only a subset of them (i.e. `11.3` or `11`)."
|
80
80
|
].join("\n")
|
81
81
|
end
|
@@ -138,6 +138,7 @@ module Fastlane
|
|
138
138
|
plist = Xcodeproj::Plist.read_from_path(plist_file)
|
139
139
|
UI.user_error!("Unable to read plist: #{plist_file}") unless plist
|
140
140
|
|
141
|
+
return '${MARKETING_VERSION}' if plist["CFBundleShortVersionString"].nil?
|
141
142
|
plist["CFBundleShortVersionString"]
|
142
143
|
end
|
143
144
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class TrainerAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
require "trainer"
|
6
|
+
|
7
|
+
params[:path] = Actions.lane_context[Actions::SharedValues::SCAN_GENERATED_PLIST_FILE] if Actions.lane_context[Actions::SharedValues::SCAN_GENERATED_PLIST_FILE]
|
8
|
+
params[:path] ||= Actions.lane_context[Actions::SharedValues::SCAN_DERIVED_DATA_PATH] if Actions.lane_context[Actions::SharedValues::SCAN_DERIVED_DATA_PATH]
|
9
|
+
|
10
|
+
fail_build = params[:fail_build]
|
11
|
+
resulting_paths = Trainer::TestParser.auto_convert(params)
|
12
|
+
resulting_paths.each do |path, test_successful|
|
13
|
+
UI.test_failure!("Unit tests failed") if fail_build && !test_successful
|
14
|
+
end
|
15
|
+
|
16
|
+
return resulting_paths
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.description
|
20
|
+
"Convert the Xcode plist log to a JUnit report"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.detail
|
24
|
+
"Convert the Xcode plist log to a JUnit report. This will raise an exception if the tests failed"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.authors
|
28
|
+
["KrauseFx"]
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.return_value
|
32
|
+
"A hash with the key being the path of the generated file, the value being if the tests were successful"
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.available_options
|
36
|
+
require 'trainer'
|
37
|
+
FastlaneCore::CommanderGenerator.new.generate(Trainer::Options.available_options)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.is_supported?(platform)
|
41
|
+
%i[ios mac].include?(platform)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.category
|
45
|
+
:testing
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -50,6 +50,10 @@ module Fastlane
|
|
50
50
|
set_build_setting(config, "PROVISIONING_PROFILE_SPECIFIER", params[:profile_name])
|
51
51
|
UI.important("Set Provisioning Profile name to: #{params[:profile_name]} for target: #{target.name} for build configuration: #{config.name}")
|
52
52
|
end
|
53
|
+
if params[:entitlements_file_path]
|
54
|
+
set_build_setting(config, "CODE_SIGN_ENTITLEMENTS", params[:entitlements_file_path])
|
55
|
+
UI.important("Set Entitlements file path to: #{params[:entitlements_file_path]} for target: #{target.name} for build configuration: #{config.name}")
|
56
|
+
end
|
53
57
|
# Since Xcode 8, this is no longer needed, you simply use PROVISIONING_PROFILE_SPECIFIER
|
54
58
|
if params[:profile_uuid]
|
55
59
|
set_build_setting(config, "PROVISIONING_PROFILE", params[:profile_uuid])
|
@@ -143,6 +147,10 @@ module Fastlane
|
|
143
147
|
env_name: "FL_CODE_SIGN_IDENTITY",
|
144
148
|
description: "Code signing identity type (iPhone Developer, iPhone Distribution)",
|
145
149
|
optional: true),
|
150
|
+
FastlaneCore::ConfigItem.new(key: :entitlements_file_path,
|
151
|
+
env_name: "FL_CODE_SIGN_ENTITLEMENTS_FILE_PATH",
|
152
|
+
description: "Path to your entitlements file",
|
153
|
+
optional: true),
|
146
154
|
FastlaneCore::ConfigItem.new(key: :profile_name,
|
147
155
|
env_name: "FL_PROVISIONING_PROFILE_SPECIFIER",
|
148
156
|
description: "Provisioning profile name to use for code signing",
|
@@ -172,6 +180,15 @@ module Fastlane
|
|
172
180
|
update_code_signing_settings(
|
173
181
|
use_automatic_signing: true,
|
174
182
|
path: "demo-project/demo/demo.xcodeproj"
|
183
|
+
)',
|
184
|
+
' # more advanced manual code signing
|
185
|
+
update_code_signing_settings(
|
186
|
+
use_automatic_signing: true,
|
187
|
+
path: "demo-project/demo/demo.xcodeproj",
|
188
|
+
team_id: "QABC123DEV",
|
189
|
+
bundle_identifier: "com.demoapp.QABC123DEV",
|
190
|
+
profile_name: "Demo App Deployment Profile",
|
191
|
+
entitlements_file_path: "Demo App/generated/New.entitlements"
|
175
192
|
)'
|
176
193
|
]
|
177
194
|
end
|
@@ -185,7 +202,7 @@ module Fastlane
|
|
185
202
|
end
|
186
203
|
|
187
204
|
def self.authors
|
188
|
-
["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons", "att55"]
|
205
|
+
["mathiasAichinger", "hjanuschka", "p4checo", "portellaa", "aeons", "att55", "abcdev"]
|
189
206
|
end
|
190
207
|
|
191
208
|
def self.is_supported?(platform)
|
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
Actions.verify_gem!('xcode-install')
|
6
6
|
|
7
7
|
version = params[:version]
|
8
|
+
|
8
9
|
xcode = Helper::XcversionHelper.find_xcode(version)
|
9
10
|
UI.user_error!("Cannot find an installed Xcode satisfying '#{version}'") if xcode.nil?
|
10
11
|
|
@@ -14,16 +15,29 @@ module Fastlane
|
|
14
15
|
ENV["DEVELOPER_DIR"] = File.join(xcode.path, "/Contents/Developer")
|
15
16
|
end
|
16
17
|
|
18
|
+
def self.read_xcode_version_file
|
19
|
+
xcode_version_paths = Dir.glob(".xcode-version")
|
20
|
+
|
21
|
+
if xcode_version_paths.first
|
22
|
+
return File.read(xcode_version_paths.first).strip
|
23
|
+
end
|
24
|
+
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
17
28
|
def self.description
|
18
29
|
"Select an Xcode to use by version specifier"
|
19
30
|
end
|
20
31
|
|
21
32
|
def self.details
|
22
|
-
|
33
|
+
[
|
34
|
+
"Finds and selects a version of an installed Xcode that best matches the provided [`Gem::Version` requirement specifier](http://www.rubydoc.info/github/rubygems/rubygems/Gem/Version)",
|
35
|
+
"You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file."
|
36
|
+
].join("\n")
|
23
37
|
end
|
24
38
|
|
25
39
|
def self.authors
|
26
|
-
["oysta"]
|
40
|
+
["oysta", "rogerluan"]
|
27
41
|
end
|
28
42
|
|
29
43
|
def self.available_options
|
@@ -31,7 +45,8 @@ module Fastlane
|
|
31
45
|
FastlaneCore::ConfigItem.new(key: :version,
|
32
46
|
env_name: "FL_XCODE_VERSION",
|
33
47
|
description: "The version of Xcode to select specified as a Gem::Version requirement string (e.g. '~> 7.1.0')",
|
34
|
-
|
48
|
+
default_value: self.read_xcode_version_file,
|
49
|
+
default_value_dynamic: true,
|
35
50
|
verify_block: Helper::XcversionHelper::Verify.method(:requirement))
|
36
51
|
]
|
37
52
|
end
|