fastlane 2.221.1 → 2.222.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -100
  3. data/deliver/lib/deliver/options.rb +1 -1
  4. data/deliver/lib/deliver/runner.rb +2 -2
  5. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -0
  7. data/fastlane/lib/fastlane/actions/download_dsyms.rb +2 -2
  8. data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +16 -1
  9. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/set_changelog.rb +3 -3
  11. data/fastlane/lib/fastlane/fast_file.rb +3 -1
  12. data/fastlane/lib/fastlane/version.rb +1 -1
  13. data/fastlane/swift/Deliverfile.swift +1 -1
  14. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  15. data/fastlane/swift/Fastlane.swift +4 -4
  16. data/fastlane/swift/Gymfile.swift +1 -1
  17. data/fastlane/swift/GymfileProtocol.swift +1 -1
  18. data/fastlane/swift/Matchfile.swift +1 -1
  19. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  20. data/fastlane/swift/Precheckfile.swift +1 -1
  21. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  22. data/fastlane/swift/Scanfile.swift +1 -1
  23. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  24. data/fastlane/swift/Screengrabfile.swift +1 -1
  25. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  26. data/fastlane/swift/Snapshotfile.swift +1 -1
  27. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  28. data/fastlane/swift/formatting/Brewfile.lock.json +17 -17
  29. data/gym/lib/gym/generators/build_command_generator.rb +1 -1
  30. data/spaceship/lib/spaceship/connect_api/models/app.rb +10 -0
  31. data/spaceship/lib/spaceship/connect_api/models/app_availability.rb +23 -0
  32. data/spaceship/lib/spaceship/connect_api/models/territory_availability.rb +62 -0
  33. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +9 -0
  34. data/spaceship/lib/spaceship/connect_api.rb +2 -0
  35. data/spaceship/lib/spaceship/tunes/application.rb +1 -1
  36. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -0
  37. data/trainer/lib/trainer/test_parser.rb +27 -2
  38. metadata +20 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f07b93540a18ca9244d03f38d6b42715da53a5f3a1d2e01ae0ca07f55b8bbfc
4
- data.tar.gz: 02a85c5ddcb83eb661020c053b2c33411d0f2b4e69bf309a2f5dff62c7376b11
3
+ metadata.gz: 3c2fcb0e5c62891ef4b01994e10d1c7880f0738f5f289d28633e983e657eede5
4
+ data.tar.gz: 5e56397ff26ad27aee638525ed836aea56749477029a81fd263ac747da7fb760
5
5
  SHA512:
6
- metadata.gz: f36be8c3a80185881f79dd332a09e51e3d6a5b512e5571a2dc8c5eb70f38bc0c74cfa862329befbc43f8f4c0fd771ed40a579b23371d12463a1a27921b1e1e85
7
- data.tar.gz: aabf80f68459a5dbffd434963f317755828a18d81ed00e4d5a2a9f0fc6123eeb48d1066b2b4517a6c69ba10252e4a03ea55acf28442d886b23fb243f9a20263c
6
+ metadata.gz: 38e276729f76d983d1e61807d6502cd8d09b9b357be64b04f2045870db69803923e928566fd2df06e9727d5d69e58063837c70c32a5f9d2c6ef9693d6aa195b0
7
+ data.tar.gz: 23b475e6e9dede5602fceebd40be36fc3026a74e9b29d90f5942e4a084761bd6820f03d77733f8700a21957384ed52d560d089126a067c74475678eea42426e4
data/README.md CHANGED
@@ -35,43 +35,81 @@ 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='matthew-ellis'>
39
- <a href='https://github.com/matthewellis'>
40
- <img src='https://github.com/matthewellis.png' width='140px;'>
38
+ <td id='manish-rathi'>
39
+ <a href='https://github.com/crazymanish'>
40
+ <img src='https://github.com/crazymanish.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
43
43
  </td>
44
- <td id='roger-oba'>
45
- <a href='https://github.com/rogerluan'>
46
- <img src='https://github.com/rogerluan.png' width='140px;'>
44
+ <td id='iulian-onofrei'>
45
+ <a href='https://github.com/revolter'>
46
+ <img src='https://github.com/revolter.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
49
49
  </td>
50
- <td id='luka-mirosevic'>
51
- <a href='https://github.com/lmirosevic'>
52
- <img src='https://github.com/lmirosevic.png' width='140px;'>
50
+ <td id='helmut-januschka'>
51
+ <a href='https://github.com/hjanuschka'>
52
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
55
55
  </td>
56
- <td id='daniel-jankowski'>
57
- <a href='https://github.com/mollyIV'>
58
- <img src='https://github.com/mollyIV.png' width='140px;'>
56
+ <td id='stefan-natchev'>
57
+ <a href='https://github.com/snatchev'>
58
+ <img src='https://github.com/snatchev.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
61
61
  </td>
62
- <td id='fumiya-nakamura'>
63
- <a href='https://github.com/nafu'>
64
- <img src='https://github.com/nafu.png' width='140px;'>
62
+ <td id='manu-wallner'>
63
+ <a href='https://github.com/milch'>
64
+ <img src='https://github.com/milch.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='olivier-halligon'>
71
- <a href='https://github.com/AliSoftware'>
72
- <img src='https://github.com/AliSoftware.png' width='140px;'>
70
+ <td id='maksym-grebenets'>
71
+ <a href='https://github.com/mgrebenets'>
72
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
75
+ </td>
76
+ <td id='jorge-revuelta-h'>
77
+ <a href='https://github.com/minuscorp'>
78
+ <img src='https://github.com/minuscorp.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
81
+ </td>
82
+ <td id='jérôme-lacoste'>
83
+ <a href='https://github.com/lacostej'>
84
+ <img src='https://github.com/lacostej.png' width='140px;'>
85
+ </a>
86
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
87
+ </td>
88
+ <td id='roger-oba'>
89
+ <a href='https://github.com/rogerluan'>
90
+ <img src='https://github.com/rogerluan.png' width='140px;'>
91
+ </a>
92
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
93
+ </td>
94
+ <td id='jan-piotrowski'>
95
+ <a href='https://github.com/janpio'>
96
+ <img src='https://github.com/janpio.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td id='max-ott'>
103
+ <a href='https://github.com/max-ott'>
104
+ <img src='https://github.com/max-ott.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
107
+ </td>
108
+ <td id='matthew-ellis'>
109
+ <a href='https://github.com/matthewellis'>
110
+ <img src='https://github.com/matthewellis.png' width='140px;'>
111
+ </a>
112
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
75
113
  </td>
76
114
  <td id='danielle-tomlinson'>
77
115
  <a href='https://github.com/endocrimes'>
@@ -79,11 +117,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
79
117
  </a>
80
118
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
81
119
  </td>
82
- <td id='felix-krause'>
83
- <a href='https://github.com/KrauseFx'>
84
- <img src='https://github.com/KrauseFx.png' width='140px;'>
120
+ <td id='daniel-jankowski'>
121
+ <a href='https://github.com/mollyIV'>
122
+ <img src='https://github.com/mollyIV.png' width='140px;'>
85
123
  </a>
86
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
87
125
  </td>
88
126
  <td id='kohki-miki'>
89
127
  <a href='https://github.com/giginet'>
@@ -91,63 +129,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
129
  </a>
92
130
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
93
131
  </td>
132
+ </tr>
133
+ <tr>
94
134
  <td id='jimmy-dee'>
95
135
  <a href='https://github.com/jdee'>
96
136
  <img src='https://github.com/jdee.png' width='140px;'>
97
137
  </a>
98
138
  <h4 align='center'>Jimmy Dee</h4>
99
139
  </td>
100
- </tr>
101
- <tr>
102
- <td id='manish-rathi'>
103
- <a href='https://github.com/crazymanish'>
104
- <img src='https://github.com/crazymanish.png' width='140px;'>
105
- </a>
106
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
107
- </td>
108
- <td id='jorge-revuelta-h'>
109
- <a href='https://github.com/minuscorp'>
110
- <img src='https://github.com/minuscorp.png' width='140px;'>
111
- </a>
112
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
113
- </td>
114
- <td id='jan-piotrowski'>
115
- <a href='https://github.com/janpio'>
116
- <img src='https://github.com/janpio.png' width='140px;'>
140
+ <td id='satoshi-namai'>
141
+ <a href='https://github.com/ainame'>
142
+ <img src='https://github.com/ainame.png' width='140px;'>
117
143
  </a>
118
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
119
145
  </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;'>
146
+ <td id='luka-mirosevic'>
147
+ <a href='https://github.com/lmirosevic'>
148
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
123
149
  </a>
124
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
125
151
  </td>
126
- <td id='andrew-mcburney'>
127
- <a href='https://github.com/armcburney'>
128
- <img src='https://github.com/armcburney.png' width='140px;'>
152
+ <td id='joshua-liebowitz'>
153
+ <a href='https://github.com/taquitos'>
154
+ <img src='https://github.com/taquitos.png' width='140px;'>
129
155
  </a>
130
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
131
157
  </td>
132
- </tr>
133
- <tr>
134
158
  <td id='josh-holtz'>
135
159
  <a href='https://github.com/joshdholtz'>
136
160
  <img src='https://github.com/joshdholtz.png' width='140px;'>
137
161
  </a>
138
162
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
139
163
  </td>
164
+ </tr>
165
+ <tr>
166
+ <td id='fumiya-nakamura'>
167
+ <a href='https://github.com/nafu'>
168
+ <img src='https://github.com/nafu.png' width='140px;'>
169
+ </a>
170
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
171
+ </td>
140
172
  <td id='łukasz-grabowski'>
141
173
  <a href='https://github.com/lucgrabowski'>
142
174
  <img src='https://github.com/lucgrabowski.png' width='140px;'>
143
175
  </a>
144
176
  <h4 align='center'>Łukasz Grabowski</h4>
145
177
  </td>
146
- <td id='satoshi-namai'>
147
- <a href='https://github.com/ainame'>
148
- <img src='https://github.com/ainame.png' width='140px;'>
178
+ <td id='felix-krause'>
179
+ <a href='https://github.com/KrauseFx'>
180
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
149
181
  </a>
150
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
151
183
  </td>
152
184
  <td id='aaron-brager'>
153
185
  <a href='https://github.com/getaaron'>
@@ -155,51 +187,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
155
187
  </a>
156
188
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
157
189
  </td>
158
- <td id='iulian-onofrei'>
159
- <a href='https://github.com/revolter'>
160
- <img src='https://github.com/revolter.png' width='140px;'>
161
- </a>
162
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
163
- </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;'>
169
- </a>
170
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
171
- </td>
172
- <td id='stefan-natchev'>
173
- <a href='https://github.com/snatchev'>
174
- <img src='https://github.com/snatchev.png' width='140px;'>
175
- </a>
176
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
177
- </td>
178
- <td id='helmut-januschka'>
179
- <a href='https://github.com/hjanuschka'>
180
- <img src='https://github.com/hjanuschka.png' width='140px;'>
181
- </a>
182
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
183
- </td>
184
- <td id='manu-wallner'>
185
- <a href='https://github.com/milch'>
186
- <img src='https://github.com/milch.png' width='140px;'>
187
- </a>
188
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
189
- </td>
190
- <td id='max-ott'>
191
- <a href='https://github.com/max-ott'>
192
- <img src='https://github.com/max-ott.png' width='140px;'>
190
+ <td id='olivier-halligon'>
191
+ <a href='https://github.com/AliSoftware'>
192
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='joshua-liebowitz'>
199
- <a href='https://github.com/taquitos'>
200
- <img src='https://github.com/taquitos.png' width='140px;'>
198
+ <td id='andrew-mcburney'>
199
+ <a href='https://github.com/armcburney'>
200
+ <img src='https://github.com/armcburney.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -99,7 +99,7 @@ module Deliver
99
99
  optional: true,
100
100
  default_value: "ios",
101
101
  verify_block: proc do |value|
102
- UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
102
+ UI.user_error!("The platform can only be ios, appletvos, xros or osx") unless %('ios', 'appletvos', 'xros', 'osx').include?(value)
103
103
  end),
104
104
 
105
105
  # live version
@@ -172,7 +172,7 @@ module Deliver
172
172
  transporter = transporter_for_selected_team
173
173
 
174
174
  case platform
175
- when "ios", "appletvos"
175
+ when "ios", "appletvos", "xros"
176
176
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
177
177
  app_id: Deliver.cache[:app].id,
178
178
  ipa_path: ipa_path,
@@ -209,7 +209,7 @@ module Deliver
209
209
  transporter = transporter_for_selected_team
210
210
 
211
211
  case platform
212
- when "ios", "appletvos"
212
+ when "ios", "appletvos", "xros"
213
213
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
214
214
  app_id: Deliver.cache[:app].id,
215
215
  ipa_path: ipa_path,
@@ -186,7 +186,7 @@ module Fastlane
186
186
  optional: true,
187
187
  default_value: "ios",
188
188
  verify_block: proc do |value|
189
- UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
189
+ UI.user_error!("The platform can only be ios, appletvos, xros or osx") unless %('ios', 'appletvos', 'xros', 'osx').include?(value)
190
190
  end),
191
191
  FastlaneCore::ConfigItem.new(key: :team_name,
192
192
  short_option: "-e",
@@ -374,6 +374,7 @@ The available options:
374
374
 
375
375
  - 'ios'
376
376
  - 'appletvos'
377
+ - 'xros'
377
378
  - 'osx'
378
379
 
379
380
 
@@ -290,7 +290,7 @@ module Fastlane
290
290
  FastlaneCore::ConfigItem.new(key: :platform,
291
291
  short_option: "-p",
292
292
  env_name: "DOWNLOAD_DSYMS_PLATFORM",
293
- description: "The app platform for dSYMs you wish to download (ios, appletvos)",
293
+ description: "The app platform for dSYMs you wish to download (ios, xros, appletvos)",
294
294
  default_value: :ios),
295
295
  FastlaneCore::ConfigItem.new(key: :version,
296
296
  short_option: "-v",
@@ -351,7 +351,7 @@ module Fastlane
351
351
  end
352
352
 
353
353
  def self.is_supported?(platform)
354
- [:ios, :appletvos].include?(platform)
354
+ [:ios, :appletvos, :xros].include?(platform)
355
355
  end
356
356
 
357
357
  def self.example_code
@@ -23,7 +23,9 @@ module Fastlane
23
23
  # Manual post processing trying to ignore certain file paths
24
24
  if (ignore_files = params[:ignore_files])
25
25
  repo_status = repo_status.lines.reject do |line|
26
- path = line.split(' ').last
26
+ path = path_from_git_status_line(line)
27
+ next if path.empty?
28
+
27
29
  was_found = ignore_files.include?(path)
28
30
 
29
31
  UI.message("Ignoring '#{path}'") if was_found
@@ -54,6 +56,19 @@ module Fastlane
54
56
  end
55
57
  end
56
58
 
59
+ def self.path_from_git_status_line(line)
60
+ # Extract the file path from the line based on https://git-scm.com/docs/git-status#_output.
61
+ # The first two characters indicate the status of the file path (e.g. ' M')
62
+ # M App/script.sh
63
+ #
64
+ # If the file path is renamed, the original path is also included in the line (e.g. 'R ORIG_PATH -> PATH')
65
+ # R App/script.sh -> App/script_renamed.sh
66
+ #
67
+ path = line.match(/^.. (.* -> )?(.*)$/)[2]
68
+ path = path.delete_prefix('"').delete_suffix('"')
69
+ return path
70
+ end
71
+
57
72
  def self.description
58
73
  "Raises an exception if there are uncommitted git changes"
59
74
  end
@@ -83,7 +83,7 @@ module Fastlane
83
83
  optional: true,
84
84
  default_value: "ios",
85
85
  verify_block: proc do |value|
86
- UI.user_error!("The platform can only be ios, osx, or appletvos") unless %('osx', ios', 'appletvos').include?(value)
86
+ UI.user_error!("The platform can only be ios, osx, xros or appletvos") unless %('osx', ios', 'appletvos', 'xros').include?(value)
87
87
  end),
88
88
  FastlaneCore::ConfigItem.new(key: :initial_build_number,
89
89
  env_name: "INITIAL_BUILD_NUMBER",
@@ -169,10 +169,10 @@ module Fastlane
169
169
  end),
170
170
  FastlaneCore::ConfigItem.new(key: :platform,
171
171
  env_name: "FL_SET_CHANGELOG_PLATFORM",
172
- description: "The platform of the app (ios, appletvos, mac)",
172
+ description: "The platform of the app (ios, appletvos, xros, mac)",
173
173
  default_value: "ios",
174
174
  verify_block: proc do |value|
175
- available = ['ios', 'appletvos', 'mac']
175
+ available = ['ios', 'appletvos', 'xros', 'mac']
176
176
  UI.user_error!("Invalid platform '#{value}', must be #{available.join(', ')}") unless available.include?(value)
177
177
  end)
178
178
  ]
@@ -183,7 +183,7 @@ module Fastlane
183
183
  end
184
184
 
185
185
  def self.is_supported?(platform)
186
- [:ios, :appletvos, :mac].include?(platform)
186
+ [:ios, :appletvos, :xros, :mac].include?(platform)
187
187
  end
188
188
 
189
189
  def self.example_code
@@ -218,7 +218,9 @@ module Fastlane
218
218
  end
219
219
 
220
220
  def self.sh(*command, step_name: nil, log: true, error_callback: nil, &b)
221
- command_header = log ? step_name || Actions.shell_command_from_args(*command) : "shell command"
221
+ command_header = step_name
222
+ command_header ||= log ? Actions.shell_command_from_args(*command) : "shell command"
223
+
222
224
  Actions.execute_action(command_header) do
223
225
  Actions.sh_no_action(*command, log: log, error_callback: error_callback, &b)
224
226
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.221.1'.freeze
2
+ VERSION = '2.222.0'.freeze
3
3
  SUMMARY = "The easiest way to build and release mobile apps.".freeze
4
4
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
5
5
  MINIMUM_XCODE_RELEASE = "7.0".freeze
@@ -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.221.1
20
+ // Generated with fastlane 2.222.0
@@ -272,4 +272,4 @@ public extension DeliverfileProtocol {
272
272
 
273
273
  // Please don't remove the lines below
274
274
  // They are used to detect outdated files
275
- // FastlaneRunnerAPIVersion [0.9.126]
275
+ // FastlaneRunnerAPIVersion [0.9.127]
@@ -4096,7 +4096,7 @@ public func downloadAppPrivacyDetailsFromAppStore(username: String,
4096
4096
  - appIdentifier: The bundle identifier of your app
4097
4097
  - teamId: The ID of your App Store Connect team if you're in multiple teams
4098
4098
  - teamName: The name of your App Store Connect team if you're in multiple teams
4099
- - platform: The app platform for dSYMs you wish to download (ios, appletvos)
4099
+ - platform: The app platform for dSYMs you wish to download (ios, xros, appletvos)
4100
4100
  - version: The app version for dSYMs you wish to download, pass in 'latest' to download only the latest build's dSYMs or 'live' to download only the live version dSYMs
4101
4101
  - buildNumber: The app build_number for dSYMs you wish to download
4102
4102
  - minVersion: The minimum app version for dSYMs you wish to download
@@ -9707,7 +9707,7 @@ public func setBuildNumberRepository(useHgRevisionNumber: OptionalConfigValue<Bo
9707
9707
  - changelog: Changelog text that should be uploaded to App Store Connect
9708
9708
  - teamId: The ID of your App Store Connect team if you're in multiple teams
9709
9709
  - teamName: The name of your App Store Connect team if you're in multiple teams
9710
- - platform: The platform of the app (ios, appletvos, mac)
9710
+ - platform: The platform of the app (ios, appletvos, xros, mac)
9711
9711
 
9712
9712
  This is useful if you have only one changelog for all languages.
9713
9713
  You can store the changelog in `./changelog.txt` and it will automatically get loaded from there. This integration is useful if you support e.g. 10 languages and want to use the same "What's new"-text for all languages.
@@ -13598,7 +13598,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13598
13598
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13599
13599
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13600
13600
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13601
- ideFoundationPath: String = "/Applications/Xcode_15.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13601
+ ideFoundationPath: String = "/Applications/Xcode_15.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13602
13602
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13603
13603
  {
13604
13604
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13801,4 +13801,4 @@ public let snapshotfile: Snapshotfile = .init()
13801
13801
 
13802
13802
  // Please don't remove the lines below
13803
13803
  // They are used to detect outdated files
13804
- // FastlaneRunnerAPIVersion [0.9.179]
13804
+ // FastlaneRunnerAPIVersion [0.9.180]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -208,4 +208,4 @@ public extension GymfileProtocol {
208
208
 
209
209
  // Please don't remove the lines below
210
210
  // They are used to detect outdated files
211
- // FastlaneRunnerAPIVersion [0.9.129]
211
+ // FastlaneRunnerAPIVersion [0.9.130]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -228,4 +228,4 @@ public extension MatchfileProtocol {
228
228
 
229
229
  // Please don't remove the lines below
230
230
  // They are used to detect outdated files
231
- // FastlaneRunnerAPIVersion [0.9.123]
231
+ // FastlaneRunnerAPIVersion [0.9.124]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.122]
55
+ // FastlaneRunnerAPIVersion [0.9.123]
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -320,4 +320,4 @@ public extension ScanfileProtocol {
320
320
 
321
321
  // Please don't remove the lines below
322
322
  // They are used to detect outdated files
323
- // FastlaneRunnerAPIVersion [0.9.134]
323
+ // FastlaneRunnerAPIVersion [0.9.135]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.124]
99
+ // FastlaneRunnerAPIVersion [0.9.125]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.221.1
20
+ // Generated with fastlane 2.222.0
@@ -204,4 +204,4 @@ public extension SnapshotfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.118]
207
+ // FastlaneRunnerAPIVersion [0.9.119]
@@ -2,45 +2,45 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.53.10",
5
+ "version": "0.54.2",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_sonoma": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:07a24ab550f0a4b26168b77c14b3b184e97552eb9071723af1103b1ff8d38bfd",
13
- "sha256": "07a24ab550f0a4b26168b77c14b3b184e97552eb9071723af1103b1ff8d38bfd"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:81df298cd70628b2149823fa370aa3a6799fa3d794e1541f76f3f4a2d7bedac1",
13
+ "sha256": "81df298cd70628b2149823fa370aa3a6799fa3d794e1541f76f3f4a2d7bedac1"
14
14
  },
15
15
  "arm64_ventura": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:2781c7eb35cfe585ae8a5f41395694e67af26c5725d25d08530a4f6adb191842",
18
- "sha256": "2781c7eb35cfe585ae8a5f41395694e67af26c5725d25d08530a4f6adb191842"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c69312fea87da1123deb27e6943e90affe661475571c6ca5967321688b46df8b",
18
+ "sha256": "c69312fea87da1123deb27e6943e90affe661475571c6ca5967321688b46df8b"
19
19
  },
20
20
  "arm64_monterey": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:be39b5733c7a181931682200f3fbece32146b84b7098fec1d9f4d22d248a91e9",
23
- "sha256": "be39b5733c7a181931682200f3fbece32146b84b7098fec1d9f4d22d248a91e9"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:da2a5c24a8132589cee415f4a0754ccc8b39e67e74e06469a3cb6b45d880877a",
23
+ "sha256": "da2a5c24a8132589cee415f4a0754ccc8b39e67e74e06469a3cb6b45d880877a"
24
24
  },
25
25
  "sonoma": {
26
26
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a080392954a019c55552ca7c6ab56033e8ab6aa1a598a0015b80ee12c62a4414",
28
- "sha256": "a080392954a019c55552ca7c6ab56033e8ab6aa1a598a0015b80ee12c62a4414"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:5d5e97425579868571f6322c7472793ef0e652b0ccb64248a466f5f6a85d8b0c",
28
+ "sha256": "5d5e97425579868571f6322c7472793ef0e652b0ccb64248a466f5f6a85d8b0c"
29
29
  },
30
30
  "ventura": {
31
31
  "cellar": ":any_skip_relocation",
32
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:7a5cc00008a574bcc3f94c8048fe058a4211a1f2952b65051a723212c07d8ce5",
33
- "sha256": "7a5cc00008a574bcc3f94c8048fe058a4211a1f2952b65051a723212c07d8ce5"
32
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:402e0e5e117296bee234ef2d657a49ef3397dd898db244a43abe6b02b83b6c48",
33
+ "sha256": "402e0e5e117296bee234ef2d657a49ef3397dd898db244a43abe6b02b83b6c48"
34
34
  },
35
35
  "monterey": {
36
36
  "cellar": ":any_skip_relocation",
37
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:60b9451e66902de3233febbf20cfa3df39304fb329eb478a8cab277874da7869",
38
- "sha256": "60b9451e66902de3233febbf20cfa3df39304fb329eb478a8cab277874da7869"
37
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:67abaff7e1f041b060e35e8ad1573737c93866c18a9bb4e84c9fd1d85e2064f2",
38
+ "sha256": "67abaff7e1f041b060e35e8ad1573737c93866c18a9bb4e84c9fd1d85e2064f2"
39
39
  },
40
40
  "x86_64_linux": {
41
41
  "cellar": "/home/linuxbrew/.linuxbrew/Cellar",
42
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d4bacdce7d4de2ca8e026577a94e87828038d25c28235a96f740fee46c317798",
43
- "sha256": "d4bacdce7d4de2ca8e026577a94e87828038d25c28235a96f740fee46c317798"
42
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:5c6a46f3995ad0b606c0c8a823b9236998ac512ba8895e8b1c3b35730fc2067d",
43
+ "sha256": "5c6a46f3995ad0b606c0c8a823b9236998ac512ba8895e8b1c3b35730fc2067d"
44
44
  }
45
45
  }
46
46
  }
@@ -82,11 +82,11 @@
82
82
  "macOS": "13.6"
83
83
  },
84
84
  "sonoma": {
85
- "HOMEBREW_VERSION": "4.3.5",
85
+ "HOMEBREW_VERSION": "4.3.10",
86
86
  "HOMEBREW_PREFIX": "/opt/homebrew",
87
87
  "Homebrew/homebrew-core": "api",
88
88
  "CLT": "15.3.0.0.1.1708646388",
89
- "Xcode": "15.0.1",
89
+ "Xcode": "15.4",
90
90
  "macOS": "14.5"
91
91
  }
92
92
  }
@@ -184,7 +184,7 @@ module Gym
184
184
  def result_bundle_path
185
185
  unless Gym.cache[:result_bundle_path]
186
186
  path = Gym.config[:result_bundle_path]
187
- path ||= File.join(Gym.config[:output_directory], Gym.config[:output_name] + ".result")
187
+ path ||= File.join(Gym.config[:output_directory], Gym.config[:output_name] + ".xcresult")
188
188
  if File.directory?(path)
189
189
  FileUtils.remove_dir(path)
190
190
  end
@@ -148,6 +148,16 @@ module Spaceship
148
148
  return resp.to_models.first
149
149
  end
150
150
 
151
+ #
152
+ # App Availabilities
153
+ #
154
+
155
+ def get_app_availabilities(client: nil, filter: {}, includes: "territoryAvailabilities", limit: { "territoryAvailabilities": 200 })
156
+ client ||= Spaceship::ConnectAPI
157
+ resp = client.get_app_availabilities(app_id: id, filter: filter, includes: includes, limit: limit, sort: nil)
158
+ return resp.to_models.first
159
+ end
160
+
151
161
  #
152
162
  # Available Territories
153
163
  #
@@ -0,0 +1,23 @@
1
+ require_relative '../model'
2
+ module Spaceship
3
+ class ConnectAPI
4
+ class AppAvailability
5
+ include Spaceship::ConnectAPI::Model
6
+
7
+ attr_accessor :app
8
+ attr_accessor :available_in_new_territories
9
+
10
+ attr_accessor :territoryAvailabilities
11
+
12
+ attr_mapping({
13
+ app: 'app',
14
+ availableInNewTerritories: 'available_in_new_territories',
15
+ territoryAvailabilities: 'territory_availabilities'
16
+ })
17
+
18
+ def self.type
19
+ return 'appAvailabilities'
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,62 @@
1
+ require_relative '../model'
2
+ module Spaceship
3
+ class ConnectAPI
4
+ class TerritoryAvailability
5
+ include Spaceship::ConnectAPI::Model
6
+
7
+ attr_accessor :available
8
+ attr_accessor :content_statuses
9
+ attr_accessor :pre_order_enabled
10
+ attr_accessor :pre_order_publish_date
11
+ attr_accessor :release_date
12
+
13
+ module ContentStatus
14
+ AVAILABLE = "AVAILABLE"
15
+ AVAILABLE_FOR_PREORDER_ON_DATE = "AVAILABLE_FOR_PREORDER_ON_DATE"
16
+ PROCESSING_TO_NOT_AVAILABLE = "PROCESSING_TO_NOT_AVAILABLE"
17
+ PROCESSING_TO_AVAILABLE = "PROCESSING_TO_AVAILABLE"
18
+ PROCESSING_TO_PRE_ORDER = "PROCESSING_TO_PRE_ORDER"
19
+ AVAILABLE_FOR_SALE_UNRELEASED_APP = "AVAILABLE_FOR_SALE_UNRELEASED_APP"
20
+ PREORDER_ON_UNRELEASED_APP = "PREORDER_ON_UNRELEASED_APP"
21
+ AVAILABLE_FOR_PREORDER = "AVAILABLE_FOR_PREORDER"
22
+ MISSING_RATING = "MISSING_RATING"
23
+ CANNOT_SELL_RESTRICTED_RATING = "CANNOT_SELL_RESTRICTED_RATING"
24
+ BRAZIL_REQUIRED_TAX_ID = "BRAZIL_REQUIRED_TAX_ID"
25
+ MISSING_GRN = "MISSING_GRN"
26
+ UNVERIFIED_GRN = "UNVERIFIED_GRN"
27
+ CANNOT_SELL_SEVENTEEN_PLUS_APPS = "CANNOT_SELL_SEVENTEEN_PLUS_APPS"
28
+ CANNOT_SELL_SEXUALLY_EXPLICIT = "CANNOT_SELL_SEXUALLY_EXPLICIT"
29
+ CANNOT_SELL_NON_IOS_GAMES = "CANNOT_SELL_NON_IOS_GAMES"
30
+ CANNOT_SELL_SEVENTEEN_PLUS_GAMES = "CANNOT_SELL_SEVENTEEN_PLUS_GAMES"
31
+ CANNOT_SELL_FREQUENT_INTENSE_GAMBLING = "CANNOT_SELL_FREQUENT_INTENSE_GAMBLING"
32
+ CANNOT_SELL_CASINO = "CANNOT_SELL_CASINO"
33
+ CANNOT_SELL_CASINO_WITHOUT_GRAC = "CANNOT_SELL_CASINO_WITHOUT_GRAC"
34
+ CANNOT_SELL_CASINO_WITHOUT_AGE_VERIFICATION = "CANNOT_SELL_CASINO_WITHOUT_AGE_VERIFICATION"
35
+ CANNOT_SELL_FREQUENT_INTENSE_ALCOHOL_TOBACCO_DRUGS = "CANNOT_SELL_FREQUENT_INTENSE_ALCOHOL_TOBACCO_DRUGS"
36
+ CANNOT_SELL_FREQUENT_INTENSE_VIOLENCE = "CANNOT_SELL_FREQUENT_INTENSE_VIOLENCE"
37
+ CANNOT_SELL_FREQUENT_INTENSE_SEXUAL_CONTENT_NUDITY = "CANNOT_SELL_FREQUENT_INTENSE_SEXUAL_CONTENT_NUDITY"
38
+ CANNOT_SELL_INFREQUENT_MILD_ALCOHOL_TOBACCO_DRUGS = "CANNOT_SELL_INFREQUENT_MILD_ALCOHOL_TOBACCO_DRUGS"
39
+ CANNOT_SELL_INFREQUENT_MILD_SEXUAL_CONTENT_NUDITY = "CANNOT_SELL_INFREQUENT_MILD_SEXUAL_CONTENT_NUDITY"
40
+ CANNOT_SELL_ADULT_ONLY = "CANNOT_SELL_ADULT_ONLY"
41
+ CANNOT_SELL_FREQUENT_INTENSE = "CANNOT_SELL_FREQUENT_INTENSE"
42
+ CANNOT_SELL_FREQUENT_INTENSE_WITHOUT_GRAC = "CANNOT_SELL_FREQUENT_INTENSE_WITHOUT_GRAC"
43
+ CANNOT_SELL_GAMBLING_CONTESTS = "CANNOT_SELL_GAMBLING_CONTESTS"
44
+ CANNOT_SELL_GAMBLING = "CANNOT_SELL_GAMBLING"
45
+ CANNOT_SELL_CONTESTS = "CANNOT_SELL_CONTESTS"
46
+ CANNOT_SELL = "CANNOT_SELL"
47
+ end
48
+
49
+ attr_mapping({
50
+ available: 'available',
51
+ contentStatuses: 'content_statuses',
52
+ preOrderEnabled: 'pre_order_enabled',
53
+ preOrderPublishDate: 'pre_order_publish_date',
54
+ releaseDate: 'release_date'
55
+ })
56
+
57
+ def self.type
58
+ return 'territoryAvailabilities'
59
+ end
60
+ end
61
+ end
62
+ end
@@ -416,6 +416,15 @@ module Spaceship
416
416
  tunes_request_client.patch("#{Version::V1}/appPreviewSets/#{app_preview_set_id}/relationships/appPreviews", body)
417
417
  end
418
418
 
419
+ #
420
+ # appAvailabilities
421
+ #
422
+
423
+ def get_app_availabilities(app_id: nil, filter: nil, includes: nil, limit: nil, sort: nil)
424
+ params = tunes_request_client.build_params(filter: nil, includes: includes, limit: limit, sort: nil)
425
+ tunes_request_client.get("#{Version::V2}/appAvailabilities/#{app_id}", params)
426
+ end
427
+
419
428
  #
420
429
  # availableTerritories
421
430
  #
@@ -38,6 +38,8 @@ require 'spaceship/connect_api/models/custom_app_organization'
38
38
  require 'spaceship/connect_api/models/custom_app_user'
39
39
  require 'spaceship/connect_api/models/pre_release_version'
40
40
 
41
+ require 'spaceship/connect_api/models/app_availability'
42
+ require 'spaceship/connect_api/models/territory_availability'
41
43
  require 'spaceship/connect_api/models/app_data_usage'
42
44
  require 'spaceship/connect_api/models/app_data_usage_category'
43
45
  require 'spaceship/connect_api/models/app_data_usage_data_protection'
@@ -72,7 +72,7 @@ module Spaceship
72
72
  def find(identifier, mac: false)
73
73
  all.find do |app|
74
74
  ((app.apple_id && app.apple_id.casecmp(identifier.to_s) == 0) || (app.bundle_id && app.bundle_id.casecmp(identifier.to_s) == 0)) &&
75
- app.version_sets.any? { |v| (mac ? ["osx"] : ["ios", "appletvos"]).include?(v.platform) }
75
+ app.version_sets.any? { |v| (mac ? ["osx"] : ["ios", "xros", "appletvos"]).include?(v.platform) }
76
76
  end
77
77
  end
78
78
 
@@ -297,6 +297,8 @@ module Spaceship
297
297
  "appletvos"
298
298
  when "MAC_OS"
299
299
  "osx"
300
+ when "VISION_OS"
301
+ "xros"
300
302
  when "IOS"
301
303
  "ios"
302
304
  else
@@ -197,12 +197,37 @@ module Trainer
197
197
  return output
198
198
  end
199
199
 
200
+ # Hotfix: From Xcode 16 beta 3 'xcresulttool get --format json' has been deprecated;
201
+ # '--legacy' flag required to keep on using the command
202
+ def generate_cmd_parse_xcresult(path)
203
+ xcresulttool_cmd = %W(
204
+ xcrun
205
+ xcresulttool
206
+ get
207
+ --format
208
+ json
209
+ --path
210
+ #{path}
211
+ )
212
+
213
+ # e.g. DEVELOPER_DIR=/Applications/Xcode_16_beta_3.app
214
+ # xcresulttool version 23021, format version 3.53 (current)
215
+ match = `xcrun xcresulttool version`.match(/xcresulttool version (?<version>[\d.]+)/)
216
+ version = match[:version]
217
+ xcresulttool_cmd << '--legacy' if Gem::Version.new(version) >= Gem::Version.new(23_021)
218
+
219
+ xcresulttool_cmd.join(' ')
220
+ end
221
+
200
222
  def parse_xcresult(path, output_remove_retry_attempts: false)
201
223
  require 'shellwords'
202
224
  path = Shellwords.escape(path)
203
225
 
204
226
  # Executes xcresulttool to get JSON format of the result bundle object
205
- result_bundle_object_raw = execute_cmd("xcrun xcresulttool get --format json --path #{path}")
227
+ # Hotfix: From Xcode 16 beta 3 'xcresulttool get --format json' has been deprecated; '--legacy' flag required to keep on using the command
228
+ xcresulttool_cmd = generate_cmd_parse_xcresult(path)
229
+
230
+ result_bundle_object_raw = execute_cmd(xcresulttool_cmd)
206
231
  result_bundle_object = JSON.parse(result_bundle_object_raw)
207
232
 
208
233
  # Parses JSON into ActionsInvocationRecord to find a list of all ids for ActionTestPlanRunSummaries
@@ -215,7 +240,7 @@ module Trainer
215
240
  # Maps ids into ActionTestPlanRunSummaries by executing xcresulttool to get JSON
216
241
  # containing specific information for each test summary,
217
242
  summaries = ids.map do |id|
218
- raw = execute_cmd("xcrun xcresulttool get --format json --path #{path} --id #{id}")
243
+ raw = execute_cmd("#{xcresulttool_cmd} --id #{id}")
219
244
  json = JSON.parse(raw)
220
245
  Trainer::XCResult::ActionTestPlanRunSummaries.new(json)
221
246
  end
metadata CHANGED
@@ -1,39 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.221.1
4
+ version: 2.222.0
5
5
  platform: ruby
6
6
  authors:
7
- - Aaron Brager
8
- - Jan Piotrowski
9
- - Roger Oba
7
+ - Olivier Halligon
8
+ - Manu Wallner
9
+ - Max Ott
10
10
  - Luka Mirosevic
11
- - Jérôme Lacoste
12
- - Andrew McBurney
13
- - Helmut Januschka
14
11
  - Joshua Liebowitz
15
- - Maksym Grebenets
12
+ - Iulian Onofrei
16
13
  - Łukasz Grabowski
14
+ - Manish Rathi
15
+ - Jimmy Dee
16
+ - Jan Piotrowski
17
+ - Aaron Brager
17
18
  - Matthew Ellis
18
- - Josh Holtz
19
+ - Jérôme Lacoste
19
20
  - Satoshi Namai
20
- - Jimmy Dee
21
- - Iulian Onofrei
22
- - Olivier Halligon
21
+ - Jorge Revuelta H
22
+ - Andrew McBurney
23
+ - Maksym Grebenets
23
24
  - Fumiya Nakamura
24
- - Manu Wallner
25
25
  - Danielle Tomlinson
26
26
  - Felix Krause
27
- - Stefan Natchev
28
27
  - Kohki Miki
29
- - Jorge Revuelta H
30
- - Max Ott
31
- - Manish Rathi
28
+ - Stefan Natchev
29
+ - Josh Holtz
30
+ - Helmut Januschka
31
+ - Roger Oba
32
32
  - Daniel Jankowski
33
33
  autorequire:
34
34
  bindir: bin
35
35
  cert_chain: []
36
- date: 2024-06-19 00:00:00.000000000 Z
36
+ date: 2024-07-26 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: addressable
@@ -1456,6 +1456,7 @@ files:
1456
1456
  - spaceship/lib/spaceship/connect_api/models/actor.rb
1457
1457
  - spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
1458
1458
  - spaceship/lib/spaceship/connect_api/models/app.rb
1459
+ - spaceship/lib/spaceship/connect_api/models/app_availability.rb
1459
1460
  - spaceship/lib/spaceship/connect_api/models/app_category.rb
1460
1461
  - spaceship/lib/spaceship/connect_api/models/app_data_usage.rb
1461
1462
  - spaceship/lib/spaceship/connect_api/models/app_data_usage_category.rb
@@ -1511,6 +1512,7 @@ files:
1511
1512
  - spaceship/lib/spaceship/connect_api/models/review_submission_item.rb
1512
1513
  - spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb
1513
1514
  - spaceship/lib/spaceship/connect_api/models/territory.rb
1515
+ - spaceship/lib/spaceship/connect_api/models/territory_availability.rb
1514
1516
  - spaceship/lib/spaceship/connect_api/models/user.rb
1515
1517
  - spaceship/lib/spaceship/connect_api/models/user_invitation.rb
1516
1518
  - spaceship/lib/spaceship/connect_api/provisioning/client.rb