fastlane 2.152.0 → 2.155.1

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