fastlane 2.152.0 → 2.153.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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -76
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -1
  4. data/deliver/lib/deliver/commands_generator.rb +7 -4
  5. data/deliver/lib/deliver/detect_values.rb +9 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -3
  7. data/deliver/lib/deliver/runner.rb +5 -10
  8. data/deliver/lib/deliver/setup.rb +94 -3
  9. data/deliver/lib/deliver/submit_for_review.rb +1 -3
  10. data/deliver/lib/deliver/upload_metadata.rb +25 -22
  11. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  12. data/deliver/lib/deliver/upload_screenshots.rb +75 -44
  13. data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
  14. data/fastlane/lib/fastlane/actions/.git_commit.rb.swp +0 -0
  15. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  16. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -1
  17. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  18. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  19. data/fastlane/lib/fastlane/runner.rb +3 -1
  20. data/fastlane/lib/fastlane/version.rb +1 -1
  21. data/fastlane/swift/Deliverfile.swift +1 -1
  22. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  23. data/fastlane/swift/Fastlane.swift +7 -4
  24. data/fastlane/swift/Gymfile.swift +1 -1
  25. data/fastlane/swift/GymfileProtocol.swift +1 -1
  26. data/fastlane/swift/Matchfile.swift +1 -1
  27. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  28. data/fastlane/swift/Precheckfile.swift +1 -1
  29. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  30. data/fastlane/swift/Scanfile.swift +1 -1
  31. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  32. data/fastlane/swift/Screengrabfile.swift +1 -1
  33. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  34. data/fastlane/swift/Snapshotfile.swift +1 -1
  35. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  36. data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -6
  37. data/frameit/lib/frameit/editor.rb +8 -5
  38. data/scan/lib/scan/runner.rb +19 -6
  39. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  40. data/spaceship/lib/spaceship/connect_api/client.rb +2 -2
  41. data/spaceship/lib/spaceship/connect_api/model.rb +10 -0
  42. data/spaceship/lib/spaceship/connect_api/models/.app_screenshot.rb.swp +0 -0
  43. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  44. data/spaceship/lib/spaceship/connect_api/models/app.rb +40 -2
  45. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  46. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
  47. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  48. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  49. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +10 -0
  50. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  51. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  52. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  53. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  54. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  55. metadata +34 -59
  56. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  57. data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0172d03e9f2dcbb76ce58ce0064caa8e107e0aeba78f63376ed1d9eb3a9e41e
4
- data.tar.gz: fcc74d8f86f188653c4395c50c4da7ed5660d6c065816779af45d100855e68ea
3
+ metadata.gz: '0738d9e2b7948bc5c029fff4cc5314accc0285c7e9fa0652c7526c58d4512dbd'
4
+ data.tar.gz: 2999ba6d7c1c5784969196e9d2efe9da82561c74ac218af83e5533a7c28babaa
5
5
  SHA512:
6
- metadata.gz: 885d5bec8f98d24a8cfa4091d956fbba3a5e13fb09edaa76549608aacc90568ac698c1143bfa041f310702a31d8080170afd804b2d98b1af18f75bff657fd66d
7
- data.tar.gz: e2c9b1dc7e9830a79d3ee841f377dfdf541680f8efa9ee2df9867b46459530856cc07c0e99652749b9af9fa4571688e895e19f2af9692e4a188b74ee8f69f1fa
6
+ metadata.gz: 94463ea90394a490270ec45cd7a47123cd8da45f7aa1649f302fdabc3e315864bd1366861730ca57a31748f7bd90cc39a5f6d61c67a7ecfb29eccb0be99f457e
7
+ data.tar.gz: a23b7a7e5e74c7301222b9700b8cc6b73124842530fc417987eb95b62ae7d0be65c88b190f0d22c5b847bbb9ed55ad413d1f25c6eb3a20b011ade15af119088b
data/README.md CHANGED
@@ -34,49 +34,29 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='max-ott'>
38
- <a href='https://github.com/max-ott'>
39
- <img src='https://github.com/max-ott.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
42
- </td>
43
- <td id='jimmy-dee'>
44
- <a href='https://github.com/jdee'>
45
- <img src='https://github.com/jdee.png?size=140'>
46
- </a>
47
- <h4 align='center'>Jimmy Dee</h4>
48
- </td>
49
- <td id='kohki-miki'>
50
- <a href='https://github.com/giginet'>
51
- <img src='https://github.com/giginet.png?size=140'>
52
- </a>
53
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
54
- </td>
55
- <td id='olivier-halligon'>
56
- <a href='https://github.com/AliSoftware'>
57
- <img src='https://github.com/AliSoftware.png?size=140'>
37
+ <td id='andrew-mcburney'>
38
+ <a href='https://github.com/armcburney'>
39
+ <img src='https://github.com/armcburney.png?size=140'>
58
40
  </a>
59
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
60
42
  </td>
61
- <td id='jan-piotrowski'>
62
- <a href='https://github.com/janpio'>
63
- <img src='https://github.com/janpio.png?size=140'>
43
+ <td id='josh-holtz'>
44
+ <a href='https://github.com/joshdholtz'>
45
+ <img src='https://github.com/joshdholtz.png?size=140'>
64
46
  </a>
65
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
66
48
  </td>
67
- </tr>
68
- <tr>
69
49
  <td id='daniel-jankowski'>
70
50
  <a href='https://github.com/mollyIV'>
71
51
  <img src='https://github.com/mollyIV.png?size=140'>
72
52
  </a>
73
53
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
74
54
  </td>
75
- <td id='matthew-ellis'>
76
- <a href='https://github.com/matthewellis'>
77
- <img src='https://github.com/matthewellis.png?size=140'>
55
+ <td id='max-ott'>
56
+ <a href='https://github.com/max-ott'>
57
+ <img src='https://github.com/max-ott.png?size=140'>
78
58
  </a>
79
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
80
60
  </td>
81
61
  <td id='helmut-januschka'>
82
62
  <a href='https://github.com/hjanuschka'>
@@ -84,11 +64,13 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
84
64
  </a>
85
65
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
86
66
  </td>
87
- <td id='josh-holtz'>
88
- <a href='https://github.com/joshdholtz'>
89
- <img src='https://github.com/joshdholtz.png?size=140'>
67
+ </tr>
68
+ <tr>
69
+ <td id='luka-mirosevic'>
70
+ <a href='https://github.com/lmirosevic'>
71
+ <img src='https://github.com/lmirosevic.png?size=140'>
90
72
  </a>
91
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
92
74
  </td>
93
75
  <td id='fumiya-nakamura'>
94
76
  <a href='https://github.com/nafu'>
@@ -96,31 +78,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
96
78
  </a>
97
79
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
98
80
  </td>
99
- </tr>
100
- <tr>
101
- <td id='andrew-mcburney'>
102
- <a href='https://github.com/armcburney'>
103
- <img src='https://github.com/armcburney.png?size=140'>
104
- </a>
105
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
106
- </td>
107
- <td id='iulian-onofrei'>
108
- <a href='https://github.com/revolter'>
109
- <img src='https://github.com/revolter.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
112
- </td>
113
- <td id='luka-mirosevic'>
114
- <a href='https://github.com/lmirosevic'>
115
- <img src='https://github.com/lmirosevic.png?size=140'>
81
+ <td id='olivier-halligon'>
82
+ <a href='https://github.com/AliSoftware'>
83
+ <img src='https://github.com/AliSoftware.png?size=140'>
116
84
  </a>
117
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
118
86
  </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
87
+ <td id='kohki-miki'>
88
+ <a href='https://github.com/giginet'>
89
+ <img src='https://github.com/giginet.png?size=140'>
122
90
  </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
124
92
  </td>
125
93
  <td id='felix-krause'>
126
94
  <a href='https://github.com/KrauseFx'>
@@ -130,17 +98,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
130
98
  </td>
131
99
  </tr>
132
100
  <tr>
133
- <td id='jérôme-lacoste'>
134
- <a href='https://github.com/lacostej'>
135
- <img src='https://github.com/lacostej.png?size=140'>
101
+ <td id='stefan-natchev'>
102
+ <a href='https://github.com/snatchev'>
103
+ <img src='https://github.com/snatchev.png?size=140'>
136
104
  </a>
137
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
138
106
  </td>
139
- <td id='joshua-liebowitz'>
140
- <a href='https://github.com/taquitos'>
141
- <img src='https://github.com/taquitos.png?size=140'>
107
+ <td id='jorge-revuelta-h'>
108
+ <a href='https://github.com/minuscorp'>
109
+ <img src='https://github.com/minuscorp.png?size=140'>
142
110
  </a>
143
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
112
+ </td>
113
+ <td id='jimmy-dee'>
114
+ <a href='https://github.com/jdee'>
115
+ <img src='https://github.com/jdee.png?size=140'>
116
+ </a>
117
+ <h4 align='center'>Jimmy Dee</h4>
144
118
  </td>
145
119
  <td id='danielle-tomlinson'>
146
120
  <a href='https://github.com/endocrimes'>
@@ -148,25 +122,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
148
122
  </a>
149
123
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
150
124
  </td>
125
+ <td id='matthew-ellis'>
126
+ <a href='https://github.com/matthewellis'>
127
+ <img src='https://github.com/matthewellis.png?size=140'>
128
+ </a>
129
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
130
+ </td>
131
+ </tr>
132
+ <tr>
151
133
  <td id='manu-wallner'>
152
134
  <a href='https://github.com/milch'>
153
135
  <img src='https://github.com/milch.png?size=140'>
154
136
  </a>
155
137
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
156
138
  </td>
157
- <td id='aaron-brager'>
158
- <a href='https://github.com/getaaron'>
159
- <img src='https://github.com/getaaron.png?size=140'>
139
+ <td id='jérôme-lacoste'>
140
+ <a href='https://github.com/lacostej'>
141
+ <img src='https://github.com/lacostej.png?size=140'>
160
142
  </a>
161
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
162
144
  </td>
163
- </tr>
164
- <tr>
165
- <td id='jorge-revuelta-h'>
166
- <a href='https://github.com/minuscorp'>
167
- <img src='https://github.com/minuscorp.png?size=140'>
145
+ <td id='iulian-onofrei'>
146
+ <a href='https://github.com/revolter'>
147
+ <img src='https://github.com/revolter.png?size=140'>
168
148
  </a>
169
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
170
150
  </td>
171
151
  <td id='maksym-grebenets'>
172
152
  <a href='https://github.com/mgrebenets'>
@@ -174,6 +154,26 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
174
154
  </a>
175
155
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
176
156
  </td>
157
+ <td id='joshua-liebowitz'>
158
+ <a href='https://github.com/taquitos'>
159
+ <img src='https://github.com/taquitos.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
162
+ </td>
163
+ </tr>
164
+ <tr>
165
+ <td id='aaron-brager'>
166
+ <a href='https://github.com/getaaron'>
167
+ <img src='https://github.com/getaaron.png?size=140'>
168
+ </a>
169
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
+ </td>
171
+ <td id='jan-piotrowski'>
172
+ <a href='https://github.com/janpio'>
173
+ <img src='https://github.com/janpio.png?size=140'>
174
+ </a>
175
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
176
+ </td>
177
177
  </table>
178
178
 
179
179
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -120,7 +120,7 @@ module Deliver
120
120
  ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
121
121
  ScreenSize::IOS_APPLE_WATCH => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_3,
122
122
  ScreenSize::IOS_APPLE_WATCH_SERIES4 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_4,
123
- # ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::
123
+ ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_APPLE_TV
124
124
  }
125
125
  return matching[self.screen_size]
126
126
  end
@@ -40,6 +40,7 @@ module Deliver
40
40
  res
41
41
  end
42
42
 
43
+ # rubocop:disable Metrics/PerceivedComplexity
43
44
  def run
44
45
  program :name, 'deliver'
45
46
  program :version, Fastlane::VERSION
@@ -166,15 +167,17 @@ module Deliver
166
167
  return 0 unless res
167
168
 
168
169
  require 'deliver/setup'
169
- v = options[:app].latest_version
170
+ app = options[:app]
171
+ platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
172
+ v = app.get_latest_app_store_version(platform: platform)
170
173
  if options[:app_version].to_s.length > 0
171
- v = options[:app].live_version if v.version != options[:app_version]
172
- if v.version != options[:app_version]
174
+ v = app.get_live_app_store_version(platform: platform) if v.version_string != options[:app_version]
175
+ if v.nil? || v.version_string != options[:app_version]
173
176
  raise "Neither the current nor live version match specified app_version \"#{options[:app_version]}\""
174
177
  end
175
178
  end
176
179
 
177
- Deliver::Setup.new.generate_metadata_files(v, path)
180
+ Deliver::Setup.new.generate_metadata_files(app, v, path)
178
181
  end
179
182
  end
180
183
 
@@ -36,9 +36,15 @@ module Deliver
36
36
  end
37
37
 
38
38
  def find_app(options)
39
- search_by = options[:app_identifier]
40
- search_by = options[:app] if search_by.to_s.length == 0
41
- app = Spaceship::Tunes::Application.find(search_by, mac: options[:platform] == "osx")
39
+ app_identifier = options[:app_identifier]
40
+ app_id = options[:app] if app_identifier.to_s.empty?
41
+
42
+ if !app_identifier.to_s.empty?
43
+ app = Spaceship::ConnectAPI::App.find(app_identifier)
44
+ elsif !app_id.kind_of?(Spaceship::ConnectAPI::App) && !app_id.to_s.empty?
45
+ app = Spaceship::ConnectAPI::App.get(app_id: app_id)
46
+ end
47
+
42
48
  if app
43
49
  options[:app] = app
44
50
  else
@@ -14,9 +14,7 @@ module Deliver
14
14
  end
15
15
 
16
16
  def self.download(options, folder_path)
17
- legacy_app = options[:app]
18
- app_id = legacy_app.apple_id
19
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
17
+ app = options[:app]
20
18
 
21
19
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
22
20
  if options[:use_live_version]
@@ -91,9 +91,7 @@ module Deliver
91
91
  app_version = options[:app_version]
92
92
  UI.message("Making sure the latest version on App Store Connect matches '#{app_version}'...")
93
93
 
94
- legacy_app = options[:app]
95
- app_id = legacy_app.apple_id
96
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
94
+ app = options[:app]
97
95
 
98
96
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
99
97
  changed = app.ensure_version!(app_version, platform: platform)
@@ -142,14 +140,14 @@ module Deliver
142
140
 
143
141
  if upload_ipa
144
142
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
145
- app_id: options[:app].apple_id,
143
+ app_id: options[:app].id,
146
144
  ipa_path: options[:ipa],
147
145
  package_path: "/tmp",
148
146
  platform: options[:platform]
149
147
  )
150
148
  elsif upload_pkg
151
149
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
152
- app_id: options[:app].apple_id,
150
+ app_id: options[:app].id,
153
151
  pkg_path: options[:pkg],
154
152
  package_path: "/tmp",
155
153
  platform: options[:platform]
@@ -157,15 +155,12 @@ module Deliver
157
155
  end
158
156
 
159
157
  transporter = transporter_for_selected_team
160
- result = transporter.upload(options[:app].apple_id, package_path)
158
+ result = transporter.upload(options[:app].id, package_path)
161
159
  UI.user_error!("Could not upload binary to App Store Connect. Check out the error above", show_github_issues: true) unless result
162
160
  end
163
161
 
164
162
  def reject_version_if_possible
165
- legacy_app = options[:app]
166
- app_id = legacy_app.apple_id
167
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
168
-
163
+ app = options[:app]
169
164
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
170
165
  if app.reject_version_if_possible!(platform: platform)
171
166
  UI.success("Successfully rejected previous version!")
@@ -40,9 +40,13 @@ module Deliver
40
40
  # This method takes care of creating a new 'deliver' folder, containing the app metadata
41
41
  # and screenshots folders
42
42
  def generate_deliver_file(deliver_path, options)
43
- v = options[:app].latest_version
43
+ app = options[:app]
44
+
45
+ platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
46
+ v = app.get_latest_app_store_version(platform: platform)
47
+
44
48
  metadata_path = options[:metadata_path] || File.join(deliver_path, 'metadata')
45
- generate_metadata_files(v, metadata_path)
49
+ generate_metadata_files(app, v, metadata_path)
46
50
 
47
51
  # Generate the final Deliverfile here
48
52
  return File.read(deliverfile_path)
@@ -56,7 +60,94 @@ module Deliver
56
60
  end
57
61
  end
58
62
 
59
- def generate_metadata_files(v, path)
63
+ def generate_metadata_files(app, version, path)
64
+ # App info localizations
65
+ app_info = app.fetch_live_app_info || app.fetch_edit_app_info
66
+ app_info_localizations = app_info.get_app_info_localizations
67
+ app_info_localizations.each do |localization|
68
+ language = localization.locale
69
+
70
+ UploadMetadata::LOCALISED_APP_VALUES.each do |file_key, attribute_name|
71
+ content = localization.send(attribute_name.to_slug) || ""
72
+ content += "\n"
73
+
74
+ resulting_path = File.join(path, language, "#{file_key}.txt")
75
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
76
+ File.write(resulting_path, content)
77
+
78
+ UI.message("Writing to '#{resulting_path}'")
79
+ end
80
+ end
81
+
82
+ # Version localizations
83
+ version_localizations = version.get_app_store_version_localizations
84
+ version_localizations.each do |localization|
85
+ language = localization.locale
86
+
87
+ UploadMetadata::LOCALISED_VERSION_VALUES.each do |file_key, attribute_name|
88
+ content = localization.send(attribute_name) || ""
89
+ content += "\n"
90
+
91
+ resulting_path = File.join(path, language, "#{file_key}.txt")
92
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
93
+ File.write(resulting_path, content)
94
+
95
+ UI.message("Writing to '#{resulting_path}'")
96
+ end
97
+ end
98
+
99
+ # App info (categories)
100
+ UploadMetadata::NON_LOCALISED_APP_VALUES.each do |file_key, attribute_name|
101
+ category = app_info.send(attribute_name)
102
+
103
+ content = category ? category.id.to_s : ""
104
+ content += "\n"
105
+
106
+ resulting_path = File.join(path, "#{file_key}.txt")
107
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
108
+ File.write(resulting_path, content)
109
+
110
+ UI.message("Writing to '#{resulting_path}'")
111
+ end
112
+
113
+ # Version
114
+ UploadMetadata::NON_LOCALISED_VERSION_VALUES.each do |file_key, attribute_name|
115
+ content = version.send(attribute_name) || ""
116
+ content += "\n"
117
+
118
+ resulting_path = File.join(path, "#{file_key}.txt")
119
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
120
+ File.write(resulting_path, content)
121
+
122
+ UI.message("Writing to '#{resulting_path}'")
123
+ end
124
+
125
+ # Review information
126
+ app_store_review_detail = begin
127
+ version.fetch_app_store_review_detail
128
+ rescue
129
+ nil
130
+ end # errors if doesn't exist
131
+ UploadMetadata::REVIEW_INFORMATION_VALUES.each do |file_key, attribute_name|
132
+ if app_store_review_detail
133
+ content = app_store_review_detail.send(attribute_name)
134
+ else
135
+ content = ""
136
+ end
137
+ content += "\n"
138
+
139
+ file_key = UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.key(file_key)
140
+
141
+ base_dir = File.join(path, UploadMetadata::REVIEW_INFORMATION_DIR)
142
+ resulting_path = File.join(base_dir, "#{file_key}.txt")
143
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
144
+ File.write(resulting_path, content)
145
+
146
+ UI.message("Writing to '#{resulting_path}'")
147
+ end
148
+ end
149
+
150
+ def generate_metadata_files_old(v, path)
60
151
  app_details = v.application.details
61
152
 
62
153
  # All the localised metadata