fastlane 2.204.3 → 2.205.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +102 -102
  3. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/git_commit.rb +4 -6
  6. data/fastlane/lib/fastlane/commands_generator.rb +2 -1
  7. data/fastlane/lib/fastlane/version.rb +1 -1
  8. data/fastlane/swift/Deliverfile.swift +1 -1
  9. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  10. data/fastlane/swift/Fastlane.swift +4 -4
  11. data/fastlane/swift/Gymfile.swift +1 -1
  12. data/fastlane/swift/GymfileProtocol.swift +1 -1
  13. data/fastlane/swift/Matchfile.swift +1 -1
  14. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  15. data/fastlane/swift/Precheckfile.swift +1 -1
  16. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  17. data/fastlane/swift/Scanfile.swift +1 -1
  18. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  19. data/fastlane/swift/Screengrabfile.swift +1 -1
  20. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  21. data/fastlane/swift/Snapshotfile.swift +1 -1
  22. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  23. data/fastlane/swift/SocketClient.swift +2 -2
  24. data/fastlane/swift/formatting/Brewfile.lock.json +14 -14
  25. data/fastlane_core/README.md +1 -0
  26. data/match/lib/match/encryption/openssl.rb +1 -1
  27. data/pilot/lib/pilot/build_manager.rb +2 -2
  28. data/spaceship/lib/spaceship/.client.rb.swp +0 -0
  29. data/spaceship/lib/spaceship/client.rb +13 -25
  30. data/spaceship/lib/spaceship/connect_api/.response.rb.swp +0 -0
  31. data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
  32. data/spaceship/lib/spaceship/connect_api/models/.review_submission.rb.swp +0 -0
  33. data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -1
  34. data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +1 -0
  35. data/spaceship/lib/spaceship/tunes/.tunes_client.rb.swp +0 -0
  36. data/spaceship/lib/spaceship/tunes/app_ratings.rb +6 -6
  37. data/spaceship/lib/spaceship/tunes/iap_families.rb +1 -1
  38. data/spaceship/lib/spaceship/tunes/tunes.rb +0 -1
  39. data/spaceship/lib/spaceship/tunes/tunes_client.rb +9 -12
  40. data/supply/lib/supply/client.rb +2 -7
  41. data/trainer/lib/assets/junit.xml.erb +6 -1
  42. data/trainer/lib/trainer/junit_generator.rb +1 -1
  43. data/trainer/lib/trainer/options.rb +1 -1
  44. data/trainer/lib/trainer/test_parser.rb +13 -0
  45. metadata +24 -21
  46. data/spaceship/lib/spaceship/tunes/user_detail.rb +0 -15
  47. data/trainer/lib/trainer/.test_parser.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2ca29870c7863747d860afa2bec0087b99af7aac40cb8c490393b0396dc32bf
4
- data.tar.gz: 6506f061ee882e689f84dd33ae69be368954022c7ddddc4115224aca6e3f7410
3
+ metadata.gz: 05270744fe6e63c79322a0e642c6293c463bbd6365042b949537a477c1e3d3c4
4
+ data.tar.gz: b2bb49aeec0d22405b99e2f2cc6e2fb946377960eb7e160d11f8f61d6744d32d
5
5
  SHA512:
6
- metadata.gz: 7eb97140c14ff54b2e72c168a354494ec44b29f5439114e55f33428b2c9f43ff89fe73e2ed909da2c529e79d293e2a7c1b30e6de34113900d2da64e234a23598
7
- data.tar.gz: 8d6ee7ca6504a3f5cc749f8e7799f3183ea7b395cbde1f85125d0acac79255d5fd91fbd3c5a6bec83f7bf7931815e9300d00905a8529e5e8d067fcff7cc1d2bd
6
+ metadata.gz: aa3d5be55d5b42f52dfbd77450549aec0691c57dfcdfb95109be75338f5d7a461ea0b83c015cddb65c39c43324ef43172d6b7a2a3d51033b6d99d63c5edb2d66
7
+ data.tar.gz: caaee34991c9a6ff6dca57960d3eab72135f3ba80ce5e29c15b1da530beb59fd8134d03b9831a463b9fc785693a545092436de2fc63bffaeeeb34eaef9f3e509
data/README.md CHANGED
@@ -35,151 +35,145 @@ 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='jérôme-lacoste'>
39
- <a href='https://github.com/lacostej'>
40
- <img src='https://github.com/lacostej.png' width='140px;'>
38
+ <td id='fumiya-nakamura'>
39
+ <a href='https://github.com/nafu'>
40
+ <img src='https://github.com/nafu.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
43
43
  </td>
44
- <td id='josh-holtz'>
45
- <a href='https://github.com/joshdholtz'>
46
- <img src='https://github.com/joshdholtz.png' width='140px;'>
44
+ <td id='luka-mirosevic'>
45
+ <a href='https://github.com/lmirosevic'>
46
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
49
49
  </td>
50
- <td id='max-ott'>
51
- <a href='https://github.com/max-ott'>
52
- <img src='https://github.com/max-ott.png' width='140px;'>
50
+ <td id='felix-krause'>
51
+ <a href='https://github.com/KrauseFx'>
52
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
55
55
  </td>
56
- <td id='manu-wallner'>
57
- <a href='https://github.com/milch'>
58
- <img src='https://github.com/milch.png' width='140px;'>
56
+ <td id='matthew-ellis'>
57
+ <a href='https://github.com/matthewellis'>
58
+ <img src='https://github.com/matthewellis.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
61
61
  </td>
62
- <td id='manish-rathi'>
63
- <a href='https://github.com/crazymanish'>
64
- <img src='https://github.com/crazymanish.png' width='140px;'>
62
+ <td id='satoshi-namai'>
63
+ <a href='https://github.com/ainame'>
64
+ <img src='https://github.com/ainame.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</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
75
  </td>
76
- <td id='kohki-miki'>
77
- <a href='https://github.com/giginet'>
78
- <img src='https://github.com/giginet.png' width='140px;'>
76
+ <td id='roger-oba'>
77
+ <a href='https://github.com/rogerluan'>
78
+ <img src='https://github.com/rogerluan.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
81
81
  </td>
82
- <td id='iulian-onofrei'>
83
- <a href='https://github.com/revolter'>
84
- <img src='https://github.com/revolter.png' width='140px;'>
82
+ <td id='olivier-halligon'>
83
+ <a href='https://github.com/AliSoftware'>
84
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
87
87
  </td>
88
- <td id='jimmy-dee'>
89
- <a href='https://github.com/jdee'>
90
- <img src='https://github.com/jdee.png' width='140px;'>
88
+ <td id='jorge-revuelta-h'>
89
+ <a href='https://github.com/minuscorp'>
90
+ <img src='https://github.com/minuscorp.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'>Jimmy Dee</h4>
92
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></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;'>
94
+ <td id='danielle-tomlinson'>
95
+ <a href='https://github.com/endocrimes'>
96
+ <img src='https://github.com/endocrimes.png' width='140px;'>
97
97
  </a>
98
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
- <td id='daniel-jankowski'>
103
- <a href='https://github.com/mollyIV'>
104
- <img src='https://github.com/mollyIV.png' width='140px;'>
102
+ <td id='manish-rathi'>
103
+ <a href='https://github.com/crazymanish'>
104
+ <img src='https://github.com/crazymanish.png' width='140px;'>
105
105
  </a>
106
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
107
107
  </td>
108
- <td id='satoshi-namai'>
109
- <a href='https://github.com/ainame'>
110
- <img src='https://github.com/ainame.png' width='140px;'>
108
+ <td id='josh-holtz'>
109
+ <a href='https://github.com/joshdholtz'>
110
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
113
113
  </td>
114
- <td id='jorge-revuelta-h'>
115
- <a href='https://github.com/minuscorp'>
116
- <img src='https://github.com/minuscorp.png' width='140px;'>
114
+ <td id='jan-piotrowski'>
115
+ <a href='https://github.com/janpio'>
116
+ <img src='https://github.com/janpio.png' width='140px;'>
117
117
  </a>
118
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
119
119
  </td>
120
- <td id='stefan-natchev'>
121
- <a href='https://github.com/snatchev'>
122
- <img src='https://github.com/snatchev.png' width='140px;'>
120
+ <td id='helmut-januschka'>
121
+ <a href='https://github.com/hjanuschka'>
122
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
125
125
  </td>
126
- <td id='fumiya-nakamura'>
127
- <a href='https://github.com/nafu'>
128
- <img src='https://github.com/nafu.png' width='140px;'>
126
+ <td id='kohki-miki'>
127
+ <a href='https://github.com/giginet'>
128
+ <img src='https://github.com/giginet.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='luka-mirosevic'>
135
- <a href='https://github.com/lmirosevic'>
136
- <img src='https://github.com/lmirosevic.png' width='140px;'>
134
+ <td id='max-ott'>
135
+ <a href='https://github.com/max-ott'>
136
+ <img src='https://github.com/max-ott.png' width='140px;'>
137
137
  </a>
138
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
139
139
  </td>
140
- <td id='felix-krause'>
141
- <a href='https://github.com/KrauseFx'>
142
- <img src='https://github.com/KrauseFx.png' width='140px;'>
140
+ <td id='jimmy-dee'>
141
+ <a href='https://github.com/jdee'>
142
+ <img src='https://github.com/jdee.png' width='140px;'>
143
143
  </a>
144
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
144
+ <h4 align='center'>Jimmy Dee</h4>
145
145
  </td>
146
- <td id='helmut-januschka'>
147
- <a href='https://github.com/hjanuschka'>
148
- <img src='https://github.com/hjanuschka.png' width='140px;'>
146
+ <td id='stefan-natchev'>
147
+ <a href='https://github.com/snatchev'>
148
+ <img src='https://github.com/snatchev.png' width='140px;'>
149
149
  </a>
150
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
151
151
  </td>
152
- <td id='maksym-grebenets'>
153
- <a href='https://github.com/mgrebenets'>
154
- <img src='https://github.com/mgrebenets.png' width='140px;'>
152
+ <td id='daniel-jankowski'>
153
+ <a href='https://github.com/mollyIV'>
154
+ <img src='https://github.com/mollyIV.png' width='140px;'>
155
155
  </a>
156
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
157
157
  </td>
158
- <td id='jan-piotrowski'>
159
- <a href='https://github.com/janpio'>
160
- <img src='https://github.com/janpio.png' width='140px;'>
158
+ <td id='andrew-mcburney'>
159
+ <a href='https://github.com/armcburney'>
160
+ <img src='https://github.com/armcburney.png' width='140px;'>
161
161
  </a>
162
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='roger-oba'>
167
- <a href='https://github.com/rogerluan'>
168
- <img src='https://github.com/rogerluan.png' width='140px;'>
169
- </a>
170
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
171
- </td>
172
- <td id='łukasz-grabowski'>
173
- <a href='https://github.com/lucgrabowski'>
174
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
166
+ <td id='aaron-brager'>
167
+ <a href='https://github.com/getaaron'>
168
+ <img src='https://github.com/getaaron.png' width='140px;'>
175
169
  </a>
176
- <h4 align='center'>Łukasz Grabowski</h4>
170
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
177
171
  </td>
178
- <td id='matthew-ellis'>
179
- <a href='https://github.com/matthewellis'>
180
- <img src='https://github.com/matthewellis.png' width='140px;'>
172
+ <td id='jérôme-lacoste'>
173
+ <a href='https://github.com/lacostej'>
174
+ <img src='https://github.com/lacostej.png' width='140px;'>
181
175
  </a>
182
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
183
177
  </td>
184
178
  <td id='joshua-liebowitz'>
185
179
  <a href='https://github.com/taquitos'>
@@ -187,19 +181,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
187
181
  </a>
188
182
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
189
183
  </td>
190
- <td id='danielle-tomlinson'>
191
- <a href='https://github.com/endocrimes'>
192
- <img src='https://github.com/endocrimes.png' width='140px;'>
184
+ <td id='łukasz-grabowski'>
185
+ <a href='https://github.com/lucgrabowski'>
186
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
193
187
  </a>
194
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
188
+ <h4 align='center'>Łukasz Grabowski</h4>
189
+ </td>
190
+ <td id='iulian-onofrei'>
191
+ <a href='https://github.com/revolter'>
192
+ <img src='https://github.com/revolter.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='aaron-brager'>
199
- <a href='https://github.com/getaaron'>
200
- <img src='https://github.com/getaaron.png' width='140px;'>
198
+ <td id='manu-wallner'>
199
+ <a href='https://github.com/milch'>
200
+ <img src='https://github.com/milch.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -63,7 +63,7 @@ module Fastlane
63
63
  [
64
64
  FastlaneCore::ConfigItem.new(key: :dark,
65
65
  env_name: "FL_BADGE_DARK",
66
- description: "Adds a dark flavored badge ontop of your icon",
66
+ description: "Adds a dark flavored badge on top of your icon",
67
67
  optional: true,
68
68
  type: Boolean,
69
69
  verify_block: proc do |value|
@@ -158,7 +158,7 @@ module Fastlane
158
158
  [
159
159
  FastlaneCore::ConfigItem.new(key: :xcodeproj,
160
160
  env_name: "FL_VERSION_NUMBER_PROJECT",
161
- description: "Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed",
161
+ description: "Path to the Xcode project to read version number from, or its containing directory, optional. If omitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed",
162
162
  optional: true,
163
163
  verify_block: proc do |value|
164
164
  UI.user_error!("Please pass the path to the project or its containing directory, not the workspace path") if value.end_with?(".xcworkspace")
@@ -2,22 +2,20 @@ module Fastlane
2
2
  module Actions
3
3
  class GitCommitAction < Action
4
4
  def self.run(params)
5
- paths = params[:path].map(&:shellescape).join(' ')
6
-
7
- skip_git_hooks = params[:skip_git_hooks] ? '--no-verify' : ''
5
+ paths = params[:path]
6
+ skip_git_hooks = params[:skip_git_hooks] ? ['--no-verify'] : []
8
7
 
9
8
  if params[:allow_nothing_to_commit]
10
9
  # Here we check if the path passed in parameter contains any modification
11
10
  # and we skip the `git commit` command if there is none.
12
11
  # That means you can have other files modified that are not in the path parameter
13
12
  # and still make use of allow_nothing_to_commit.
14
- repo_clean = Actions.sh("git status #{paths} --porcelain").empty?
13
+ repo_clean = Actions.sh('git', 'status', *paths, '--porcelain').empty?
15
14
  UI.success("Nothing to commit, working tree clean ✅.") if repo_clean
16
15
  return if repo_clean
17
16
  end
18
17
 
19
- command = "git commit -m #{params[:message].shellescape} #{paths} #{skip_git_hooks}".strip
20
- result = Actions.sh(command)
18
+ result = Actions.sh('git', 'commit', '-m', params[:message], *paths, *skip_git_hooks)
21
19
  UI.success("Successfully committed \"#{params[:path]}\" 💾.")
22
20
  return result
23
21
  end
@@ -36,7 +36,8 @@ module Fastlane
36
36
  # do not use "include" as it may be some where in the commandline where "env" is required, therefore explicit index->0
37
37
  unless ARGV[0] == "env" || CLIToolsDistributor.running_version_command? || CLIToolsDistributor.running_help_command?
38
38
  # *after* loading the plugins
39
- Fastlane.plugin_manager.load_plugins
39
+ hide_plugins_table = FastlaneCore::Env.truthy?("FASTLANE_HIDE_PLUGINS_TABLE")
40
+ Fastlane.plugin_manager.load_plugins(print_table: !hide_plugins_table)
40
41
  Fastlane::PluginUpdateManager.start_looking_for_updates
41
42
  end
42
43
  self.new.run
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.204.3'.freeze
2
+ VERSION = '2.205.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
@@ -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.204.3
20
+ // Generated with fastlane 2.205.0
@@ -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.99]
263
+ // FastlaneRunnerAPIVersion [0.9.100]
@@ -1111,7 +1111,7 @@ public func backupXcarchive(xcarchive: String,
1111
1111
  Automatically add a badge to your app icon
1112
1112
 
1113
1113
  - parameters:
1114
- - dark: Adds a dark flavored badge ontop of your icon
1114
+ - dark: Adds a dark flavored badge on top of your icon
1115
1115
  - custom: Add your custom overlay/badge image
1116
1116
  - noBadge: Hides the beta badge
1117
1117
  - shield: Add a shield to your app icon from shields.io
@@ -5110,7 +5110,7 @@ public func getPushCertificate(platform: String = "ios",
5110
5110
  Get the version number of your project
5111
5111
 
5112
5112
  - parameters:
5113
- - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
5113
+ - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If omitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
5114
5114
  - target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
5115
5115
  - configuration: Configuration name, optional. Will be needed if you have altered the configurations from the default or your version number depends on the configuration selected
5116
5116
 
@@ -11464,7 +11464,7 @@ public func testflight(apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefau
11464
11464
  - parameters:
11465
11465
  - path: Path to the directory that should be converted
11466
11466
  - extension: The extension for the newly created file. Usually .xml or .junit
11467
- - outputDirectory: Directoy in which the xml files should be written to. Same directory as source by default
11467
+ - outputDirectory: Directory in which the xml files should be written to. Same directory as source by default
11468
11468
  - outputFilename: Filename the xml file should be written to. Defaults to name of input file. (Only works if one input file is used)
11469
11469
  - failBuild: Should this step stop the build if the tests fail? Set this to false if you're handling this with a test reporter
11470
11470
  - xcprettyNaming: Produces class name and test name identical to xcpretty naming in junit file
@@ -13430,4 +13430,4 @@ public let snapshotfile: Snapshotfile = .init()
13430
13430
 
13431
13431
  // Please don't remove the lines below
13432
13432
  // They are used to detect outdated files
13433
- // FastlaneRunnerAPIVersion [0.9.152]
13433
+ // FastlaneRunnerAPIVersion [0.9.153]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.0
@@ -204,4 +204,4 @@ public extension GymfileProtocol {
204
204
 
205
205
  // Please don't remove the lines below
206
206
  // They are used to detect outdated files
207
- // FastlaneRunnerAPIVersion [0.9.102]
207
+ // FastlaneRunnerAPIVersion [0.9.103]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.0
@@ -196,4 +196,4 @@ public extension MatchfileProtocol {
196
196
 
197
197
  // Please don't remove the lines below
198
198
  // They are used to detect outdated files
199
- // FastlaneRunnerAPIVersion [0.9.96]
199
+ // FastlaneRunnerAPIVersion [0.9.97]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.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.95]
55
+ // FastlaneRunnerAPIVersion [0.9.96]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.0
@@ -312,4 +312,4 @@ public extension ScanfileProtocol {
312
312
 
313
313
  // Please don't remove the lines below
314
314
  // They are used to detect outdated files
315
- // FastlaneRunnerAPIVersion [0.9.107]
315
+ // FastlaneRunnerAPIVersion [0.9.108]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.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.97]
99
+ // FastlaneRunnerAPIVersion [0.9.98]
@@ -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.204.3
20
+ // Generated with fastlane 2.205.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.91]
207
+ // FastlaneRunnerAPIVersion [0.9.92]
@@ -206,7 +206,7 @@ class SocketClient: NSObject {
206
206
  extension SocketClient: StreamDelegate {
207
207
  func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
208
208
  guard !cleaningUpAfterDone else {
209
- // Still getting response from server eventhough we are done.
209
+ // Still getting response from server even though we are done.
210
210
  // No big deal, we're closing the streams anyway.
211
211
  // That being said, we need to balance out the dispatchGroups
212
212
  dispatchGroup.leave()
@@ -244,7 +244,7 @@ extension SocketClient: StreamDelegate {
244
244
 
245
245
  case Stream.Event.errorOccurred:
246
246
  // probably safe to close all the things because Ruby already disconnected
247
- verbose(message: "output stream recevied error")
247
+ verbose(message: "output stream received error")
248
248
 
249
249
  case Stream.Event.endEncountered:
250
250
  // nothing special here
@@ -2,35 +2,35 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.49.4",
5
+ "version": "0.49.6",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_monterey": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:8253553ad8c6ce8550175e1152e82d80ce125fa4045a890941e1e6e915104e05",
13
- "sha256": "8253553ad8c6ce8550175e1152e82d80ce125fa4045a890941e1e6e915104e05"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:0e8e1fe019fd98a5cb6d75e31130eedcb65546693eb385a06948b940da7125d3",
13
+ "sha256": "0e8e1fe019fd98a5cb6d75e31130eedcb65546693eb385a06948b940da7125d3"
14
14
  },
15
15
  "arm64_big_sur": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d569c123783a70a2020f3b27de99eb7a17cfb393295e04d56c73b72212a3bf49",
18
- "sha256": "d569c123783a70a2020f3b27de99eb7a17cfb393295e04d56c73b72212a3bf49"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:916c5eaf7600aa9a6bf7fc4d3998b1b165b5b354de260ce6e13bbc4ff3167ff1",
18
+ "sha256": "916c5eaf7600aa9a6bf7fc4d3998b1b165b5b354de260ce6e13bbc4ff3167ff1"
19
19
  },
20
20
  "monterey": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:4203004748fbc1eb752fc9b9b59f94627a7d5cc50ec9c0cafdbccfd3deca8558",
23
- "sha256": "4203004748fbc1eb752fc9b9b59f94627a7d5cc50ec9c0cafdbccfd3deca8558"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:8ddd11b5e105b148b8919e9c44d851e845e9c31ed7cf8a9b92b2369bd0df98d5",
23
+ "sha256": "8ddd11b5e105b148b8919e9c44d851e845e9c31ed7cf8a9b92b2369bd0df98d5"
24
24
  },
25
25
  "big_sur": {
26
26
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d9781aa3d22021a0dbc3f96e5d9604b1de9b269e9ce502e4a7eedf710a6aa555",
28
- "sha256": "d9781aa3d22021a0dbc3f96e5d9604b1de9b269e9ce502e4a7eedf710a6aa555"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c1fd4ae18452ea62e6d33ca0554fa4df5f646a22abffe7f5d489c397945b7ea9",
28
+ "sha256": "c1fd4ae18452ea62e6d33ca0554fa4df5f646a22abffe7f5d489c397945b7ea9"
29
29
  },
30
30
  "catalina": {
31
31
  "cellar": ":any_skip_relocation",
32
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:13bf74f3ee6e5afb272cc9897cc7a660a738e30137e9be7d240cfa8c18aeb8c1",
33
- "sha256": "13bf74f3ee6e5afb272cc9897cc7a660a738e30137e9be7d240cfa8c18aeb8c1"
32
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:f1ffad5c8bbfe80659f51b7cc54062c736fed1ff79b71b8f648d8e4552d8b752",
33
+ "sha256": "f1ffad5c8bbfe80659f51b7cc54062c736fed1ff79b71b8f648d8e4552d8b752"
34
34
  }
35
35
  }
36
36
  }
@@ -56,12 +56,12 @@
56
56
  "macOS": "11.0.1"
57
57
  },
58
58
  "monterey": {
59
- "HOMEBREW_VERSION": "3.3.14-58-g02ceb18",
59
+ "HOMEBREW_VERSION": "3.4.2",
60
60
  "HOMEBREW_PREFIX": "/opt/homebrew",
61
- "Homebrew/homebrew-core": "23ce0d29228c3f5f9c70211d7f8db2e0ffc8dd4e",
61
+ "Homebrew/homebrew-core": "2bb93b970fc848684d530a8944751b5e93fdb7ed",
62
62
  "CLT": "13.2.0.0.1.1638488800",
63
63
  "Xcode": "13.2.1",
64
- "macOS": "12.0.1"
64
+ "macOS": "12.2.1"
65
65
  }
66
66
  }
67
67
  }
@@ -23,6 +23,7 @@ You can hide the inline changelog by setting the `FASTLANE_HIDE_CHANGELOG` envir
23
23
 
24
24
  - To hide timestamps in each row, set the `FASTLANE_HIDE_TIMESTAMP` environment variable to true.
25
25
  - To disable output formatting, set the `FASTLANE_DISABLE_OUTPUT_FORMAT` environment variable to true.
26
+ - To prevent _fastlane_ from printing the plugins table on every lane run, set the `FASTLANE_HIDE_PLUGINS_TABLE` environment variable to true.
26
27
 
27
28
  ## Interacting with the user
28
29
 
@@ -135,7 +135,7 @@ module Match
135
135
  UI.crash!("Error encrypting '#{path}'")
136
136
  end
137
137
 
138
- # The encryption parameters in this implementations reflect the old behaviour which depended on the users' local OpenSSL version
138
+ # The encryption parameters in this implementations reflect the old behavior which depended on the users' local OpenSSL version
139
139
  # 1.0.x OpenSSL and earlier versions use MD5, 1.1.0c and newer uses SHA256, we try both before giving an error
140
140
  def decrypt_specific_file(path: nil, password: nil, hash_algorithm: "MD5")
141
141
  stored_data = Base64.decode64(File.read(path))
@@ -402,8 +402,8 @@ module Pilot
402
402
  return generic_transporter unless tunes_client.teams.count > 1
403
403
 
404
404
  begin
405
- team = tunes_client.teams.find { |t| t['contentProvider']['contentProviderId'].to_s == tunes_client.team_id }
406
- name = team['contentProvider']['name']
405
+ team = tunes_client.teams.find { |t| t['providerId'].to_s == tunes_client.team_id }
406
+ name = team['name']
407
407
  provider_id = generic_transporter.provider_ids[name]
408
408
  UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
409
409
  return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id)
@@ -70,10 +70,10 @@ module Spaceship
70
70
 
71
71
  # @return (Array) A list of all available teams
72
72
  def teams
73
- user_details_data['associatedAccounts'].sort_by do |team|
73
+ user_details_data['availableProviders'].sort_by do |team|
74
74
  [
75
- team['contentProvider']['name'],
76
- team['contentProvider']['contentProviderId']
75
+ team['name'],
76
+ team['providerId']
77
77
  ]
78
78
  end
79
79
  end
@@ -124,8 +124,8 @@ module Spaceship
124
124
  # "userName"=>"detlef@krausefx.com"}
125
125
  def user_details_data
126
126
  return @_cached_user_details if @_cached_user_details
127
- r = request(:get, '/WebObjects/iTunesConnect.woa/ra/user/detail')
128
- @_cached_user_details = parse_response(r, 'data')
127
+ r = request(:get, "https://appstoreconnect.apple.com/olympus/v1/session")
128
+ @_cached_user_details = parse_response(r)
129
129
  end
130
130
 
131
131
  # @return (String) The currently selected Team ID
@@ -135,7 +135,7 @@ module Spaceship
135
135
  if teams.count > 1
136
136
  puts("The current user is in #{teams.count} teams. Pass a team ID or call `select_team` to choose a team. Using the first one for now.")
137
137
  end
138
- @current_team_id ||= user_details_data['sessionToken']['contentProviderId']
138
+ @current_team_id ||= user_details_data['provider']['providerId']
139
139
  end
140
140
 
141
141
  # Set a new team ID which will be used from now on
@@ -144,12 +144,11 @@ module Spaceship
144
144
  # following confusing error message
145
145
  #
146
146
  # invalid content provider id
147
- #
148
147
  available_teams = teams.collect do |team|
149
148
  {
150
- team_id: (team["contentProvider"] || {})["contentProviderId"],
151
- public_team_id: (team["contentProvider"] || {})["contentProviderPublicId"],
152
- team_name: (team["contentProvider"] || {})["name"]
149
+ team_id: team["providerId"],
150
+ public_team_id: team["publicProviderId"],
151
+ team_name: team["name"]
153
152
  }
154
153
  end
155
154
 
@@ -163,21 +162,10 @@ module Spaceship
163
162
  end
164
163
 
165
164
  response = request(:post) do |req|
166
- req.url("https://appstoreconnect.apple.com/olympus/v1/providerSwitchRequests")
167
- req.body = {
168
- "data": {
169
- "type": "providerSwitchRequests",
170
- "relationships": {
171
- "provider": {
172
- "data": {
173
- "type": "providers",
174
- "id": result[:public_team_id]
175
- }
176
- }
177
- }
178
- }
179
- }.to_json
165
+ req.url("https://appstoreconnect.apple.com/olympus/v1/session")
166
+ req.body = { "provider": { "providerId": result[:team_id] } }.to_json
180
167
  req.headers['Content-Type'] = 'application/json'
168
+ req.headers['X-Requested-With'] = 'olympus-ui'
181
169
  end
182
170
 
183
171
  handle_itc_response(response.body)
@@ -546,7 +534,7 @@ module Spaceship
546
534
  raise AppleIDAndPrivacyAcknowledgementNeeded.new, "Need to acknowledge to Apple's Apple ID and Privacy statement. " \
547
535
  "Please manually log into https://appleid.apple.com (or https://appstoreconnect.apple.com) to acknowledge the statement. " \
548
536
  "Your account might also be asked to upgrade to 2FA. " \
549
- "Set SPACESHIP_SKIP_2FA_UPGRADE=1 for fastlane to automaticaly bypass 2FA upgrade if possible."
537
+ "Set SPACESHIP_SKIP_2FA_UPGRADE=1 for fastlane to automatically bypass 2FA upgrade if possible."
550
538
  elsif (response['Set-Cookie'] || "").include?("itctx")
551
539
  raise "Looks like your Apple ID is not enabled for App Store Connect, make sure to be able to login online"
552
540
  else
@@ -436,7 +436,8 @@ module Spaceship
436
436
  filter = {
437
437
  state: [
438
438
  Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::WAITING_FOR_REVIEW,
439
- Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::IN_REVIEW
439
+ Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::IN_REVIEW,
440
+ Spaceship::ConnectAPI::ReviewSubmission::ReviewSubmissionState::UNRESOLVED_ISSUES
440
441
  ].join(","),
441
442
  platform: platform
442
443
  }
@@ -20,6 +20,7 @@ module Spaceship
20
20
  COMPLETE = "COMPLETE"
21
21
  IN_REVIEW = "IN_REVIEW"
22
22
  READY_FOR_REVIEW = "READY_FOR_REVIEW"
23
+ UNRESOLVED_ISSUES = "UNRESOLVED_ISSUES"
23
24
  WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW"
24
25
  end
25
26
 
@@ -8,22 +8,22 @@ module Spaceship
8
8
  # this version is for
9
9
  attr_accessor :application
10
10
 
11
- # @return (Integer) total number of ratings recevied
11
+ # @return (Integer) total number of ratings received
12
12
  attr_accessor :rating_count
13
13
 
14
- # @return (Integer) total number of one star ratings recevied
14
+ # @return (Integer) total number of one star ratings received
15
15
  attr_accessor :one_star_rating_count
16
16
 
17
- # @return (Integer) total number of two star ratings recevied
17
+ # @return (Integer) total number of two star ratings received
18
18
  attr_accessor :two_star_rating_count
19
19
 
20
- # @return (Integer) total number of three star ratings recevied
20
+ # @return (Integer) total number of three star ratings received
21
21
  attr_accessor :three_star_rating_count
22
22
 
23
- # @return (Integer) total number of four star ratings recevied
23
+ # @return (Integer) total number of four star ratings received
24
24
  attr_accessor :four_star_rating_count
25
25
 
26
- # @return (Integer) total number of five star ratings recevied
26
+ # @return (Integer) total number of five star ratings received
27
27
  attr_accessor :five_star_rating_count
28
28
 
29
29
  attr_mapping({
@@ -7,7 +7,7 @@ module Spaceship
7
7
  attr_accessor :application
8
8
 
9
9
  # Create a new Purchase Family
10
- # a freshly created family has to have atleast one product.
10
+ # a freshly created family has to have at least one product.
11
11
  # the product will be created, and versions/pricing_intervals and so on
12
12
  # should be set by subsequent edit.
13
13
  # @param name (String) Familyname
@@ -14,7 +14,6 @@ require_relative 'app_version_ref'
14
14
  require_relative 'app_version_history'
15
15
  require_relative 'app_version_states_history'
16
16
  require_relative 'transit_app_file'
17
- require_relative 'user_detail'
18
17
  require_relative 'app_screenshot'
19
18
  require_relative 'language_converter'
20
19
  require_relative 'build'
@@ -9,7 +9,6 @@ require_relative 'errors'
9
9
  require_relative 'iap_subscription_pricing_tier'
10
10
  require_relative 'pricing_tier'
11
11
  require_relative 'territory'
12
- require_relative 'user_detail'
13
12
  module Spaceship
14
13
  # rubocop:disable Metrics/ClassLength
15
14
  class TunesClient < Spaceship::Client
@@ -72,13 +71,13 @@ module Spaceship
72
71
  puts("Looking for App Store Connect Team with name #{t_name}") if Spaceship::Globals.verbose?
73
72
 
74
73
  teams.each do |t|
75
- t_id = t['contentProvider']['contentProviderId'].to_s if t['contentProvider']['name'].casecmp(t_name).zero?
74
+ t_id = t['providerId'].to_s if t['name'].casecmp(t_name).zero?
76
75
  end
77
76
 
78
77
  puts("Could not find team with name '#{t_name}', trying to fallback to default team") if t_id.length.zero?
79
78
  end
80
79
 
81
- t_id = teams.first['contentProvider']['contentProviderId'].to_s if teams.count == 1
80
+ t_id = teams.first['providerId'].to_s if teams.count == 1
82
81
 
83
82
  if t_id.length > 0
84
83
  puts("Looking for App Store Connect Team with ID #{t_id}") if Spaceship::Globals.verbose?
@@ -950,13 +949,6 @@ module Spaceship
950
949
  Spaceship::Tunes::AppVersionRef.factory(data)
951
950
  end
952
951
 
953
- # Fetches the User Detail information from ITC. This gets called often and almost never changes
954
- # so we cache it
955
- # @return [UserDetail] the response
956
- def user_detail_data
957
- @_cached_user_detail_data ||= Spaceship::Tunes::UserDetail.factory(user_details_data, self)
958
- end
959
-
960
952
  #####################################################
961
953
  # @!group CandiateBuilds
962
954
  #####################################################
@@ -1582,9 +1574,14 @@ module Spaceship
1582
1574
  @sso_token_for_video = nil
1583
1575
  end
1584
1576
 
1585
- # the contentProviderIr found in the UserDetail instance
1577
+ # the contentProviderId found in the user details data
1586
1578
  def content_provider_id
1587
- @content_provider_id ||= user_detail_data.content_provider_id
1579
+ return @content_provider_id if @content_provider_id
1580
+
1581
+ provider = user_details_data["provider"]["providerId"]
1582
+ @content_provider_id ||= provider.to_s if provider
1583
+
1584
+ return @content_provider_id
1588
1585
  end
1589
1586
 
1590
1587
  # the ssoTokenForImage found in the AppVersionRef instance
@@ -266,14 +266,9 @@ module Supply
266
266
  filtered_tracks = tracks.select { |t| !t.releases.nil? && t.releases.any? { |r| r.name == version } }
267
267
 
268
268
  if filtered_tracks.length > 1
269
- # Production track takes precedence if version is present in multiple tracks
269
+ # Prefer tracks in production, beta, alpha, internal order
270
270
  # E.g.: A release might've been promoted from Alpha/Beta track. This means the release will be present in two or more tracks
271
- if filtered_tracks.any? { |t| t.track == Supply::Tracks::DEFAULT }
272
- filtered_tracks = filtered_tracks.select { |t| t.track == Supply::Tracks::DEFAULT }
273
- else
274
- # E.g.: A release might be in both Alpha & Beta (not sure if this is possible, just catching if it ever happens), giving Beta precedence.
275
- filtered_tracks = filtered_tracks.select { |t| t.track == Supply::Tracks::BETA }
276
- end
271
+ filtered_tracks = filtered_tracks.sort_by { |t| Supply::Tracks::DEFAULTS.index(t.track) || Float::INFINITY }
277
272
  end
278
273
 
279
274
  filtered_track = filtered_tracks.first
@@ -7,6 +7,11 @@
7
7
  <testsuites tests="<%= number_of_tests %>" failures="<%= number_of_failures %>">
8
8
  <% @results.each do |testsuite| %>
9
9
  <testsuite name=<%= (testsuite[:target_name].nil? ? testsuite[:test_name] : testsuite[:target_name]).encode(:xml => :attr) %> tests="<%= testsuite[:number_of_tests_excluding_retries] %>" failures="<%= testsuite[:number_of_failures_excluding_retries] %>" <% if testsuite[:number_of_skipped] %>skipped="<%= testsuite[:number_of_skipped] %>" <% end %>time="<%= testsuite[:duration] %>">
10
+ <% unless testsuite[:configuration_name].nil? %>
11
+ <properties>
12
+ <property name="Configuration" value="<%= testsuite[:configuration_name] %>"/>
13
+ </properties>
14
+ <% end %>
10
15
  <% testsuite[:tests].each do |test| %>
11
16
  <testcase classname=<%= test[:test_group].encode(:xml => :attr) %> name=<%= test[:name].encode(:xml => :attr) %> time="<%= test[:duration] %>">
12
17
  <% (test[:failures] || []).each do |failure| %>
@@ -15,7 +20,7 @@
15
20
  <% end %>
16
21
  <% if test[:skipped] %>
17
22
  <skipped/>
18
- <% end%>
23
+ <% end %>
19
24
  </testcase>
20
25
  <% end %>
21
26
  </testsuite>
@@ -19,7 +19,7 @@ module Trainer
19
19
 
20
20
  xml = xml.gsub('system_', 'system-').delete("\e") # Jenkins can not parse 'ESC' symbol
21
21
 
22
- # We have to manuall clear empty lines
22
+ # We have to manually clear empty lines
23
23
  # They may contain white spaces
24
24
  clean_xml = []
25
25
  xml.each_line do |row|
@@ -32,7 +32,7 @@ module Trainer
32
32
  env_name: "TRAINER_OUTPUT_DIRECTORY",
33
33
  default_value: nil,
34
34
  optional: true,
35
- description: "Directoy in which the xml files should be written to. Same directory as source by default"),
35
+ description: "Directory in which the xml files should be written to. Same directory as source by default"),
36
36
  FastlaneCore::ConfigItem.new(key: :output_filename,
37
37
  short_option: "-f",
38
38
  env_name: "TRAINER_OUTPUT_FILENAME",
@@ -230,6 +230,8 @@ module Trainer
230
230
  all_summaries = summaries.map(&:summaries).flatten
231
231
  testable_summaries = all_summaries.map(&:testable_summaries).flatten
232
232
 
233
+ summaries_to_names = test_summaries_to_configuration_names(all_summaries)
234
+
233
235
  # Maps ActionTestableSummary to rows for junit generator
234
236
  rows = testable_summaries.map do |testable_summary|
235
237
  all_tests = testable_summary.all_tests.flatten
@@ -317,6 +319,7 @@ module Trainer
317
319
  project_path: testable_summary.project_relative_path,
318
320
  target_name: testable_summary.target_name,
319
321
  test_name: testable_summary.name,
322
+ configuration_name: summaries_to_names[testable_summary],
320
323
  duration: all_tests.map(&:duration).inject(:+),
321
324
  tests: test_rows
322
325
  }
@@ -337,6 +340,16 @@ module Trainer
337
340
  self.data = rows
338
341
  end
339
342
 
343
+ def test_summaries_to_configuration_names(test_summaries)
344
+ summary_to_name = {}
345
+ test_summaries.each do |summary|
346
+ summary.testable_summaries.each do |testable_summary|
347
+ summary_to_name[testable_summary] = summary.name
348
+ end
349
+ end
350
+ summary_to_name
351
+ end
352
+
340
353
  # Convert the Hashes and Arrays in something more useful
341
354
  def parse_content(xcpretty_naming)
342
355
  self.data = self.raw_json["TestableSummaries"].collect do |testable_summary|
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.204.3
4
+ version: 2.205.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jorge Revuelta H
8
- - Roger Oba
7
+ - Łukasz Grabowski
8
+ - Luka Mirosevic
9
+ - Max Ott
9
10
  - Danielle Tomlinson
10
- - Helmut Januschka
11
+ - Andrew McBurney
11
12
  - Jérôme Lacoste
13
+ - Manu Wallner
14
+ - Stefan Natchev
12
15
  - Josh Holtz
13
- - Joshua Liebowitz
14
- - Felix Krause
15
- - Aaron Brager
16
- - Łukasz Grabowski
17
16
  - Fumiya Nakamura
18
- - Iulian Onofrei
17
+ - Helmut Januschka
19
18
  - Jimmy Dee
20
- - Manish Rathi
21
- - Kohki Miki
22
- - Daniel Jankowski
23
19
  - Maksym Grebenets
24
- - Stefan Natchev
20
+ - Daniel Jankowski
21
+ - Roger Oba
22
+ - Jorge Revuelta H
23
+ - Iulian Onofrei
24
+ - Aaron Brager
25
25
  - Satoshi Namai
26
- - Max Ott
27
- - Matthew Ellis
28
- - Luka Mirosevic
29
26
  - Jan Piotrowski
30
27
  - Olivier Halligon
31
- - Manu Wallner
32
- - Andrew McBurney
28
+ - Matthew Ellis
29
+ - Joshua Liebowitz
30
+ - Felix Krause
31
+ - Manish Rathi
32
+ - Kohki Miki
33
33
  autorequire:
34
34
  bindir: bin
35
35
  cert_chain: []
36
- date: 2022-02-11 00:00:00.000000000 Z
36
+ date: 2022-03-18 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: xcodeproj
@@ -1653,14 +1653,18 @@ files:
1653
1653
  - spaceship/lib/assets/languageMapping.json
1654
1654
  - spaceship/lib/assets/languageMappingReadable.json
1655
1655
  - spaceship/lib/spaceship.rb
1656
+ - spaceship/lib/spaceship/.client.rb.swp
1656
1657
  - spaceship/lib/spaceship/base.rb
1657
1658
  - spaceship/lib/spaceship/client.rb
1658
1659
  - spaceship/lib/spaceship/commands_generator.rb
1659
1660
  - spaceship/lib/spaceship/connect_api.rb
1661
+ - spaceship/lib/spaceship/connect_api/.response.rb.swp
1660
1662
  - spaceship/lib/spaceship/connect_api/api_client.rb
1661
1663
  - spaceship/lib/spaceship/connect_api/client.rb
1662
1664
  - spaceship/lib/spaceship/connect_api/file_uploader.rb
1663
1665
  - spaceship/lib/spaceship/connect_api/model.rb
1666
+ - spaceship/lib/spaceship/connect_api/models/.app.rb.swp
1667
+ - spaceship/lib/spaceship/connect_api/models/.review_submission.rb.swp
1664
1668
  - spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
1665
1669
  - spaceship/lib/spaceship/connect_api/models/app.rb
1666
1670
  - spaceship/lib/spaceship/connect_api/models/app_category.rb
@@ -1776,6 +1780,7 @@ files:
1776
1780
  - spaceship/lib/spaceship/test_flight/group.rb
1777
1781
  - spaceship/lib/spaceship/test_flight/test_info.rb
1778
1782
  - spaceship/lib/spaceship/test_flight/tester.rb
1783
+ - spaceship/lib/spaceship/tunes/.tunes_client.rb.swp
1779
1784
  - spaceship/lib/spaceship/tunes/app_analytics.rb
1780
1785
  - spaceship/lib/spaceship/tunes/app_details.rb
1781
1786
  - spaceship/lib/spaceship/tunes/app_image.rb
@@ -1828,7 +1833,6 @@ files:
1828
1833
  - spaceship/lib/spaceship/tunes/tunes.rb
1829
1834
  - spaceship/lib/spaceship/tunes/tunes_base.rb
1830
1835
  - spaceship/lib/spaceship/tunes/tunes_client.rb
1831
- - spaceship/lib/spaceship/tunes/user_detail.rb
1832
1836
  - spaceship/lib/spaceship/tunes/version_set.rb
1833
1837
  - spaceship/lib/spaceship/two_step_or_factor_client.rb
1834
1838
  - spaceship/lib/spaceship/ui.rb
@@ -1848,7 +1852,6 @@ files:
1848
1852
  - trainer/lib/.DS_Store
1849
1853
  - trainer/lib/assets/junit.xml.erb
1850
1854
  - trainer/lib/trainer.rb
1851
- - trainer/lib/trainer/.test_parser.rb.swp
1852
1855
  - trainer/lib/trainer/commands_generator.rb
1853
1856
  - trainer/lib/trainer/junit_generator.rb
1854
1857
  - trainer/lib/trainer/module.rb
@@ -1,15 +0,0 @@
1
- require_relative 'tunes_base'
2
-
3
- module Spaceship
4
- module Tunes
5
- class UserDetail < TunesBase
6
- attr_accessor :content_provider_id
7
- attr_accessor :ds_id # used for the team selection (https://github.com/fastlane/fastlane/issues/6711)
8
-
9
- attr_mapping(
10
- 'contentProviderId' => :content_provider_id,
11
- 'sessionToken.dsId' => :ds_id
12
- )
13
- end
14
- end
15
- end