diff --git a/README.adoc b/README.adoc index c26778a..9919d7d 100644 --- a/README.adoc +++ b/README.adoc @@ -89,7 +89,7 @@ Following inputs can be used as `step.with` keys [%header,cols="<2,<,<2,<3",width="100%"] |=== | Name | Type | Default | Description -| version | String | early-access | The JReleaser version to use. + +| version | String | latest | The JReleaser version to use. + Should match any of the link:https://github.com/jreleaser/jreleaser/releases[published releases]. | arguments | String | full-release | The JReleaser command to run. | working-directory | String | ${{ github.workspace }} | The directory to change into. + diff --git a/action.yml b/action.yml index 19c020f..83ae787 100644 --- a/action.yml +++ b/action.yml @@ -10,7 +10,7 @@ inputs: version: description: 'The version of JReleaser to download and execute.' - default: 'early-access' + default: 'latest' required: true arguments: diff --git a/get_jreleaser.java b/get_jreleaser.java index b78a363..eb19e5f 100644 --- a/get_jreleaser.java +++ b/get_jreleaser.java @@ -6,31 +6,64 @@ import java.nio.file.Path; import java.nio.file.StandardCopyOption; class get_jreleaser { - public static void main(String... args) throws Exception { - if (args.length != 1) { - System.err.println("Usage: java get_jreleaser.java VERSION"); - System.exit(1); + 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("VERSION"); + + 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 + var url = "https://github.com/jreleaser/jreleaser/releases/download/" + version + "/jreleaser-tool-provider-" + version + ".jar"; + var file = Path.of("jreleaser-cli.jar"); + + 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); + } } - - // TODO: handle version = 'latest' - - var version = args[0]; - var url = "https://github.com/jreleaser/jreleaser/releases/download/" + version + "/jreleaser-tool-provider-" + version + ".jar"; - var file = Path.of("jreleaser-cli.jar"); - - 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); - } - } }