fastlane 2.203.0 → 2.204.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -92
  3. data/fastlane/lib/fastlane/actions/read_podspec.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/trainer.rb +2 -2
  5. data/fastlane/lib/fastlane/actions/verify_build.rb +1 -1
  6. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -1
  7. data/fastlane/lib/fastlane/swift_lane_manager.rb +11 -3
  8. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +54 -1
  9. data/fastlane/lib/fastlane/version.rb +1 -1
  10. data/fastlane/swift/Atomic.swift +150 -0
  11. data/fastlane/swift/Deliverfile.swift +1 -1
  12. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  13. data/fastlane/swift/Fastlane.swift +35 -11
  14. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +30 -20
  15. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +1 -1
  16. data/fastlane/swift/Gymfile.swift +1 -1
  17. data/fastlane/swift/GymfileProtocol.swift +2 -2
  18. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  19. data/fastlane/swift/Matchfile.swift +1 -1
  20. data/fastlane/swift/MatchfileProtocol.swift +7 -3
  21. data/fastlane/swift/Precheckfile.swift +1 -1
  22. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  23. data/fastlane/swift/Runner.swift +9 -1
  24. data/fastlane/swift/Scanfile.swift +1 -1
  25. data/fastlane/swift/ScanfileProtocol.swift +2 -2
  26. data/fastlane/swift/Screengrabfile.swift +1 -1
  27. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  28. data/fastlane/swift/Snapshotfile.swift +1 -1
  29. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  30. data/fastlane/swift/SocketClient.swift +5 -1
  31. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  32. data/fastlane/swift/formatting/Brewfile.lock.json +19 -19
  33. data/fastlane/swift/upgrade_manifest.json +1 -1
  34. data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -1
  35. data/match/lib/match/nuke.rb +33 -9
  36. data/match/lib/match/options.rb +6 -1
  37. data/match/lib/match/storage/s3_storage.rb +3 -3
  38. data/pilot/lib/pilot/build_manager.rb +17 -7
  39. data/pilot/lib/pilot/options.rb +6 -1
  40. data/scan/lib/scan/runner.rb +9 -5
  41. data/snapshot/lib/assets/SnapshotHelper.swift +2 -2
  42. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -1
  43. data/spaceship/lib/spaceship/portal/certificate.rb +4 -3
  44. data/trainer/lib/assets/junit.xml.erb +4 -1
  45. data/trainer/lib/trainer/.test_parser.rb.swp +0 -0
  46. data/trainer/lib/trainer/test_parser.rb +11 -2
  47. metadata +21 -22
  48. data/fastlane_core/lib/fastlane_core/.helper.rb.swp +0 -0
  49. data/scan/lib/scan/.detect_values.rb.swp +0 -0
  50. 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: b2ca29870c7863747d860afa2bec0087b99af7aac40cb8c490393b0396dc32bf
4
+ data.tar.gz: 6506f061ee882e689f84dd33ae69be368954022c7ddddc4115224aca6e3f7410
5
5
  SHA512:
6
- metadata.gz: 94746b9aaa46fe097455bde533ab329cb17079370f19ccc42fa0b03bd8224adc74ab3e01b1c4cf12f52eed79a823bc59ea0b80185ee563031d347fed83de9f0a
7
- data.tar.gz: 7f5add6730dd66808b570ca618fc1297b4efe0f663fd46963cc39903724928fb0a7a036c08ee33ef493c809dbea7dd5a577a25eae9e877aa26602fa8c63ba7d0
6
+ metadata.gz: 7eb97140c14ff54b2e72c168a354494ec44b29f5439114e55f33428b2c9f43ff89fe73e2ed909da2c529e79d293e2a7c1b30e6de34113900d2da64e234a23598
7
+ data.tar.gz: 8d6ee7ca6504a3f5cc749f8e7799f3183ea7b395cbde1f85125d0acac79255d5fd91fbd3c5a6bec83f7bf7931815e9300d00905a8529e5e8d067fcff7cc1d2bd
data/README.md CHANGED
@@ -35,35 +35,35 @@ 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='jérôme-lacoste'>
39
+ <a href='https://github.com/lacostej'>
40
+ <img src='https://github.com/lacostej.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/lacostej'>Jérôme Lacoste</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='josh-holtz'>
45
+ <a href='https://github.com/joshdholtz'>
46
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></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='max-ott'>
51
+ <a href='https://github.com/max-ott'>
52
+ <img src='https://github.com/max-ott.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/ott_max'>Max Ott</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='manu-wallner'>
57
+ <a href='https://github.com/milch'>
58
+ <img src='https://github.com/milch.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/acrooow'>Manu Wallner</a></h4>
61
61
  </td>
62
- <td id='stefan-natchev'>
63
- <a href='https://github.com/snatchev'>
64
- <img src='https://github.com/snatchev.png' width='140px;'>
62
+ <td id='manish-rathi'>
63
+ <a href='https://github.com/crazymanish'>
64
+ <img src='https://github.com/crazymanish.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
@@ -73,17 +73,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
73
73
  </a>
74
74
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
75
75
  </td>
76
- <td id='łukasz-grabowski'>
77
- <a href='https://github.com/lucgrabowski'>
78
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
76
+ <td id='kohki-miki'>
77
+ <a href='https://github.com/giginet'>
78
+ <img src='https://github.com/giginet.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'>Łukasz Grabowski</h4>
80
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
81
81
  </td>
82
- <td id='danielle-tomlinson'>
83
- <a href='https://github.com/endocrimes'>
84
- <img src='https://github.com/endocrimes.png' width='140px;'>
82
+ <td id='iulian-onofrei'>
83
+ <a href='https://github.com/revolter'>
84
+ <img src='https://github.com/revolter.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
87
87
  </td>
88
88
  <td id='jimmy-dee'>
89
89
  <a href='https://github.com/jdee'>
@@ -91,69 +91,89 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
91
  </a>
92
92
  <h4 align='center'>Jimmy Dee</h4>
93
93
  </td>
94
+ <td id='andrew-mcburney'>
95
+ <a href='https://github.com/armcburney'>
96
+ <img src='https://github.com/armcburney.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td id='daniel-jankowski'>
103
+ <a href='https://github.com/mollyIV'>
104
+ <img src='https://github.com/mollyIV.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
107
+ </td>
108
+ <td id='satoshi-namai'>
109
+ <a href='https://github.com/ainame'>
110
+ <img src='https://github.com/ainame.png' width='140px;'>
111
+ </a>
112
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
113
+ </td>
94
114
  <td id='jorge-revuelta-h'>
95
115
  <a href='https://github.com/minuscorp'>
96
116
  <img src='https://github.com/minuscorp.png' width='140px;'>
97
117
  </a>
98
118
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
99
119
  </td>
120
+ <td id='stefan-natchev'>
121
+ <a href='https://github.com/snatchev'>
122
+ <img src='https://github.com/snatchev.png' width='140px;'>
123
+ </a>
124
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
125
+ </td>
126
+ <td id='fumiya-nakamura'>
127
+ <a href='https://github.com/nafu'>
128
+ <img src='https://github.com/nafu.png' width='140px;'>
129
+ </a>
130
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
131
+ </td>
100
132
  </tr>
101
133
  <tr>
134
+ <td id='luka-mirosevic'>
135
+ <a href='https://github.com/lmirosevic'>
136
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
137
+ </a>
138
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
139
+ </td>
102
140
  <td id='felix-krause'>
103
141
  <a href='https://github.com/KrauseFx'>
104
142
  <img src='https://github.com/KrauseFx.png' width='140px;'>
105
143
  </a>
106
144
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
107
145
  </td>
108
- <td id='joshua-liebowitz'>
109
- <a href='https://github.com/taquitos'>
110
- <img src='https://github.com/taquitos.png' width='140px;'>
111
- </a>
112
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
113
- </td>
114
- <td id='josh-holtz'>
115
- <a href='https://github.com/joshdholtz'>
116
- <img src='https://github.com/joshdholtz.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;'>
117
149
  </a>
118
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
119
151
  </td>
120
- <td id='jérôme-lacoste'>
121
- <a href='https://github.com/lacostej'>
122
- <img src='https://github.com/lacostej.png' width='140px;'>
152
+ <td id='maksym-grebenets'>
153
+ <a href='https://github.com/mgrebenets'>
154
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
123
155
  </a>
124
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
125
157
  </td>
126
- <td id='satoshi-namai'>
127
- <a href='https://github.com/ainame'>
128
- <img src='https://github.com/ainame.png' width='140px;'>
158
+ <td id='jan-piotrowski'>
159
+ <a href='https://github.com/janpio'>
160
+ <img src='https://github.com/janpio.png' width='140px;'>
129
161
  </a>
130
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
131
163
  </td>
132
164
  </tr>
133
165
  <tr>
134
- <td id='fumiya-nakamura'>
135
- <a href='https://github.com/nafu'>
136
- <img src='https://github.com/nafu.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
139
- </td>
140
166
  <td id='roger-oba'>
141
167
  <a href='https://github.com/rogerluan'>
142
168
  <img src='https://github.com/rogerluan.png' width='140px;'>
143
169
  </a>
144
170
  <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
145
171
  </td>
146
- <td id='manish-rathi'>
147
- <a href='https://github.com/crazymanish'>
148
- <img src='https://github.com/crazymanish.png' width='140px;'>
149
- </a>
150
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
151
- </td>
152
- <td id='luka-mirosevic'>
153
- <a href='https://github.com/lmirosevic'>
154
- <img src='https://github.com/lmirosevic.png' width='140px;'>
172
+ <td id='łukasz-grabowski'>
173
+ <a href='https://github.com/lucgrabowski'>
174
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
155
175
  </a>
156
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
176
+ <h4 align='center'>Łukasz Grabowski</h4>
157
177
  </td>
158
178
  <td id='matthew-ellis'>
159
179
  <a href='https://github.com/matthewellis'>
@@ -161,46 +181,26 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
161
181
  </a>
162
182
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
163
183
  </td>
164
- </tr>
165
- <tr>
166
- <td id='maksym-grebenets'>
167
- <a href='https://github.com/mgrebenets'>
168
- <img src='https://github.com/mgrebenets.png' width='140px;'>
184
+ <td id='joshua-liebowitz'>
185
+ <a href='https://github.com/taquitos'>
186
+ <img src='https://github.com/taquitos.png' width='140px;'>
169
187
  </a>
170
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
171
189
  </td>
172
- <td id='iulian-onofrei'>
173
- <a href='https://github.com/revolter'>
174
- <img src='https://github.com/revolter.png' width='140px;'>
190
+ <td id='danielle-tomlinson'>
191
+ <a href='https://github.com/endocrimes'>
192
+ <img src='https://github.com/endocrimes.png' width='140px;'>
175
193
  </a>
176
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
177
195
  </td>
196
+ </tr>
197
+ <tr>
178
198
  <td id='aaron-brager'>
179
199
  <a href='https://github.com/getaaron'>
180
200
  <img src='https://github.com/getaaron.png' width='140px;'>
181
201
  </a>
182
202
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
183
203
  </td>
184
- <td id='daniel-jankowski'>
185
- <a href='https://github.com/mollyIV'>
186
- <img src='https://github.com/mollyIV.png' width='140px;'>
187
- </a>
188
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
189
- </td>
190
- <td id='andrew-mcburney'>
191
- <a href='https://github.com/armcburney'>
192
- <img src='https://github.com/armcburney.png' width='140px;'>
193
- </a>
194
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
195
- </td>
196
- </tr>
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;'>
201
- </a>
202
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
203
- </td>
204
204
  </table>
205
205
 
206
206
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -79,7 +79,7 @@ module Fastlane
79
79
  end
80
80
 
81
81
  def self.return_type
82
- :hash_of_strings
82
+ :hash
83
83
  end
84
84
 
85
85
  def self.category
@@ -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,56 @@ 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 true if dry_run && config.build_settings["CODE_SIGN_IDENTITY"].nil?
220
+ return true if dry_run && config.build_settings["MACOSX_DEPLOYMENT_TARGET"].nil?
221
+ }
222
+ return false 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
+
240
+ return true if dry_run && phase_copy_sign.nil?
241
+
242
+ return false if dry_run
243
+
244
+ # Proceed to upgrade
245
+ old_phase_copy_sign.remove_from_project unless old_phase_copy_sign.nil?
246
+
247
+ unless phase_copy_sign
248
+ # Create a copy files build phase
249
+ phase_copy_sign = self.fastlane_runner_target.new_copy_files_build_phase("FastlaneRunnerCopySigned")
250
+ phase_copy_sign.dst_path = "$SRCROOT/../.."
251
+ phase_copy_sign.dst_subfolder_spec = "0"
252
+ phase_copy_sign.run_only_for_deployment_postprocessing = "0"
253
+ targetBinaryReference = self.fastlane_runner_target.product_reference
254
+ phase_copy_sign.add_file_reference(targetBinaryReference)
255
+
256
+ # Set "Code sign on copy" flag on Xcode for fastlane_runner_target
257
+ targetBinaryReference.build_files.each { |target_binary_build_file_reference|
258
+ target_binary_build_file_reference.settings = { "ATTRIBUTES": ["CodeSignOnCopy"] }
259
+ }
260
+ end
261
+
262
+ target_project.save
263
+ end
211
264
  end
212
265
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.203.0'.freeze
2
+ VERSION = '2.204.3'.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.3
@@ -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.99]