fastlane 2.203.0 → 2.204.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 +96 -96
- data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
- data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
- data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
- data/fastlane/lib/fastlane/swift_runner_upgrader.rb +55 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Atomic.swift +150 -0
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +31 -7
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +2 -2
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +6 -2
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/Runner.swift +9 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +2 -2
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
- data/fastlane/swift/SocketClient.swift +5 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +8 -8
- data/fastlane/swift/upgrade_manifest.json +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
- data/match/lib/match/nuke.rb +33 -9
- data/match/lib/match/options.rb +5 -0
- data/match/lib/match/storage/s3_storage.rb +3 -3
- data/pilot/lib/pilot/build_manager.rb +17 -7
- data/pilot/lib/pilot/options.rb +6 -1
- data/scan/lib/scan/runner.rb +4 -4
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -1
- metadata +20 -22
- data/fastlane_core/lib/fastlane_core/.helper.rb.swp +0 -0
- data/scan/lib/scan/.detect_values.rb.swp +0 -0
- data/scan/lib/scan/.runner.rb.swp +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c60db14f0042e080f4e2d72b69cff3f15d87a386496dc500854e04f22cba9af
|
|
4
|
+
data.tar.gz: ffa77b289f662bbf7bee76e6d50f070ce3f80e7bdcae09b442a5055d298a3f01
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e381f72be29e92998c78b611c64bee3238845fe9c37648dab6f63064aee8f052d4f0dd9186057ff8d293bfb477ec3cf11baef8b90d3ac229a848b1eef6f681f
|
|
7
|
+
data.tar.gz: 611a72c173c79ada3db1a1eef30dc0316b9afafd2361179a00a7e3ced7700e3bfb263db499779f4db7d41fe4e50ce88c37221d07a2004c6d1c72fd08cb5bbab8
|
data/README.md
CHANGED
|
@@ -35,43 +35,55 @@ 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='felix-krause'>
|
|
39
|
+
<a href='https://github.com/KrauseFx'>
|
|
40
|
+
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
|
41
41
|
</a>
|
|
42
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
42
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
43
43
|
</td>
|
|
44
|
-
<td id='
|
|
45
|
-
<a href='https://github.com/
|
|
46
|
-
<img src='https://github.com/
|
|
44
|
+
<td id='jimmy-dee'>
|
|
45
|
+
<a href='https://github.com/jdee'>
|
|
46
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
|
47
47
|
</a>
|
|
48
|
-
<h4 align='center'
|
|
48
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
49
49
|
</td>
|
|
50
|
-
<td id='
|
|
51
|
-
<a href='https://github.com/
|
|
52
|
-
<img src='https://github.com/
|
|
50
|
+
<td id='satoshi-namai'>
|
|
51
|
+
<a href='https://github.com/ainame'>
|
|
52
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
|
53
53
|
</a>
|
|
54
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
54
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
55
55
|
</td>
|
|
56
|
-
<td id='
|
|
57
|
-
<a href='https://github.com/
|
|
58
|
-
<img src='https://github.com/
|
|
56
|
+
<td id='olivier-halligon'>
|
|
57
|
+
<a href='https://github.com/AliSoftware'>
|
|
58
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
59
59
|
</a>
|
|
60
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
60
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
61
|
+
</td>
|
|
62
|
+
<td id='iulian-onofrei'>
|
|
63
|
+
<a href='https://github.com/revolter'>
|
|
64
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
|
65
|
+
</a>
|
|
66
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
61
67
|
</td>
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
62
70
|
<td id='stefan-natchev'>
|
|
63
71
|
<a href='https://github.com/snatchev'>
|
|
64
72
|
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
65
73
|
</a>
|
|
66
74
|
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
67
75
|
</td>
|
|
68
|
-
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
<a href='https://github.com/AliSoftware'>
|
|
72
|
-
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
76
|
+
<td id='jorge-revuelta-h'>
|
|
77
|
+
<a href='https://github.com/minuscorp'>
|
|
78
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
|
73
79
|
</a>
|
|
74
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
80
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
81
|
+
</td>
|
|
82
|
+
<td id='aaron-brager'>
|
|
83
|
+
<a href='https://github.com/getaaron'>
|
|
84
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
|
85
|
+
</a>
|
|
86
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
75
87
|
</td>
|
|
76
88
|
<td id='łukasz-grabowski'>
|
|
77
89
|
<a href='https://github.com/lucgrabowski'>
|
|
@@ -79,37 +91,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
79
91
|
</a>
|
|
80
92
|
<h4 align='center'>Łukasz Grabowski</h4>
|
|
81
93
|
</td>
|
|
82
|
-
<td id='
|
|
83
|
-
<a href='https://github.com/
|
|
84
|
-
<img src='https://github.com/
|
|
85
|
-
</a>
|
|
86
|
-
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
87
|
-
</td>
|
|
88
|
-
<td id='jimmy-dee'>
|
|
89
|
-
<a href='https://github.com/jdee'>
|
|
90
|
-
<img src='https://github.com/jdee.png' width='140px;'>
|
|
91
|
-
</a>
|
|
92
|
-
<h4 align='center'>Jimmy Dee</h4>
|
|
93
|
-
</td>
|
|
94
|
-
<td id='jorge-revuelta-h'>
|
|
95
|
-
<a href='https://github.com/minuscorp'>
|
|
96
|
-
<img src='https://github.com/minuscorp.png' width='140px;'>
|
|
94
|
+
<td id='maksym-grebenets'>
|
|
95
|
+
<a href='https://github.com/mgrebenets'>
|
|
96
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
97
97
|
</a>
|
|
98
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
98
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
99
99
|
</td>
|
|
100
100
|
</tr>
|
|
101
101
|
<tr>
|
|
102
|
-
<td id='
|
|
103
|
-
<a href='https://github.com/
|
|
104
|
-
<img src='https://github.com/
|
|
102
|
+
<td id='daniel-jankowski'>
|
|
103
|
+
<a href='https://github.com/mollyIV'>
|
|
104
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
|
105
105
|
</a>
|
|
106
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
106
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
107
107
|
</td>
|
|
108
|
-
<td id='
|
|
109
|
-
<a href='https://github.com/
|
|
110
|
-
<img src='https://github.com/
|
|
108
|
+
<td id='max-ott'>
|
|
109
|
+
<a href='https://github.com/max-ott'>
|
|
110
|
+
<img src='https://github.com/max-ott.png' width='140px;'>
|
|
111
111
|
</a>
|
|
112
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
112
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
113
|
+
</td>
|
|
114
|
+
<td id='matthew-ellis'>
|
|
115
|
+
<a href='https://github.com/matthewellis'>
|
|
116
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
|
117
|
+
</a>
|
|
118
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
113
119
|
</td>
|
|
114
120
|
<td id='josh-holtz'>
|
|
115
121
|
<a href='https://github.com/joshdholtz'>
|
|
@@ -123,83 +129,77 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
123
129
|
</a>
|
|
124
130
|
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
125
131
|
</td>
|
|
126
|
-
<td id='satoshi-namai'>
|
|
127
|
-
<a href='https://github.com/ainame'>
|
|
128
|
-
<img src='https://github.com/ainame.png' width='140px;'>
|
|
129
|
-
</a>
|
|
130
|
-
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
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='andrew-mcburney'>
|
|
135
|
+
<a href='https://github.com/armcburney'>
|
|
136
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
137
137
|
</a>
|
|
138
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
138
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
139
139
|
</td>
|
|
140
|
-
<td id='
|
|
141
|
-
<a href='https://github.com/
|
|
142
|
-
<img src='https://github.com/
|
|
140
|
+
<td id='jan-piotrowski'>
|
|
141
|
+
<a href='https://github.com/janpio'>
|
|
142
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
|
143
143
|
</a>
|
|
144
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
144
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
145
145
|
</td>
|
|
146
|
-
<td id='
|
|
147
|
-
<a href='https://github.com/
|
|
148
|
-
<img src='https://github.com/
|
|
146
|
+
<td id='helmut-januschka'>
|
|
147
|
+
<a href='https://github.com/hjanuschka'>
|
|
148
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
|
149
149
|
</a>
|
|
150
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
150
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
151
151
|
</td>
|
|
152
|
-
<td id='
|
|
153
|
-
<a href='https://github.com/
|
|
154
|
-
<img src='https://github.com/
|
|
152
|
+
<td id='danielle-tomlinson'>
|
|
153
|
+
<a href='https://github.com/endocrimes'>
|
|
154
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
|
155
155
|
</a>
|
|
156
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
156
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
157
157
|
</td>
|
|
158
|
-
<td id='
|
|
159
|
-
<a href='https://github.com/
|
|
160
|
-
<img src='https://github.com/
|
|
158
|
+
<td id='fumiya-nakamura'>
|
|
159
|
+
<a href='https://github.com/nafu'>
|
|
160
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
|
161
161
|
</a>
|
|
162
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
162
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</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='manu-wallner'>
|
|
167
|
+
<a href='https://github.com/milch'>
|
|
168
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
|
169
169
|
</a>
|
|
170
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
170
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
171
171
|
</td>
|
|
172
|
-
<td id='
|
|
173
|
-
<a href='https://github.com/
|
|
174
|
-
<img src='https://github.com/
|
|
172
|
+
<td id='manish-rathi'>
|
|
173
|
+
<a href='https://github.com/crazymanish'>
|
|
174
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
175
175
|
</a>
|
|
176
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
176
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
|
177
177
|
</td>
|
|
178
|
-
<td id='
|
|
179
|
-
<a href='https://github.com/
|
|
180
|
-
<img src='https://github.com/
|
|
178
|
+
<td id='roger-oba'>
|
|
179
|
+
<a href='https://github.com/rogerluan'>
|
|
180
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
|
181
181
|
</a>
|
|
182
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
182
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
|
183
183
|
</td>
|
|
184
|
-
<td id='
|
|
185
|
-
<a href='https://github.com/
|
|
186
|
-
<img src='https://github.com/
|
|
184
|
+
<td id='kohki-miki'>
|
|
185
|
+
<a href='https://github.com/giginet'>
|
|
186
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
|
187
187
|
</a>
|
|
188
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
188
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
189
189
|
</td>
|
|
190
|
-
<td id='
|
|
191
|
-
<a href='https://github.com/
|
|
192
|
-
<img src='https://github.com/
|
|
190
|
+
<td id='luka-mirosevic'>
|
|
191
|
+
<a href='https://github.com/lmirosevic'>
|
|
192
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
193
193
|
</a>
|
|
194
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
194
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
195
195
|
</td>
|
|
196
196
|
</tr>
|
|
197
197
|
<tr>
|
|
198
|
-
<td id='
|
|
199
|
-
<a href='https://github.com/
|
|
200
|
-
<img src='https://github.com/
|
|
198
|
+
<td id='joshua-liebowitz'>
|
|
199
|
+
<a href='https://github.com/taquitos'>
|
|
200
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
201
201
|
</a>
|
|
202
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
202
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
203
203
|
</td>
|
|
204
204
|
</table>
|
|
205
205
|
|
|
@@ -9,8 +9,8 @@ module Fastlane
|
|
|
9
9
|
|
|
10
10
|
fail_build = params[:fail_build]
|
|
11
11
|
resulting_paths = Trainer::TestParser.auto_convert(params)
|
|
12
|
-
resulting_paths.each do |path,
|
|
13
|
-
UI.test_failure!("Unit tests failed") if fail_build && !
|
|
12
|
+
resulting_paths.each do |path, test_results|
|
|
13
|
+
UI.test_failure!("Unit tests failed") if fail_build && !test_results[:successful]
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
return resulting_paths
|
|
@@ -101,7 +101,7 @@ module Fastlane
|
|
|
101
101
|
UI.user_error!("Mismatched team_identifier. Required: '#{params[:team_identifier]}'; Found: '#{values['team_identifier']}'") unless params[:team_identifier] == values['team_identifier']
|
|
102
102
|
end
|
|
103
103
|
if params[:team_name]
|
|
104
|
-
UI.user_error!("Mismatched team_name. Required: '#{params[:team_name]}'; Found: 'values['team_name']'") unless params[:team_name] == values['team_name']
|
|
104
|
+
UI.user_error!("Mismatched team_name. Required: '#{params[:team_name]}'; Found: '#{values['team_name']}'") unless params[:team_name] == values['team_name']
|
|
105
105
|
end
|
|
106
106
|
if params[:app_name]
|
|
107
107
|
UI.user_error!("Mismatched app_name. Required: '#{params[:app_name]}'; Found: '#{values['app_name']}'") unless params[:app_name] == values['app_name']
|
|
@@ -367,7 +367,7 @@ func parseInt(fromString: String, function: String = #function) -> Int {
|
|
|
367
367
|
protocol_content_array = []
|
|
368
368
|
protocol_name = tool_swift_function.protocol_name
|
|
369
369
|
|
|
370
|
-
protocol_content_array << "public protocol #{protocol_name}:
|
|
370
|
+
protocol_content_array << "public protocol #{protocol_name}: AnyObject {"
|
|
371
371
|
protocol_content_array += tool_swift_function.swift_vars
|
|
372
372
|
protocol_content_array << "}"
|
|
373
373
|
protocol_content_array << ""
|
|
@@ -33,7 +33,7 @@ module Fastlane
|
|
|
33
33
|
# wait on socket_thread to be in ready state, then start the runner thread
|
|
34
34
|
self.cruise_swift_lane_in_thread(lane, parameters, swift_server_port)
|
|
35
35
|
|
|
36
|
-
socket_thread.
|
|
36
|
+
socket_thread.value
|
|
37
37
|
rescue Exception => ex # rubocop:disable Lint/RescueException
|
|
38
38
|
e = ex
|
|
39
39
|
end
|
|
@@ -74,7 +74,10 @@ module Fastlane
|
|
|
74
74
|
|
|
75
75
|
def self.display_lanes
|
|
76
76
|
self.ensure_runner_built!
|
|
77
|
-
Actions.sh(%(#{FastlaneCore::FastlaneFolder.swift_runner_path} lanes))
|
|
77
|
+
return_value = Actions.sh(%(#{FastlaneCore::FastlaneFolder.swift_runner_path} lanes))
|
|
78
|
+
if FastlaneCore::Globals.verbose?
|
|
79
|
+
UI.message("runner output: ".yellow + return_value)
|
|
80
|
+
end
|
|
78
81
|
end
|
|
79
82
|
|
|
80
83
|
def self.cruise_swift_lane_in_thread(lane, parameters = nil, swift_server_port)
|
|
@@ -94,7 +97,12 @@ module Fastlane
|
|
|
94
97
|
parameter_string += " swiftServerPort #{swift_server_port}"
|
|
95
98
|
|
|
96
99
|
return Thread.new do
|
|
97
|
-
|
|
100
|
+
if FastlaneCore::Globals.verbose?
|
|
101
|
+
return_value = Actions.sh(%(#{FastlaneCore::FastlaneFolder.swift_runner_path} lane #{lane}#{parameter_string}))
|
|
102
|
+
UI.message("runner output: ".yellow + return_value)
|
|
103
|
+
else
|
|
104
|
+
Actions.sh(%(#{FastlaneCore::FastlaneFolder.swift_runner_path} lane #{lane}#{parameter_string} > /dev/null))
|
|
105
|
+
end
|
|
98
106
|
end
|
|
99
107
|
end
|
|
100
108
|
|
|
@@ -45,7 +45,9 @@ module Fastlane
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def upgrade_if_needed!(dry_run: false)
|
|
48
|
-
upgraded =
|
|
48
|
+
upgraded = add_missing_flags!(dry_run: dry_run)
|
|
49
|
+
upgraded = add_missing_copy_phase!(dry_run: dry_run) || upgraded
|
|
50
|
+
upgraded = add_missing_groups_and_files!(dry_run: dry_run) || upgraded
|
|
49
51
|
upgraded = upgrade_files!(dry_run: dry_run) || upgraded
|
|
50
52
|
upgraded = add_new_files_to_groups! || upgraded
|
|
51
53
|
|
|
@@ -208,5 +210,57 @@ module Fastlane
|
|
|
208
210
|
|
|
209
211
|
return true # yup, we definitely updated groups
|
|
210
212
|
end
|
|
213
|
+
|
|
214
|
+
# adds build_settings flags to fastlane_runner_target
|
|
215
|
+
def add_missing_flags!(dry_run: false)
|
|
216
|
+
# Check if upgrade is needed
|
|
217
|
+
# If fastlane build settings exists already, we don't need any more changes to the Xcode project
|
|
218
|
+
self.fastlane_runner_target.build_configurations.each { |config|
|
|
219
|
+
return false if dry_run && config.build_settings["CODE_SIGN_IDENTITY"].nil?
|
|
220
|
+
return false if dry_run && config.build_settings["MACOSX_DEPLOYMENT_TARGET"].nil?
|
|
221
|
+
}
|
|
222
|
+
return true if dry_run
|
|
223
|
+
|
|
224
|
+
# Proceed to upgrade
|
|
225
|
+
self.fastlane_runner_target.build_configurations.each { |config|
|
|
226
|
+
config.build_settings["CODE_SIGN_IDENTITY"] = "-"
|
|
227
|
+
config.build_settings["MACOSX_DEPLOYMENT_TARGET"] = "10.12"
|
|
228
|
+
}
|
|
229
|
+
target_project.save
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
# adds new copy files build phase to fastlane_runner_target
|
|
233
|
+
def add_missing_copy_phase!(dry_run: false)
|
|
234
|
+
# Check if upgrade is needed
|
|
235
|
+
# If fastlane copy files build phase exists already, we don't need any more changes to the Xcode project
|
|
236
|
+
phase_copy_sign = self.fastlane_runner_target.copy_files_build_phases.select { |phase_copy| phase_copy.name == "FastlaneRunnerCopySigned" }.first
|
|
237
|
+
|
|
238
|
+
old_phase_copy_sign = self.fastlane_runner_target.shell_script_build_phases.select { |phase_copy| phase_copy.shell_script == "cd \"${SRCROOT}\"\ncd ../..\ncp \"${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\" .\n" }.first
|
|
239
|
+
unless phase_copy_sign
|
|
240
|
+
return false if dry_run
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
return true if dry_run
|
|
244
|
+
|
|
245
|
+
# Proceed to upgrade
|
|
246
|
+
old_phase_copy_sign.remove_from_project unless old_phase_copy_sign.nil?
|
|
247
|
+
|
|
248
|
+
unless phase_copy_sign
|
|
249
|
+
# Create a copy files build phase
|
|
250
|
+
phase_copy_sign = self.fastlane_runner_target.new_copy_files_build_phase("FastlaneRunnerCopySigned")
|
|
251
|
+
phase_copy_sign.dst_path = "$SRCROOT/../.."
|
|
252
|
+
phase_copy_sign.dst_subfolder_spec = "0"
|
|
253
|
+
phase_copy_sign.run_only_for_deployment_postprocessing = "0"
|
|
254
|
+
targetBinaryReference = self.fastlane_runner_target.product_reference
|
|
255
|
+
phase_copy_sign.add_file_reference(targetBinaryReference)
|
|
256
|
+
|
|
257
|
+
# Set "Code sign on copy" flag on Xcode for fastlane_runner_target
|
|
258
|
+
targetBinaryReference.build_files.each { |target_binary_build_file_reference|
|
|
259
|
+
target_binary_build_file_reference.settings = { "ATTRIBUTES": ["CodeSignOnCopy"] }
|
|
260
|
+
}
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
target_project.save
|
|
264
|
+
end
|
|
211
265
|
end
|
|
212
266
|
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// Atomic.swift
|
|
2
|
+
// Copyright (c) 2022 FastlaneTools
|
|
3
|
+
|
|
4
|
+
import Foundation
|
|
5
|
+
|
|
6
|
+
protocol DictionaryProtocol: class {
|
|
7
|
+
associatedtype Key: Hashable
|
|
8
|
+
associatedtype Value
|
|
9
|
+
|
|
10
|
+
subscript(_: Key) -> Value? { get set }
|
|
11
|
+
|
|
12
|
+
@discardableResult
|
|
13
|
+
func removeValue(forKey key: Key) -> Value?
|
|
14
|
+
|
|
15
|
+
func get(_ key: Key) -> Value?
|
|
16
|
+
func set(_ key: Key, value: Value?)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
extension DictionaryProtocol {
|
|
20
|
+
subscript(_ key: Key) -> Value? {
|
|
21
|
+
get {
|
|
22
|
+
get(key)
|
|
23
|
+
}
|
|
24
|
+
set {
|
|
25
|
+
set(key, value: newValue)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
protocol LockProtocol: DictionaryProtocol {
|
|
31
|
+
associatedtype Lock
|
|
32
|
+
|
|
33
|
+
var _lock: Lock { get set }
|
|
34
|
+
|
|
35
|
+
func lock()
|
|
36
|
+
func unlock()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protocol AnyLock {}
|
|
40
|
+
|
|
41
|
+
extension UnsafeMutablePointer: AnyLock {
|
|
42
|
+
@available(macOS, deprecated: 10.12)
|
|
43
|
+
static func make() -> Self where Pointee == OSSpinLock {
|
|
44
|
+
let spin = UnsafeMutablePointer<OSSpinLock>.allocate(capacity: 1)
|
|
45
|
+
spin.initialize(to: OS_SPINLOCK_INIT)
|
|
46
|
+
return spin
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@available(macOS, introduced: 10.12)
|
|
50
|
+
static func make() -> Self where Pointee == os_unfair_lock {
|
|
51
|
+
let unfairLock = UnsafeMutablePointer<os_unfair_lock>.allocate(capacity: 1)
|
|
52
|
+
unfairLock.initialize(to: os_unfair_lock())
|
|
53
|
+
return unfairLock
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@available(macOS, deprecated: 10.12)
|
|
57
|
+
static func lock(_ lock: Self) where Pointee == OSSpinLock {
|
|
58
|
+
OSSpinLockLock(lock)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@available(macOS, deprecated: 10.12)
|
|
62
|
+
static func unlock(_ lock: Self) where Pointee == OSSpinLock {
|
|
63
|
+
OSSpinLockUnlock(lock)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@available(macOS, introduced: 10.12)
|
|
67
|
+
static func lock(_ lock: Self) where Pointee == os_unfair_lock {
|
|
68
|
+
os_unfair_lock_lock(lock)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@available(macOS, introduced: 10.12)
|
|
72
|
+
static func unlock(_ lock: Self) where Pointee == os_unfair_lock {
|
|
73
|
+
os_unfair_lock_unlock(lock)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// MARK: - Classes
|
|
78
|
+
|
|
79
|
+
class AtomicDictionary<Key: Hashable, Value>: LockProtocol {
|
|
80
|
+
typealias Lock = AnyLock
|
|
81
|
+
|
|
82
|
+
var _lock: Lock
|
|
83
|
+
|
|
84
|
+
private var storage: [Key: Value] = [:]
|
|
85
|
+
|
|
86
|
+
init(_ lock: Lock) {
|
|
87
|
+
_lock = lock
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@discardableResult
|
|
91
|
+
func removeValue(forKey key: Key) -> Value? {
|
|
92
|
+
lock()
|
|
93
|
+
defer { unlock() }
|
|
94
|
+
return storage.removeValue(forKey: key)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
func get(_ key: Key) -> Value? {
|
|
98
|
+
lock()
|
|
99
|
+
defer { unlock() }
|
|
100
|
+
return storage[key]
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
func set(_ key: Key, value: Value?) {
|
|
104
|
+
lock()
|
|
105
|
+
defer { unlock() }
|
|
106
|
+
storage[key] = value
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
func lock() {
|
|
110
|
+
fatalError()
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
func unlock() {
|
|
114
|
+
fatalError()
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@available(macOS, introduced: 10.12)
|
|
119
|
+
final class UnfairAtomicDictionary<Key: Hashable, Value>: AtomicDictionary<Key, Value> {
|
|
120
|
+
typealias Lock = UnsafeMutablePointer<os_unfair_lock>
|
|
121
|
+
|
|
122
|
+
init() {
|
|
123
|
+
super.init(Lock.make())
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
override func lock() {
|
|
127
|
+
Lock.lock(_lock as! Lock)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
override func unlock() {
|
|
131
|
+
Lock.unlock(_lock as! Lock)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@available(macOS, deprecated: 10.12)
|
|
136
|
+
final class OSSPinAtomicDictionary<Key: Hashable, Value>: AtomicDictionary<Key, Value> {
|
|
137
|
+
typealias Lock = UnsafeMutablePointer<OSSpinLock>
|
|
138
|
+
|
|
139
|
+
init() {
|
|
140
|
+
super.init(Lock.make())
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
override func lock() {
|
|
144
|
+
Lock.lock(_lock as! Lock)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
override func unlock() {
|
|
148
|
+
Lock.unlock(_lock as! Lock)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// DeliverfileProtocol.swift
|
|
2
2
|
// Copyright (c) 2022 FastlaneTools
|
|
3
3
|
|
|
4
|
-
public protocol DeliverfileProtocol:
|
|
4
|
+
public protocol DeliverfileProtocol: AnyObject {
|
|
5
5
|
/// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
|
6
6
|
var apiKeyPath: String? { get }
|
|
7
7
|
|
|
@@ -260,4 +260,4 @@ public extension DeliverfileProtocol {
|
|
|
260
260
|
|
|
261
261
|
// Please don't remove the lines below
|
|
262
262
|
// They are used to detect outdated files
|
|
263
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
263
|
+
// FastlaneRunnerAPIVersion [0.9.96]
|