fastlane 2.152.0 → 2.155.1

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 (91) 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/html_generator.rb +8 -1
  8. data/deliver/lib/deliver/runner.rb +5 -10
  9. data/deliver/lib/deliver/setup.rb +92 -3
  10. data/deliver/lib/deliver/submit_for_review.rb +1 -3
  11. data/deliver/lib/deliver/upload_metadata.rb +46 -26
  12. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  13. data/deliver/lib/deliver/upload_screenshots.rb +75 -44
  14. data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
  15. data/{frameit/lib/frameit/.editor.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
  16. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  17. data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -1
  18. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  19. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
  20. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
  21. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  22. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  23. data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
  24. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +5 -0
  25. data/fastlane/lib/fastlane/runner.rb +3 -1
  26. data/fastlane/lib/fastlane/version.rb +1 -1
  27. data/fastlane/swift/Deliverfile.swift +1 -1
  28. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  29. data/fastlane/swift/Fastlane.swift +407 -189
  30. data/fastlane/swift/Gymfile.swift +1 -1
  31. data/fastlane/swift/GymfileProtocol.swift +1 -1
  32. data/fastlane/swift/Matchfile.swift +1 -1
  33. data/fastlane/swift/MatchfileProtocol.swift +10 -2
  34. data/fastlane/swift/Precheckfile.swift +1 -1
  35. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  36. data/fastlane/swift/Scanfile.swift +1 -1
  37. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  38. data/fastlane/swift/Screengrabfile.swift +1 -1
  39. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  40. data/fastlane/swift/Snapshotfile.swift +1 -1
  41. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  42. data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
  43. data/frameit/lib/frameit/editor.rb +11 -6
  44. data/gym/lib/gym/detect_values.rb +6 -3
  45. data/gym/lib/gym/module.rb +30 -0
  46. data/gym/lib/gym/runner.rb +23 -18
  47. data/match/lib/match/generator.rb +6 -0
  48. data/match/lib/match/options.rb +16 -4
  49. data/match/lib/match/runner.rb +13 -5
  50. data/match/lib/match/spaceship_ensure.rb +7 -9
  51. data/match/lib/match/storage/git_storage.rb +16 -2
  52. data/match/lib/match/storage/google_cloud_storage.rb +1 -1
  53. data/pilot/lib/pilot/build_manager.rb +9 -0
  54. data/pilot/lib/pilot/options.rb +1 -1
  55. data/scan/lib/scan/runner.rb +19 -6
  56. data/sigh/lib/sigh/.runner.rb.swp +0 -0
  57. data/sigh/lib/sigh/download_all.rb +42 -27
  58. data/sigh/lib/sigh/module.rb +26 -0
  59. data/sigh/lib/sigh/options.rb +2 -2
  60. data/sigh/lib/sigh/runner.rb +96 -35
  61. data/snapshot/lib/snapshot/options.rb +10 -0
  62. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  63. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
  64. data/snapshot/lib/snapshot/test_command_generator.rb +3 -2
  65. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +4 -1
  66. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  67. data/spaceship/lib/spaceship/connect_api/client.rb +5 -3
  68. data/spaceship/lib/spaceship/connect_api/model.rb +15 -1
  69. data/spaceship/lib/spaceship/connect_api/models/.device.rb.swp +0 -0
  70. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  71. data/spaceship/lib/spaceship/connect_api/models/app.rb +61 -3
  72. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  73. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
  74. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  75. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  76. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
  77. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  78. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  79. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  80. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +17 -5
  81. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +41 -7
  82. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  83. data/spaceship/lib/spaceship/connect_api/models/profile.rb +31 -1
  84. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +46 -4
  85. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -0
  86. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  87. data/supply/lib/supply/client.rb +2 -1
  88. data/supply/lib/supply/options.rb +8 -1
  89. metadata +33 -58
  90. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  91. 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: b77c9dcff082266f510dfe52db1d9747eac32e620b8197e16582af61c03060b5
4
+ data.tar.gz: 5d66ae9adcbaa02fd74fceac52bdaf89d33ae3abede5ac82015440abf0be8787
5
5
  SHA512:
6
- metadata.gz: 885d5bec8f98d24a8cfa4091d956fbba3a5e13fb09edaa76549608aacc90568ac698c1143bfa041f310702a31d8080170afd804b2d98b1af18f75bff657fd66d
7
- data.tar.gz: e2c9b1dc7e9830a79d3ee841f377dfdf541680f8efa9ee2df9867b46459530856cc07c0e99652749b9af9fa4571688e895e19f2af9692e4a188b74ee8f69f1fa
6
+ metadata.gz: 928ee72847179a8eeec320a3c76bd61a43b02683a91cd018f398404ae15f5fe3c0b055b76a3fe203e9d5d3bad23f42e3bc677acbda33fcefec133f4c926c3a5c
7
+ data.tar.gz: 64555183b72fac412fe507a9a55acef51348a1c260ad48aeba484a2f347e6f33a3e205b51b0d4c182dee2a112905292f7f7e03a030fae08b8765ed7fd943645d
data/README.md CHANGED
@@ -34,23 +34,23 @@ 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'>
37
+ <td id='helmut-januschka'>
38
+ <a href='https://github.com/hjanuschka'>
39
+ <img src='https://github.com/hjanuschka.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
42
42
  </td>
43
- <td id='jimmy-dee'>
44
- <a href='https://github.com/jdee'>
45
- <img src='https://github.com/jdee.png?size=140'>
43
+ <td id='stefan-natchev'>
44
+ <a href='https://github.com/snatchev'>
45
+ <img src='https://github.com/snatchev.png?size=140'>
46
46
  </a>
47
- <h4 align='center'>Jimmy Dee</h4>
47
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
48
48
  </td>
49
- <td id='kohki-miki'>
50
- <a href='https://github.com/giginet'>
51
- <img src='https://github.com/giginet.png?size=140'>
49
+ <td id='matthew-ellis'>
50
+ <a href='https://github.com/matthewellis'>
51
+ <img src='https://github.com/matthewellis.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
54
54
  </td>
55
55
  <td id='olivier-halligon'>
56
56
  <a href='https://github.com/AliSoftware'>
@@ -58,51 +58,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
58
58
  </a>
59
59
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
60
60
  </td>
61
- <td id='jan-piotrowski'>
62
- <a href='https://github.com/janpio'>
63
- <img src='https://github.com/janpio.png?size=140'>
61
+ <td id='jorge-revuelta-h'>
62
+ <a href='https://github.com/minuscorp'>
63
+ <img src='https://github.com/minuscorp.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='daniel-jankowski'>
70
- <a href='https://github.com/mollyIV'>
71
- <img src='https://github.com/mollyIV.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
74
- </td>
75
- <td id='matthew-ellis'>
76
- <a href='https://github.com/matthewellis'>
77
- <img src='https://github.com/matthewellis.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
80
- </td>
81
- <td id='helmut-januschka'>
82
- <a href='https://github.com/hjanuschka'>
83
- <img src='https://github.com/hjanuschka.png?size=140'>
84
- </a>
85
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
86
- </td>
87
- <td id='josh-holtz'>
88
- <a href='https://github.com/joshdholtz'>
89
- <img src='https://github.com/joshdholtz.png?size=140'>
69
+ <td id='kohki-miki'>
70
+ <a href='https://github.com/giginet'>
71
+ <img src='https://github.com/giginet.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/giginet'>Kohki Miki</a></h4>
92
74
  </td>
93
- <td id='fumiya-nakamura'>
94
- <a href='https://github.com/nafu'>
95
- <img src='https://github.com/nafu.png?size=140'>
75
+ <td id='danielle-tomlinson'>
76
+ <a href='https://github.com/endocrimes'>
77
+ <img src='https://github.com/endocrimes.png?size=140'>
96
78
  </a>
97
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</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'>
81
+ <td id='jan-piotrowski'>
82
+ <a href='https://github.com/janpio'>
83
+ <img src='https://github.com/janpio.png?size=140'>
104
84
  </a>
105
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
106
86
  </td>
107
87
  <td id='iulian-onofrei'>
108
88
  <a href='https://github.com/revolter'>
@@ -110,43 +90,63 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
110
90
  </a>
111
91
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
112
92
  </td>
113
- <td id='luka-mirosevic'>
114
- <a href='https://github.com/lmirosevic'>
115
- <img src='https://github.com/lmirosevic.png?size=140'>
116
- </a>
117
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
118
- </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
93
+ <td id='jimmy-dee'>
94
+ <a href='https://github.com/jdee'>
95
+ <img src='https://github.com/jdee.png?size=140'>
122
96
  </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
97
+ <h4 align='center'>Jimmy Dee</h4>
124
98
  </td>
99
+ </tr>
100
+ <tr>
125
101
  <td id='felix-krause'>
126
102
  <a href='https://github.com/KrauseFx'>
127
103
  <img src='https://github.com/KrauseFx.png?size=140'>
128
104
  </a>
129
105
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
130
106
  </td>
131
- </tr>
132
- <tr>
133
107
  <td id='jérôme-lacoste'>
134
108
  <a href='https://github.com/lacostej'>
135
109
  <img src='https://github.com/lacostej.png?size=140'>
136
110
  </a>
137
111
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
138
112
  </td>
113
+ <td id='daniel-jankowski'>
114
+ <a href='https://github.com/mollyIV'>
115
+ <img src='https://github.com/mollyIV.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
118
+ </td>
119
+ <td id='luka-mirosevic'>
120
+ <a href='https://github.com/lmirosevic'>
121
+ <img src='https://github.com/lmirosevic.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
124
+ </td>
125
+ <td id='max-ott'>
126
+ <a href='https://github.com/max-ott'>
127
+ <img src='https://github.com/max-ott.png?size=140'>
128
+ </a>
129
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
130
+ </td>
131
+ </tr>
132
+ <tr>
139
133
  <td id='joshua-liebowitz'>
140
134
  <a href='https://github.com/taquitos'>
141
135
  <img src='https://github.com/taquitos.png?size=140'>
142
136
  </a>
143
137
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
144
138
  </td>
145
- <td id='danielle-tomlinson'>
146
- <a href='https://github.com/endocrimes'>
147
- <img src='https://github.com/endocrimes.png?size=140'>
139
+ <td id='josh-holtz'>
140
+ <a href='https://github.com/joshdholtz'>
141
+ <img src='https://github.com/joshdholtz.png?size=140'>
148
142
  </a>
149
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
144
+ </td>
145
+ <td id='fumiya-nakamura'>
146
+ <a href='https://github.com/nafu'>
147
+ <img src='https://github.com/nafu.png?size=140'>
148
+ </a>
149
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
150
150
  </td>
151
151
  <td id='manu-wallner'>
152
152
  <a href='https://github.com/milch'>
@@ -154,25 +154,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
154
154
  </a>
155
155
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
156
156
  </td>
157
- <td id='aaron-brager'>
158
- <a href='https://github.com/getaaron'>
159
- <img src='https://github.com/getaaron.png?size=140'>
157
+ <td id='maksym-grebenets'>
158
+ <a href='https://github.com/mgrebenets'>
159
+ <img src='https://github.com/mgrebenets.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
162
162
  </td>
163
163
  </tr>
164
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'>
165
+ <td id='aaron-brager'>
166
+ <a href='https://github.com/getaaron'>
167
+ <img src='https://github.com/getaaron.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
170
  </td>
171
- <td id='maksym-grebenets'>
172
- <a href='https://github.com/mgrebenets'>
173
- <img src='https://github.com/mgrebenets.png?size=140'>
171
+ <td id='andrew-mcburney'>
172
+ <a href='https://github.com/armcburney'>
173
+ <img src='https://github.com/armcburney.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -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]
@@ -1,3 +1,5 @@
1
+ require 'spaceship'
2
+
1
3
  require_relative 'module'
2
4
 
3
5
  module Deliver
@@ -51,7 +53,12 @@ module Deliver
51
53
  @app_name ||= options[:app].name
52
54
 
53
55
  @languages = options[:description].keys if options[:description]
54
- @languages ||= options[:app].latest_version.description.languages
56
+ @languages ||= begin
57
+ platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
58
+ version = options[:app].get_edit_app_store_version(platform: platform)
59
+
60
+ version.get_app_store_version_localizations.collect(&:locale)
61
+ end
55
62
 
56
63
  html_path = File.join(Deliver::ROOT, "lib/assets/summary.html.erb")
57
64
  html = ERB.new(File.read(html_path)).result(binding) # https://web.archive.org/web/20160430190141/www.rrn.dk/rubys-erb-templating-system
@@ -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,92 @@ 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
+ base_dir = File.join(path, UploadMetadata::REVIEW_INFORMATION_DIR)
140
+ resulting_path = File.join(base_dir, "#{file_key}.txt")
141
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
142
+ File.write(resulting_path, content)
143
+
144
+ UI.message("Writing to '#{resulting_path}'")
145
+ end
146
+ end
147
+
148
+ def generate_metadata_files_old(v, path)
60
149
  app_details = v.application.details
61
150
 
62
151
  # All the localised metadata