|
36 | 36 | @Slf4j |
37 | 37 | public class InstallPaperCommand implements Callable<Integer> { |
38 | 38 |
|
39 | | - public static final String VERSION_METADATA_NAME = "version.json"; |
40 | 39 | @ArgGroup |
41 | 40 | Inputs inputs = new Inputs(); |
42 | 41 |
|
@@ -162,47 +161,34 @@ private Result downloadCustom(URI downloadUrl) { |
162 | 161 | .handleStatus(Fetch.loggingDownloadStatusHandler(log)) |
163 | 162 | .assemble() |
164 | 163 | .publishOn(Schedulers.boundedElastic()) |
165 | | - .flatMap(serverJar -> processDownloadedJar(downloadUrl, serverJar)) |
| 164 | + .flatMap(serverJar -> { |
| 165 | + final String version; |
| 166 | + try { |
| 167 | + version = extractVersionFromJar(serverJar); |
| 168 | + |
| 169 | + if (version == null) { |
| 170 | + return Mono.error(new GenericException("Version metadata was not available from custom server jar")); |
| 171 | + } |
| 172 | + } catch (IOException e) { |
| 173 | + return Mono.error(new GenericException("Failed to extract version from custom server jar", e)); |
| 174 | + } |
| 175 | + return Mono.just(Result.builder() |
| 176 | + .serverJar(serverJar) |
| 177 | + .newManifest( |
| 178 | + PaperManifest.builder() |
| 179 | + .customDownloadUrl(downloadUrl) |
| 180 | + .files(Collections.singleton(Manifests.relativize(outputDirectory, serverJar))) |
| 181 | + .build() |
| 182 | + ) |
| 183 | + .version(version) |
| 184 | + .build()); |
| 185 | + }) |
166 | 186 | .block(); |
167 | 187 | } |
168 | 188 | } |
169 | 189 |
|
170 | | - private Mono<Result> processDownloadedJar(URI downloadUrl, Path serverJar) { |
171 | | - final String version; |
172 | | - try { |
173 | | - final String versionFromJar = extractVersionFromJar(serverJar); |
174 | | - if (versionFromJar != null) { |
175 | | - version = versionFromJar; |
176 | | - } |
177 | | - else { |
178 | | - log.warn("Version metadata {} was missing from server jar: {}", VERSION_METADATA_NAME, serverJar); |
179 | | - final String fromEnv = System.getenv("VERSION"); |
180 | | - if (fromEnv != null) { |
181 | | - version = fromEnv; |
182 | | - } |
183 | | - else { |
184 | | - throw new GenericException("Set environment variable 'VERSION' due to missing version metadata"); |
185 | | - } |
186 | | - |
187 | | - } |
188 | | - } catch (IOException e) { |
189 | | - return Mono.error(new GenericException("Failed to extract version from custom server jar", e)); |
190 | | - } |
191 | | - |
192 | | - return Mono.just(Result.builder() |
193 | | - .serverJar(serverJar) |
194 | | - .newManifest( |
195 | | - PaperManifest.builder() |
196 | | - .customDownloadUrl(downloadUrl) |
197 | | - .files(Collections.singleton(Manifests.relativize(outputDirectory, serverJar))) |
198 | | - .build() |
199 | | - ) |
200 | | - .version(version) |
201 | | - .build()); |
202 | | - } |
203 | | - |
204 | 190 | private String extractVersionFromJar(Path serverJar) throws IOException { |
205 | | - final VersionMeta versionMeta = IoStreams.readFileFromZip(serverJar, VERSION_METADATA_NAME, in -> |
| 191 | + final VersionMeta versionMeta = IoStreams.readFileFromZip(serverJar, "version.json", in -> |
206 | 192 | ObjectMappers.defaultMapper().readValue(in, VersionMeta.class) |
207 | 193 | ); |
208 | 194 | if (versionMeta == null) { |
|
0 commit comments