release-action/get_jreleaser.java

71 lines
2.8 KiB
Java
Raw Permalink Normal View History

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
2021-03-29 09:07:32 +00:00
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
2021-04-06 14:47:34 +00:00
class get_jreleaser {
2021-04-06 16:47:36 +00:00
public static void main(String... args) throws Exception {
// default version
var version = "latest";
if (args.length > 1) {
System.err.println("Usage: java get_jreleaser.java [VERSION]");
System.exit(1);
}
// grab the version if specified
if (args.length == 1) {
version = args[0];
}
// check
if (null == version || version.isEmpty()) {
System.out.printf("❌ Version '%s' is invalid%n", version);
System.exit(1);
}
// resolve latest to a tagged release
if ("latest".equalsIgnoreCase(version)) {
var url = "https://jreleaser.org/releases/latest/download/VERSION";
var file = Path.of("JRELEASER_VERSION");
2021-04-06 16:47:36 +00:00
try (var stream = new URL(url).openStream()) {
System.out.printf("✅ Located version marker%n");
Files.copy(stream, file, StandardCopyOption.REPLACE_EXISTING);
version = new String(Files.readAllBytes(file)).trim();
System.out.printf("✅ JReleaser latest resolves to %s%n", version);
} catch (FileNotFoundException e) {
System.out.printf("❌ JReleaser %s not found%n", version);
e.printStackTrace();
System.exit(1);
} catch (IOException e) {
System.out.printf("☠️ JReleaser %s could not be downloaded/copied%n", version);
e.printStackTrace();
System.exit(1);
}
}
// setup the actual download
2021-04-11 13:46:41 +00:00
var tag = !"early-access".equals(version) ? "v" + version : version;
var url = "https://github.com/jreleaser/jreleaser/releases/download/" + tag + "/jreleaser-tool-provider-" + version + ".jar";
2021-04-06 16:47:36 +00:00
var file = Path.of("jreleaser-cli.jar");
2021-04-06 16:47:36 +00:00
try (var stream = new URL(url).openStream()) {
System.out.printf("✅ Located JReleaser %s%n", version);
System.out.printf("⬇️ Downloading %s%n", url);
var size = Files.copy(stream, file, StandardCopyOption.REPLACE_EXISTING);
System.out.printf("%s << copied %d bytes%n", file, size);
System.out.printf("✅ JReleaser installed successfully%n");
} catch (FileNotFoundException e) {
System.out.printf("❌ JReleaser %s not found%n", version);
System.exit(1);
} catch (IOException e) {
System.out.printf("☠️ JReleaser %s could not be downloaded/copied%n", version);
e.printStackTrace();
System.exit(1);
}
}
}