fastlane 2.196.0 → 2.197.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/deliver/lib/assets/ScreenshotsHelp +29 -6
- data/deliver/lib/deliver/app_screenshot.rb +4 -4
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +47 -30
- 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 +11 -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 +1 -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 +1 -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/swift/formatting/Brewfile.lock.json +12 -12
- data/frameit/lib/frameit/editor.rb +16 -18
- data/frameit/lib/frameit/trim_box.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/.build.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -2
- data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +59 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- metadata +23 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 471eff584bf9045c8387208af74f22d6556be211f98a16272b726d7354d7a12e
|
4
|
+
data.tar.gz: 66f352f900ba8669eb12a16d83f31b28372173207ef2c077312a029548429efd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4fc178fa1af1418d7967d29085def077bd3887d3922c4d1308781930ced91ed858d2b3b0032ae2b9116316c32ebba6ae3ee25fd4e4380a336a4e3c8874852fd
|
7
|
+
data.tar.gz: 354898d403d3829ecbf42627d8b6fe549a78374aa2412c568a53e2dd66b84f8a220e5a480f5e0b7d92c6e89d844b53de9b25cba961d1b9b4976291061e08673e
|
data/README.md
CHANGED
@@ -35,55 +35,43 @@ 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/
|
41
|
-
</a>
|
42
|
-
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
43
|
-
</td>
|
44
|
-
<td id='jorge-revuelta-h'>
|
45
|
-
<a href='https://github.com/minuscorp'>
|
46
|
-
<img src='https://github.com/minuscorp.png' width='140px;'>
|
47
|
-
</a>
|
48
|
-
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
49
|
-
</td>
|
50
|
-
<td id='jérôme-lacoste'>
|
51
|
-
<a href='https://github.com/lacostej'>
|
52
|
-
<img src='https://github.com/lacostej.png' width='140px;'>
|
38
|
+
<td id='josh-holtz'>
|
39
|
+
<a href='https://github.com/joshdholtz'>
|
40
|
+
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
53
41
|
</a>
|
54
|
-
<h4 align='center'><a href='https://twitter.com/
|
42
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
55
43
|
</td>
|
56
|
-
<td id='
|
57
|
-
<a href='https://github.com/
|
58
|
-
<img src='https://github.com/
|
44
|
+
<td id='fumiya-nakamura'>
|
45
|
+
<a href='https://github.com/nafu'>
|
46
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
59
47
|
</a>
|
60
|
-
<h4 align='center'><a href='https://twitter.com/
|
48
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
61
49
|
</td>
|
62
|
-
<td id='
|
63
|
-
<a href='https://github.com/
|
64
|
-
<img src='https://github.com/
|
50
|
+
<td id='danielle-tomlinson'>
|
51
|
+
<a href='https://github.com/endocrimes'>
|
52
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
65
53
|
</a>
|
66
|
-
<h4 align='center'><a href='https://twitter.com/
|
54
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
67
55
|
</td>
|
68
|
-
</tr>
|
69
|
-
<tr>
|
70
56
|
<td id='maksym-grebenets'>
|
71
57
|
<a href='https://github.com/mgrebenets'>
|
72
58
|
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
73
59
|
</a>
|
74
60
|
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
75
61
|
</td>
|
76
|
-
<td id='
|
77
|
-
<a href='https://github.com/
|
78
|
-
<img src='https://github.com/
|
62
|
+
<td id='satoshi-namai'>
|
63
|
+
<a href='https://github.com/ainame'>
|
64
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
79
65
|
</a>
|
80
|
-
<h4 align='center'><a href='https://twitter.com/
|
66
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
81
67
|
</td>
|
82
|
-
|
83
|
-
<
|
84
|
-
<
|
68
|
+
</tr>
|
69
|
+
<tr>
|
70
|
+
<td id='roger-oba'>
|
71
|
+
<a href='https://github.com/rogerluan'>
|
72
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
85
73
|
</a>
|
86
|
-
<h4 align='center'><a href='https://twitter.com/
|
74
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
87
75
|
</td>
|
88
76
|
<td id='matthew-ellis'>
|
89
77
|
<a href='https://github.com/matthewellis'>
|
@@ -91,69 +79,69 @@ 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/mellis1995'>Matthew Ellis</a></h4>
|
93
81
|
</td>
|
94
|
-
<td id='
|
95
|
-
<a href='https://github.com/
|
96
|
-
<img src='https://github.com/
|
82
|
+
<td id='olivier-halligon'>
|
83
|
+
<a href='https://github.com/AliSoftware'>
|
84
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
97
85
|
</a>
|
98
|
-
<h4 align='center'><a href='https://twitter.com/
|
86
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
87
|
+
</td>
|
88
|
+
<td id='helmut-januschka'>
|
89
|
+
<a href='https://github.com/hjanuschka'>
|
90
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
91
|
+
</a>
|
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='daniel-jankowski'>
|
103
95
|
<a href='https://github.com/mollyIV'>
|
104
96
|
<img src='https://github.com/mollyIV.png' width='140px;'>
|
105
97
|
</a>
|
106
98
|
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
107
99
|
</td>
|
108
|
-
|
109
|
-
<
|
110
|
-
<img src='https://github.com/endocrimes.png' width='140px;'>
|
111
|
-
</a>
|
112
|
-
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
113
|
-
</td>
|
114
|
-
<td id='fumiya-nakamura'>
|
115
|
-
<a href='https://github.com/nafu'>
|
116
|
-
<img src='https://github.com/nafu.png' width='140px;'>
|
117
|
-
</a>
|
118
|
-
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
119
|
-
</td>
|
100
|
+
</tr>
|
101
|
+
<tr>
|
120
102
|
<td id='jan-piotrowski'>
|
121
103
|
<a href='https://github.com/janpio'>
|
122
104
|
<img src='https://github.com/janpio.png' width='140px;'>
|
123
105
|
</a>
|
124
106
|
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
125
107
|
</td>
|
126
|
-
<td id='
|
127
|
-
<a href='https://github.com/
|
128
|
-
<img src='https://github.com/
|
108
|
+
<td id='jorge-revuelta-h'>
|
109
|
+
<a href='https://github.com/minuscorp'>
|
110
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
129
111
|
</a>
|
130
|
-
<h4 align='center'><a href='https://twitter.com/
|
112
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
113
|
+
</td>
|
114
|
+
<td id='kohki-miki'>
|
115
|
+
<a href='https://github.com/giginet'>
|
116
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
117
|
+
</a>
|
118
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
119
|
+
</td>
|
120
|
+
<td id='aaron-brager'>
|
121
|
+
<a href='https://github.com/getaaron'>
|
122
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
123
|
+
</a>
|
124
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
131
125
|
</td>
|
132
|
-
</tr>
|
133
|
-
<tr>
|
134
126
|
<td id='luka-mirosevic'>
|
135
127
|
<a href='https://github.com/lmirosevic'>
|
136
128
|
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
137
129
|
</a>
|
138
130
|
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
139
131
|
</td>
|
132
|
+
</tr>
|
133
|
+
<tr>
|
140
134
|
<td id='felix-krause'>
|
141
135
|
<a href='https://github.com/KrauseFx'>
|
142
136
|
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
143
137
|
</a>
|
144
138
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
145
139
|
</td>
|
146
|
-
<td id='
|
147
|
-
<a href='https://github.com/
|
148
|
-
<img src='https://github.com/
|
149
|
-
</a>
|
150
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
151
|
-
</td>
|
152
|
-
<td id='aaron-brager'>
|
153
|
-
<a href='https://github.com/getaaron'>
|
154
|
-
<img src='https://github.com/getaaron.png' width='140px;'>
|
140
|
+
<td id='jérôme-lacoste'>
|
141
|
+
<a href='https://github.com/lacostej'>
|
142
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
155
143
|
</a>
|
156
|
-
<h4 align='center'><a href='https://twitter.com/
|
144
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
157
145
|
</td>
|
158
146
|
<td id='jimmy-dee'>
|
159
147
|
<a href='https://github.com/jdee'>
|
@@ -161,31 +149,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
161
149
|
</a>
|
162
150
|
<h4 align='center'>Jimmy Dee</h4>
|
163
151
|
</td>
|
164
|
-
|
165
|
-
<
|
166
|
-
<
|
167
|
-
<a href='https://github.com/max-ott'>
|
168
|
-
<img src='https://github.com/max-ott.png' width='140px;'>
|
152
|
+
<td id='manish-rathi'>
|
153
|
+
<a href='https://github.com/crazymanish'>
|
154
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
169
155
|
</a>
|
170
|
-
<h4 align='center'><a href='https://twitter.com/
|
156
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
171
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
|
+
</td>
|
164
|
+
</tr>
|
165
|
+
<tr>
|
172
166
|
<td id='andrew-mcburney'>
|
173
167
|
<a href='https://github.com/armcburney'>
|
174
168
|
<img src='https://github.com/armcburney.png' width='140px;'>
|
175
169
|
</a>
|
176
170
|
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
177
171
|
</td>
|
178
|
-
<td id='
|
179
|
-
<a href='https://github.com/
|
180
|
-
<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;'>
|
181
175
|
</a>
|
182
|
-
<h4 align='center'><a href='https://twitter.com/
|
176
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
183
177
|
</td>
|
184
|
-
<td id='
|
185
|
-
<a href='https://github.com/
|
186
|
-
<img src='https://github.com/
|
178
|
+
<td id='stefan-natchev'>
|
179
|
+
<a href='https://github.com/snatchev'>
|
180
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
187
181
|
</a>
|
188
|
-
<h4 align='center'><a href='https://twitter.com/
|
182
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
189
183
|
</td>
|
190
184
|
<td id='iulian-onofrei'>
|
191
185
|
<a href='https://github.com/revolter'>
|
@@ -193,6 +187,12 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
193
187
|
</a>
|
194
188
|
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
195
189
|
</td>
|
190
|
+
<td id='manu-wallner'>
|
191
|
+
<a href='https://github.com/milch'>
|
192
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
193
|
+
</a>
|
194
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
195
|
+
</td>
|
196
196
|
</tr>
|
197
197
|
</table>
|
198
198
|
|
@@ -1,7 +1,30 @@
|
|
1
|
-
|
2
|
-
The device type will automatically be recognized using the image resolution. Apple TV screenshots
|
3
|
-
should be stored in a subdirectory named appleTV with language folders inside of it. iMessage
|
4
|
-
screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage
|
5
|
-
with language folders inside of it.
|
1
|
+
## Screenshots Naming Rules
|
6
2
|
|
7
|
-
|
3
|
+
Put all screenshots you want to use inside the folder of its language (e.g. `en-US`).
|
4
|
+
The device type will automatically be recognized using the image resolution.
|
5
|
+
|
6
|
+
The screenshots can be named whatever you want, but keep in mind they are sorted
|
7
|
+
alphabetically, in a human-friendly way. See https://github.com/fastlane/fastlane/pull/18200 for more details.
|
8
|
+
|
9
|
+
### Exceptions
|
10
|
+
|
11
|
+
#### iPad Pro (3rd Gen) 12.9"
|
12
|
+
|
13
|
+
Since iPad Pro (3rd Gen) 12.9" and iPad Pro (2nd Gen) 12.9" have the same image
|
14
|
+
resolution, screenshots of the iPad Pro (3rd gen) 12.9" must contain either the
|
15
|
+
string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129`
|
16
|
+
(App Store Connect's internal naming of the display family for the 3rd generation iPad Pro)
|
17
|
+
in its filename to be assigned the correct display family and to be uploaded to
|
18
|
+
the correct screenshot slot in your app's metadata.
|
19
|
+
|
20
|
+
### Other Platforms
|
21
|
+
|
22
|
+
#### Apple TV
|
23
|
+
|
24
|
+
Apple TV screenshots should be stored in a subdirectory named `appleTV` with language
|
25
|
+
folders inside of it.
|
26
|
+
|
27
|
+
#### iMessage
|
28
|
+
|
29
|
+
iMessage screenshots, like the Apple TV ones, should also be stored in a subdirectory
|
30
|
+
named `iMessage`, with language folders inside of it.
|
@@ -322,10 +322,10 @@ module Deliver
|
|
322
322
|
|
323
323
|
def self.resolve_ipadpro_conflict_if_needed(screen_size, filename)
|
324
324
|
is_3rd_gen = [
|
325
|
-
"iPad Pro (12.9-inch) (3rd generation)", #
|
326
|
-
"iPad Pro (12.9-inch) (4th generation)", #
|
327
|
-
"
|
328
|
-
"
|
325
|
+
"iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
|
326
|
+
"iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
|
327
|
+
"IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
|
328
|
+
"ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
|
329
329
|
].any? { |key| filename.include?(key) }
|
330
330
|
if is_3rd_gen
|
331
331
|
if screen_size == ScreenSize::IOS_IPAD_PRO
|
@@ -157,7 +157,7 @@ module Deliver
|
|
157
157
|
|
158
158
|
UI.verbose('Uploading jobs are completed')
|
159
159
|
|
160
|
-
Helper.show_loading_indicator("Waiting for all the screenshots processed...")
|
160
|
+
Helper.show_loading_indicator("Waiting for all the screenshots to finish being processed...")
|
161
161
|
states = wait_for_complete(iterator)
|
162
162
|
Helper.hide_loading_indicator
|
163
163
|
retry_upload_screenshots_if_needed(iterator, states, total_number_of_screenshots, tries, localizations, screenshots_per_language)
|
@@ -694,7 +694,7 @@ In this case, default values for keywords, urls, name and release notes are used
|
|
694
694
|
|
695
695
|
[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.
|
696
696
|
|
697
|
-
To solve this a screenshot of a 12.9-inch iPad Pro (3rd generation) must contain either the string `iPad Pro (12.9-inch) (3rd generation)` 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.
|
697
|
+
To solve this 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.
|
698
698
|
|
699
699
|
## Automatically create screenshots
|
700
700
|
|
@@ -12,11 +12,18 @@ module Fastlane
|
|
12
12
|
require 'net/http'
|
13
13
|
require 'date'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
Spaceship::ConnectAPI.
|
19
|
-
|
15
|
+
if (api_token = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path]))
|
16
|
+
UI.message("Creating authorization token for App Store Connect API")
|
17
|
+
Spaceship::ConnectAPI.token = api_token
|
18
|
+
elsif !Spaceship::ConnectAPI.token.nil?
|
19
|
+
UI.message("Using existing authorization token for App Store Connect API")
|
20
|
+
else
|
21
|
+
# Team selection passed though FASTLANE_ITC_TEAM_ID and FASTLANE_ITC_TEAM_NAME environment variables
|
22
|
+
# Prompts select team if multiple teams and none specified
|
23
|
+
UI.message("Login to App Store Connect (#{params[:username]})")
|
24
|
+
Spaceship::ConnectAPI.login(params[:username], use_portal: false, use_tunes: true)
|
25
|
+
UI.message("Login successful")
|
26
|
+
end
|
20
27
|
|
21
28
|
# Get App
|
22
29
|
app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
|
@@ -68,7 +75,7 @@ module Fastlane
|
|
68
75
|
|
69
76
|
filter = { app: app.id }
|
70
77
|
filter["preReleaseVersion.platform"] = platform
|
71
|
-
build_resps = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion").all_pages
|
78
|
+
build_resps = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion,buildBundles").all_pages
|
72
79
|
builds = build_resps.flat_map(&:to_models)
|
73
80
|
|
74
81
|
builds.each do |build|
|
@@ -107,31 +114,24 @@ module Fastlane
|
|
107
114
|
end
|
108
115
|
|
109
116
|
UI.verbose("Build_version: #{asc_build_number} matches #{build_number}, grabbing dsym_url") if build_number
|
110
|
-
|
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
|
111
121
|
end
|
112
122
|
end
|
113
123
|
|
114
|
-
def self.
|
124
|
+
def self.download_dsym(build_bundle: nil, build: nil, app: nil, wait_for_dsym_processing: nil, wait_timeout: nil, output_directory: nil)
|
115
125
|
start = Time.now
|
116
126
|
download_url = nil
|
117
127
|
|
118
128
|
loop do
|
119
|
-
|
120
|
-
resp = Spaceship::Tunes.client.build_details(app_id: app.id, train: train, build_number: build_number, platform: platform)
|
121
|
-
|
122
|
-
resp['apple_id'] = app.id
|
123
|
-
build_details = Spaceship::Tunes::BuildDetails.factory(resp)
|
124
|
-
|
125
|
-
download_url = build_details.dsym_url
|
126
|
-
UI.verbose("dsym_url: #{download_url}")
|
127
|
-
rescue Spaceship::TunesClient::ITunesConnectError => ex
|
128
|
-
UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
|
129
|
-
end
|
129
|
+
download_url = build_bundle.dsym_url
|
130
130
|
|
131
131
|
unless download_url
|
132
132
|
if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
|
133
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 #{
|
134
|
+
UI.message("Could not find any dSYM for #{build.version} (#{build.app_version})")
|
135
135
|
else
|
136
136
|
UI.message("Waiting for dSYM file to appear...")
|
137
137
|
sleep(30)
|
@@ -143,10 +143,10 @@ module Fastlane
|
|
143
143
|
end
|
144
144
|
|
145
145
|
if download_url
|
146
|
-
self.download(download_url,
|
147
|
-
return if
|
146
|
+
self.download(download_url, build, app, output_directory)
|
147
|
+
return if build.version
|
148
148
|
else
|
149
|
-
UI.message("No dSYM URL for #{
|
149
|
+
UI.message("No dSYM URL for #{build.version} (#{build.app_version})")
|
150
150
|
end
|
151
151
|
end
|
152
152
|
# rubocop:enable Metrics/PerceivedComplexity
|
@@ -154,7 +154,7 @@ module Fastlane
|
|
154
154
|
def self.get_latest_build!(app_id: nil, platform: nil)
|
155
155
|
filter = { app: app_id }
|
156
156
|
filter["preReleaseVersion.platform"] = platform
|
157
|
-
latest_build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion").first
|
157
|
+
latest_build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion,buildBundles").first
|
158
158
|
|
159
159
|
if latest_build.nil?
|
160
160
|
UI.user_error!("Could not find any build for platform #{platform}") if platform
|
@@ -164,18 +164,18 @@ module Fastlane
|
|
164
164
|
return latest_build
|
165
165
|
end
|
166
166
|
|
167
|
-
def self.download(download_url,
|
167
|
+
def self.download(download_url, build, app, output_directory)
|
168
168
|
result = self.download_file(download_url)
|
169
|
-
path = write_dsym(result, bundle_id,
|
170
|
-
UI.success("🔑 Successfully downloaded dSYM file for #{
|
169
|
+
path = write_dsym(result, app.bundle_id, build.app_version, build.version, output_directory)
|
170
|
+
UI.success("🔑 Successfully downloaded dSYM file for #{build.app_version} - #{build.version} to '#{path}'")
|
171
171
|
|
172
172
|
Actions.lane_context[SharedValues::DSYM_PATHS] ||= []
|
173
173
|
Actions.lane_context[SharedValues::DSYM_PATHS] << File.expand_path(path)
|
174
174
|
|
175
|
-
unless uploaded_date.nil?
|
176
|
-
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] ||= uploaded_date
|
175
|
+
unless build.uploaded_date.nil?
|
176
|
+
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] ||= build.uploaded_date
|
177
177
|
current_latest = Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE]
|
178
|
-
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] = [current_latest, uploaded_date].max
|
178
|
+
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] = [current_latest, build.uploaded_date].max
|
179
179
|
UI.verbose("Most recent build uploaded_date #{Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE]}")
|
180
180
|
end
|
181
181
|
end
|
@@ -234,6 +234,23 @@ module Fastlane
|
|
234
234
|
user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
|
235
235
|
|
236
236
|
[
|
237
|
+
FastlaneCore::ConfigItem.new(key: :api_key_path,
|
238
|
+
env_names: ["DOWNLOAD_DSYMS_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
|
239
|
+
description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
|
240
|
+
optional: true,
|
241
|
+
conflicting_options: [:api_key],
|
242
|
+
verify_block: proc do |value|
|
243
|
+
UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
|
244
|
+
end),
|
245
|
+
FastlaneCore::ConfigItem.new(key: :api_key,
|
246
|
+
env_names: ["DOWNLOAD_DSYMS_API_KEY", "APP_STORE_CONNECT_API_KEY"],
|
247
|
+
description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
|
248
|
+
type: Hash,
|
249
|
+
default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
|
250
|
+
default_value_dynamic: true,
|
251
|
+
optional: true,
|
252
|
+
sensitive: true,
|
253
|
+
conflicting_options: [:api_key_path]),
|
237
254
|
FastlaneCore::ConfigItem.new(key: :username,
|
238
255
|
short_option: "-u",
|
239
256
|
env_name: "DOWNLOAD_DSYMS_USERNAME",
|
@@ -4013,6 +4013,8 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
|
|
4013
4013
|
Download dSYM files from App Store Connect for Bitcode apps
|
4014
4014
|
|
4015
4015
|
- parameters:
|
4016
|
+
- apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
4017
|
+
- apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
|
4016
4018
|
- username: Your Apple ID Username for App Store Connect
|
4017
4019
|
- appIdentifier: The bundle identifier of your app
|
4018
4020
|
- teamId: The ID of your App Store Connect team if you're in multiple teams
|
@@ -4037,7 +4039,9 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
|
|
4037
4039
|
```|
|
4038
4040
|
>|
|
4039
4041
|
*/
|
4040
|
-
public func downloadDsyms(
|
4042
|
+
public func downloadDsyms(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4043
|
+
apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
|
4044
|
+
username: String,
|
4041
4045
|
appIdentifier: String,
|
4042
4046
|
teamId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4043
4047
|
teamName: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
@@ -4050,6 +4054,8 @@ public func downloadDsyms(username: String,
|
|
4050
4054
|
waitForDsymProcessing: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
4051
4055
|
waitTimeout: Int = 300)
|
4052
4056
|
{
|
4057
|
+
let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
|
4058
|
+
let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
|
4053
4059
|
let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
|
4054
4060
|
let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
|
4055
4061
|
let teamIdArg = teamId.asRubyArgument(name: "team_id", type: nil)
|
@@ -4062,7 +4068,9 @@ public func downloadDsyms(username: String,
|
|
4062
4068
|
let outputDirectoryArg = outputDirectory.asRubyArgument(name: "output_directory", type: nil)
|
4063
4069
|
let waitForDsymProcessingArg = waitForDsymProcessing.asRubyArgument(name: "wait_for_dsym_processing", type: nil)
|
4064
4070
|
let waitTimeoutArg = RubyCommand.Argument(name: "wait_timeout", value: waitTimeout, type: nil)
|
4065
|
-
let array: [RubyCommand.Argument?] = [
|
4071
|
+
let array: [RubyCommand.Argument?] = [apiKeyPathArg,
|
4072
|
+
apiKeyArg,
|
4073
|
+
usernameArg,
|
4066
4074
|
appIdentifierArg,
|
4067
4075
|
teamIdArg,
|
4068
4076
|
teamNameArg,
|
@@ -13242,4 +13250,4 @@ public let snapshotfile = Snapshotfile()
|
|
13242
13250
|
|
13243
13251
|
// Please don't remove the lines below
|
13244
13252
|
// They are used to detect outdated files
|
13245
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13253
|
+
// FastlaneRunnerAPIVersion [0.9.139]
|
@@ -2,30 +2,30 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.48.
|
5
|
+
"version": "0.48.17",
|
6
6
|
"bottle": {
|
7
7
|
"rebuild": 0,
|
8
8
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
9
9
|
"files": {
|
10
10
|
"arm64_big_sur": {
|
11
11
|
"cellar": ":any_skip_relocation",
|
12
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
13
|
-
"sha256": "
|
12
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:e19dbc72ddf213203e940708f3de6d9ca9c88663b5176494d04b4c418e16954f",
|
13
|
+
"sha256": "e19dbc72ddf213203e940708f3de6d9ca9c88663b5176494d04b4c418e16954f"
|
14
14
|
},
|
15
15
|
"big_sur": {
|
16
16
|
"cellar": ":any_skip_relocation",
|
17
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
18
|
-
"sha256": "
|
17
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:90056a4e3b03ef31cecfb5b9e278a44bea2abecdd26a202d00bc390dfbbeb352",
|
18
|
+
"sha256": "90056a4e3b03ef31cecfb5b9e278a44bea2abecdd26a202d00bc390dfbbeb352"
|
19
19
|
},
|
20
20
|
"catalina": {
|
21
21
|
"cellar": ":any_skip_relocation",
|
22
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
23
|
-
"sha256": "
|
22
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:9647fdbfed2e7e2361974a5bfb99be4a112d914bd3e582afb4cdf7dc81e44cbf",
|
23
|
+
"sha256": "9647fdbfed2e7e2361974a5bfb99be4a112d914bd3e582afb4cdf7dc81e44cbf"
|
24
24
|
},
|
25
25
|
"mojave": {
|
26
26
|
"cellar": ":any_skip_relocation",
|
27
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
28
|
-
"sha256": "
|
27
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:83231c218cca811795688e175d88ac4584d1c424566926f9d6ed36e9dbdfed75",
|
28
|
+
"sha256": "83231c218cca811795688e175d88ac4584d1c424566926f9d6ed36e9dbdfed75"
|
29
29
|
}
|
30
30
|
}
|
31
31
|
}
|
@@ -43,9 +43,9 @@
|
|
43
43
|
"macOS": "10.15.7"
|
44
44
|
},
|
45
45
|
"big_sur": {
|
46
|
-
"HOMEBREW_VERSION": "3.2.
|
47
|
-
"HOMEBREW_PREFIX": "/
|
48
|
-
"Homebrew/homebrew-core": "
|
46
|
+
"HOMEBREW_VERSION": "3.2.17",
|
47
|
+
"HOMEBREW_PREFIX": "/opt/homebrew",
|
48
|
+
"Homebrew/homebrew-core": "d975bb4c6f50e8cafd6df9fc7f2ebf04d22ffa41",
|
49
49
|
"CLT": "13.0.0.0.1.1630607135",
|
50
50
|
"Xcode": "13.0",
|
51
51
|
"macOS": "11.6"
|
@@ -467,26 +467,24 @@ module Frameit
|
|
467
467
|
# Get matching trim box:
|
468
468
|
trim_box = trim_boxes[key]
|
469
469
|
|
470
|
-
#
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
end
|
470
|
+
# Adjust the trim box based on top_vertical_trim_offset and bottom_vertical_trim_offset to maintain the text baseline:
|
471
|
+
# Determine the trim area by maintaining the same vertical top offset based on the smallest value from all trim boxes (top_vertical_trim_offset).
|
472
|
+
# When the vertical top offset is larger than the smallest vertical top offset, the trim box needs to be adjusted:
|
473
|
+
if trim_box.offset_y > top_vertical_trim_offset
|
474
|
+
# Increase the height of the trim box with the difference in vertical top offset:
|
475
|
+
trim_box.height += trim_box.offset_y - top_vertical_trim_offset
|
476
|
+
# Change the vertical top offset to match that of the others:
|
477
|
+
trim_box.offset_y = top_vertical_trim_offset
|
478
|
+
|
479
|
+
UI.verbose("Trim box for key \"#{key}\" is adjusted to align top: #{trim_box.json_string_format}")
|
480
|
+
end
|
482
481
|
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
482
|
+
# Check if the height needs to be adjusted to reach the bottom offset:
|
483
|
+
if (trim_box.offset_y + trim_box.height) < bottom_vertical_trim_offset
|
484
|
+
# Set the height of the trim box to the difference between vertical bottom and top offset:
|
485
|
+
trim_box.height = bottom_vertical_trim_offset - trim_box.offset_y
|
487
486
|
|
488
|
-
|
489
|
-
end
|
487
|
+
UI.verbose("Trim box for key \"#{key}\" is adjusted to align bottom: #{trim_box.json_string_format}")
|
490
488
|
end
|
491
489
|
|
492
490
|
# Crop image with (adjusted) trim box parameters in MiniMagick string format:
|
@@ -31,5 +31,11 @@ module Frameit
|
|
31
31
|
# Convert trim box parameters to string with syntax: "<width>x<height>+<offset_x>+<offset_y>":
|
32
32
|
return "#{@width}x#{@height}+#{@offset_x}+#{@offset_y}"
|
33
33
|
end
|
34
|
+
|
35
|
+
# Get the trimbox parameters in a human readable JSON string format
|
36
|
+
def json_string_format
|
37
|
+
# Create a JSON string from the trim box parameters:
|
38
|
+
return "{\"width\" : #{@width}, \"height\" : #{@height} , \"offset_x\" : #{@offset_x}, \"offset_y\" : #{@offset_y}}"
|
39
|
+
end
|
34
40
|
end
|
35
41
|
end
|
Binary file
|
@@ -19,6 +19,7 @@ module Spaceship
|
|
19
19
|
attr_accessor :beta_build_metrics
|
20
20
|
attr_accessor :beta_build_localizations
|
21
21
|
attr_accessor :build_beta_detail
|
22
|
+
attr_accessor :build_bundles
|
22
23
|
attr_accessor :pre_release_version
|
23
24
|
attr_accessor :individual_testers
|
24
25
|
|
@@ -38,10 +39,11 @@ module Spaceship
|
|
38
39
|
"betaBuildLocalizations" => "beta_build_localizations",
|
39
40
|
"buildBetaDetail" => "build_beta_detail",
|
40
41
|
"preReleaseVersion" => "pre_release_version",
|
41
|
-
"individualTesters" => "individual_testers"
|
42
|
+
"individualTesters" => "individual_testers",
|
43
|
+
"buildBundles" => "build_bundles"
|
42
44
|
})
|
43
45
|
|
44
|
-
ESSENTIAL_INCLUDES = "app,buildBetaDetail,preReleaseVersion"
|
46
|
+
ESSENTIAL_INCLUDES = "app,buildBetaDetail,preReleaseVersion,buildBundles"
|
45
47
|
|
46
48
|
module ProcessingState
|
47
49
|
PROCESSING = "PROCESSING"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class BuildBundle
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :bundle_id
|
8
|
+
attr_accessor :bundle_type
|
9
|
+
attr_accessor :sdk_build
|
10
|
+
attr_accessor :platform_build
|
11
|
+
attr_accessor :file_name
|
12
|
+
attr_accessor :has_siri_kit
|
13
|
+
attr_accessor :has_on_demand_resources
|
14
|
+
attr_accessor :is_newsstand
|
15
|
+
attr_accessor :has_prerendered_icon
|
16
|
+
attr_accessor :uses_location_services
|
17
|
+
attr_accessor :is_ios_build_mac_app_store_compatible
|
18
|
+
attr_accessor :includes_symbols
|
19
|
+
attr_accessor :dsym_url
|
20
|
+
attr_accessor :supported_architectures
|
21
|
+
attr_accessor :required_capabilities
|
22
|
+
attr_accessor :device_protocols
|
23
|
+
attr_accessor :locales
|
24
|
+
attr_accessor :entitlements
|
25
|
+
attr_accessor :tracks_users
|
26
|
+
|
27
|
+
module BundleType
|
28
|
+
APP = "APP"
|
29
|
+
# APP_CLIP might be in here as well
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_mapping({
|
33
|
+
"bundleId" => "bundle_id",
|
34
|
+
"bundleType" => "bundle_type",
|
35
|
+
"sdkBuild" => "sdk_build",
|
36
|
+
"platformBuild" => "platform_build",
|
37
|
+
"fileName" => "file_name",
|
38
|
+
"hasSirikit" => "has_siri_kit",
|
39
|
+
"hasOnDemandResources" => "has_on_demand_resources",
|
40
|
+
"isNewsstand" => "is_newsstand",
|
41
|
+
"hasPrerenderedIcon" => "has_prerendered_icon",
|
42
|
+
"usesLocationServices" => "uses_location_services",
|
43
|
+
"isIosBuildMacAppStoreCompatible" => "is_ios_build_mac_app_store_compatible",
|
44
|
+
"includesSymbols" => "includes_symbols",
|
45
|
+
"dSYMUrl" => "dsym_url",
|
46
|
+
"supportedArchitectures" => "supported_architectures",
|
47
|
+
"requiredCapabilities" => "required_capabilities",
|
48
|
+
"deviceProtocols" => "device_protocols",
|
49
|
+
"locales" => "locales",
|
50
|
+
"entitlements" => "entitlements",
|
51
|
+
"tracksUsers" => "tracks_users"
|
52
|
+
})
|
53
|
+
|
54
|
+
def self.type
|
55
|
+
return "buildBundles"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -32,6 +32,7 @@ require 'spaceship/connect_api/models/beta_tester_metric'
|
|
32
32
|
require 'spaceship/connect_api/models/build'
|
33
33
|
require 'spaceship/connect_api/models/build_delivery'
|
34
34
|
require 'spaceship/connect_api/models/build_beta_detail'
|
35
|
+
require 'spaceship/connect_api/models/build_bundle'
|
35
36
|
require 'spaceship/connect_api/models/custom_app_organization'
|
36
37
|
require 'spaceship/connect_api/models/custom_app_user'
|
37
38
|
require 'spaceship/connect_api/models/pre_release_version'
|
metadata
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.197.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Ott
|
8
|
-
- Jérôme Lacoste
|
9
|
-
- Luka Mirosevic
|
10
|
-
- Daniel Jankowski
|
11
|
-
- Satoshi Namai
|
12
|
-
- Matthew Ellis
|
13
|
-
- Jan Piotrowski
|
14
|
-
- Andrew McBurney
|
15
|
-
- Iulian Onofrei
|
16
|
-
- Manish Rathi
|
17
|
-
- Kohki Miki
|
18
8
|
- Danielle Tomlinson
|
19
|
-
- Roger Oba
|
20
|
-
- Fumiya Nakamura
|
21
|
-
- Felix Krause
|
22
|
-
- Aaron Brager
|
23
9
|
- Jimmy Dee
|
24
|
-
-
|
25
|
-
- Jorge Revuelta H
|
26
|
-
- Olivier Halligon
|
27
|
-
- Josh Holtz
|
10
|
+
- Manish Rathi
|
28
11
|
- Manu Wallner
|
29
|
-
- Joshua Liebowitz
|
30
12
|
- Maksym Grebenets
|
13
|
+
- Iulian Onofrei
|
14
|
+
- Felix Krause
|
15
|
+
- Helmut Januschka
|
16
|
+
- Jan Piotrowski
|
31
17
|
- Stefan Natchev
|
18
|
+
- Luka Mirosevic
|
19
|
+
- Joshua Liebowitz
|
20
|
+
- Fumiya Nakamura
|
21
|
+
- Kohki Miki
|
22
|
+
- Satoshi Namai
|
23
|
+
- Jérôme Lacoste
|
24
|
+
- Daniel Jankowski
|
25
|
+
- Aaron Brager
|
26
|
+
- Olivier Halligon
|
27
|
+
- Matthew Ellis
|
28
|
+
- Roger Oba
|
29
|
+
- Andrew McBurney
|
30
|
+
- Josh Holtz
|
31
|
+
- Jorge Revuelta H
|
32
32
|
autorequire:
|
33
33
|
bindir: bin
|
34
34
|
cert_chain: []
|
35
|
-
date: 2021-10-
|
35
|
+
date: 2021-10-22 00:00:00.000000000 Z
|
36
36
|
dependencies:
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: xcodeproj
|
@@ -1654,6 +1654,7 @@ files:
|
|
1654
1654
|
- spaceship/lib/spaceship/connect_api/client.rb
|
1655
1655
|
- spaceship/lib/spaceship/connect_api/file_uploader.rb
|
1656
1656
|
- spaceship/lib/spaceship/connect_api/model.rb
|
1657
|
+
- spaceship/lib/spaceship/connect_api/models/.build.rb.swp
|
1657
1658
|
- spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
|
1658
1659
|
- spaceship/lib/spaceship/connect_api/models/app.rb
|
1659
1660
|
- spaceship/lib/spaceship/connect_api/models/app_category.rb
|
@@ -1691,6 +1692,7 @@ files:
|
|
1691
1692
|
- spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb
|
1692
1693
|
- spaceship/lib/spaceship/connect_api/models/build.rb
|
1693
1694
|
- spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb
|
1695
|
+
- spaceship/lib/spaceship/connect_api/models/build_bundle.rb
|
1694
1696
|
- spaceship/lib/spaceship/connect_api/models/build_delivery.rb
|
1695
1697
|
- spaceship/lib/spaceship/connect_api/models/bundle_id.rb
|
1696
1698
|
- spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb
|