fastlane 2.204.3 → 2.205.0

Sign up to get free protection for your applications and to get access to all the features.
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