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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -96
  3. data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
  4. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  5. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  6. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  7. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +55 -1
  8. data/fastlane/lib/fastlane/version.rb +1 -1
  9. data/fastlane/swift/Atomic.swift +150 -0
  10. data/fastlane/swift/Deliverfile.swift +1 -1
  11. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  12. data/fastlane/swift/Fastlane.swift +31 -7
  13. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  14. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  15. data/fastlane/swift/Gymfile.swift +1 -1
  16. data/fastlane/swift/GymfileProtocol.swift +2 -2
  17. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  18. data/fastlane/swift/Matchfile.swift +1 -1
  19. data/fastlane/swift/MatchfileProtocol.swift +6 -2
  20. data/fastlane/swift/Precheckfile.swift +1 -1
  21. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  22. data/fastlane/swift/Runner.swift +9 -1
  23. data/fastlane/swift/Scanfile.swift +1 -1
  24. data/fastlane/swift/ScanfileProtocol.swift +2 -2
  25. data/fastlane/swift/Screengrabfile.swift +1 -1
  26. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  27. data/fastlane/swift/Snapshotfile.swift +1 -1
  28. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  29. data/fastlane/swift/SocketClient.swift +5 -1
  30. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  31. data/fastlane/swift/formatting/Brewfile.lock.json +8 -8
  32. data/fastlane/swift/upgrade_manifest.json +1 -1
  33. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  34. data/match/lib/match/nuke.rb +33 -9
  35. data/match/lib/match/options.rb +5 -0
  36. data/match/lib/match/storage/s3_storage.rb +3 -3
  37. data/pilot/lib/pilot/build_manager.rb +17 -7
  38. data/pilot/lib/pilot/options.rb +6 -1
  39. data/scan/lib/scan/runner.rb +4 -4
  40. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -1
  41. metadata +20 -22
  42. data/fastlane_core/lib/fastlane_core/.helper.rb.swp +0 -0
  43. data/scan/lib/scan/.detect_values.rb.swp +0 -0
  44. data/scan/lib/scan/.runner.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04571c4f9435056c091703452863225e9513b3f3c802a40a73619c9c210278c3
4
- data.tar.gz: b9a374f41e2de5c433ac18be869cc09af8f306d81fdaef87c9499cfc82f7b75f
3
+ metadata.gz: 1c60db14f0042e080f4e2d72b69cff3f15d87a386496dc500854e04f22cba9af
4
+ data.tar.gz: ffa77b289f662bbf7bee76e6d50f070ce3f80e7bdcae09b442a5055d298a3f01
5
5
  SHA512:
6
- metadata.gz: 94746b9aaa46fe097455bde533ab329cb17079370f19ccc42fa0b03bd8224adc74ab3e01b1c4cf12f52eed79a823bc59ea0b80185ee563031d347fed83de9f0a
7
- data.tar.gz: 7f5add6730dd66808b570ca618fc1297b4efe0f663fd46963cc39903724928fb0a7a036c08ee33ef493c809dbea7dd5a577a25eae9e877aa26602fa8c63ba7d0
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='manu-wallner'>
39
- <a href='https://github.com/milch'>
40
- <img src='https://github.com/milch.png' width='140px;'>
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/acrooow'>Manu Wallner</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
43
43
  </td>
44
- <td id='kohki-miki'>
45
- <a href='https://github.com/giginet'>
46
- <img src='https://github.com/giginet.png' width='140px;'>
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'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
48
+ <h4 align='center'>Jimmy Dee</h4>
49
49
  </td>
50
- <td id='helmut-januschka'>
51
- <a href='https://github.com/hjanuschka'>
52
- <img src='https://github.com/hjanuschka.png' width='140px;'>
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/hjanuschka'>Helmut Januschka</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
55
55
  </td>
56
- <td id='jan-piotrowski'>
57
- <a href='https://github.com/janpio'>
58
- <img src='https://github.com/janpio.png' width='140px;'>
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/Sujan'>Jan Piotrowski</a></h4>
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
- </tr>
69
- <tr>
70
- <td id='olivier-halligon'>
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/aligatr'>Olivier Halligon</a></h4>
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='danielle-tomlinson'>
83
- <a href='https://github.com/endocrimes'>
84
- <img src='https://github.com/endocrimes.png' width='140px;'>
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/minuscorp'>Jorge Revuelta H</a></h4>
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='felix-krause'>
103
- <a href='https://github.com/KrauseFx'>
104
- <img src='https://github.com/KrauseFx.png' width='140px;'>
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/KrauseFx'>Felix Krause</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
107
107
  </td>
108
- <td id='joshua-liebowitz'>
109
- <a href='https://github.com/taquitos'>
110
- <img src='https://github.com/taquitos.png' width='140px;'>
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/taquitos'>Joshua Liebowitz</a></h4>
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='fumiya-nakamura'>
135
- <a href='https://github.com/nafu'>
136
- <img src='https://github.com/nafu.png' width='140px;'>
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/nafu003'>Fumiya Nakamura</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
139
139
  </td>
140
- <td id='roger-oba'>
141
- <a href='https://github.com/rogerluan'>
142
- <img src='https://github.com/rogerluan.png' width='140px;'>
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/rogerluan_'>Roger Oba</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
145
145
  </td>
146
- <td id='manish-rathi'>
147
- <a href='https://github.com/crazymanish'>
148
- <img src='https://github.com/crazymanish.png' width='140px;'>
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/iammanishrathi'>Manish Rathi</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
151
151
  </td>
152
- <td id='luka-mirosevic'>
153
- <a href='https://github.com/lmirosevic'>
154
- <img src='https://github.com/lmirosevic.png' width='140px;'>
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/lmirosevic'>Luka Mirosevic</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
157
157
  </td>
158
- <td id='matthew-ellis'>
159
- <a href='https://github.com/matthewellis'>
160
- <img src='https://github.com/matthewellis.png' width='140px;'>
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/mellis1995'>Matthew Ellis</a></h4>
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='maksym-grebenets'>
167
- <a href='https://github.com/mgrebenets'>
168
- <img src='https://github.com/mgrebenets.png' width='140px;'>
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/mgrebenets'>Maksym Grebenets</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
171
171
  </td>
172
- <td id='iulian-onofrei'>
173
- <a href='https://github.com/revolter'>
174
- <img src='https://github.com/revolter.png' width='140px;'>
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/Revolt666'>Iulian Onofrei</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
177
177
  </td>
178
- <td id='aaron-brager'>
179
- <a href='https://github.com/getaaron'>
180
- <img src='https://github.com/getaaron.png' width='140px;'>
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/getaaron'>Aaron Brager</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
183
183
  </td>
184
- <td id='daniel-jankowski'>
185
- <a href='https://github.com/mollyIV'>
186
- <img src='https://github.com/mollyIV.png' width='140px;'>
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/mollyIV'>Daniel Jankowski</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
189
189
  </td>
190
- <td id='andrew-mcburney'>
191
- <a href='https://github.com/armcburney'>
192
- <img src='https://github.com/armcburney.png' width='140px;'>
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/armcburney'>Andrew McBurney</a></h4>
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='max-ott'>
199
- <a href='https://github.com/max-ott'>
200
- <img src='https://github.com/max-ott.png' width='140px;'>
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/ott_max'>Max Ott</a></h4>
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, test_successful|
13
- UI.test_failure!("Unit tests failed") if fail_build && !test_successful
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}: class {"
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.join
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
- Actions.sh(%(#{FastlaneCore::FastlaneFolder.swift_runner_path} lane #{lane}#{parameter_string} > /dev/null))
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 = add_missing_groups_and_files!(dry_run: dry_run)
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
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.203.0'.freeze
2
+ VERSION = '2.204.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -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
+ }
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.203.0
20
+ // Generated with fastlane 2.204.0
@@ -1,7 +1,7 @@
1
1
  // DeliverfileProtocol.swift
2
2
  // Copyright (c) 2022 FastlaneTools
3
3
 
4
- public protocol DeliverfileProtocol: class {
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.95]
263
+ // FastlaneRunnerAPIVersion [0.9.96]