|
5 | 5 | import java.net.URI; |
6 | 6 | import java.nio.file.Path; |
7 | 7 | import java.util.Collections; |
| 8 | +import java.util.Optional; |
8 | 9 | import java.util.concurrent.Callable; |
9 | 10 | import java.util.regex.Matcher; |
10 | 11 | import java.util.regex.Pattern; |
@@ -162,45 +163,33 @@ private Result downloadCustom(URI downloadUrl) { |
162 | 163 | .handleStatus(Fetch.loggingDownloadStatusHandler(log)) |
163 | 164 | .assemble() |
164 | 165 | .publishOn(Schedulers.boundedElastic()) |
165 | | - .flatMap(serverJar -> processDownloadedJar(downloadUrl, serverJar)) |
| 166 | + .flatMap(serverJar -> { |
| 167 | + final String version; |
| 168 | + try { |
| 169 | + version = Optional.ofNullable(extractVersionFromJar(serverJar)) |
| 170 | + .orElseGet(() -> { |
| 171 | + log.warn("Version metadata {} was missing from server jar: {}", VERSION_METADATA_NAME, serverJar); |
| 172 | + return "custom"; |
| 173 | + }); |
| 174 | + |
| 175 | + } catch (IOException e) { |
| 176 | + return Mono.error(new GenericException("Failed to extract version from custom server jar", e)); |
| 177 | + } |
| 178 | + return Mono.just(Result.builder() |
| 179 | + .serverJar(serverJar) |
| 180 | + .newManifest( |
| 181 | + PaperManifest.builder() |
| 182 | + .customDownloadUrl(downloadUrl) |
| 183 | + .files(Collections.singleton(Manifests.relativize(outputDirectory, serverJar))) |
| 184 | + .build() |
| 185 | + ) |
| 186 | + .version(version) |
| 187 | + .build()); |
| 188 | + }) |
166 | 189 | .block(); |
167 | 190 | } |
168 | 191 | } |
169 | 192 |
|
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 | 193 | private String extractVersionFromJar(Path serverJar) throws IOException { |
205 | 194 | final VersionMeta versionMeta = IoStreams.readFileFromZip(serverJar, VERSION_METADATA_NAME, in -> |
206 | 195 | ObjectMappers.defaultMapper().readValue(in, VersionMeta.class) |
|
0 commit comments