diff --git a/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineArgs.java b/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineArgs.java index 9fe7d6d0b..6927f4ba2 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineArgs.java +++ b/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineArgs.java @@ -1,7 +1,11 @@ package liquidjava.api; +import java.io.FileReader; +import java.nio.file.Path; import java.util.List; -import java.util.concurrent.Callable; + +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import picocli.CommandLine.Command; import picocli.CommandLine.Option; @@ -12,9 +16,22 @@ public class CommandLineArgs { @Option(names = {"-h", "--help"}, usageHelp = true, description = "Display this help message") public boolean help; + @Option(names = { "-v", "--version" }, versionHelp = true, description = "Display the version of LiquidJava") + public boolean version; + @Option(names = { "-d", "--debug" }, description = "Enable debug mode for more detailed output") public boolean debugMode; @Parameters(arity = "1..*", paramLabel = "<...paths>", description = "Paths to be verified by LiquidJava") public List paths; + + public String getVersionString() { + Path pomPath = Path.of("liquidjava-verifier", "pom.xml"); + try (FileReader fileReader = new FileReader(pomPath.toFile())) { + Model model = new MavenXpp3Reader().read(fileReader); + return model.getVersion(); + } catch (Exception ignored) { + return "unknown"; + } + } } diff --git a/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java b/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java index 796928c8b..38fe5d0c6 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java +++ b/liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java @@ -31,6 +31,11 @@ public static void main(String[] args) { return; } + if (cmd.isVersionHelpRequested()) { + System.out.println("liquidjava " + cmdArgs.getVersionString()); + return; + } + launch(cmdArgs.paths.stream().toArray(String[]::new)); // print diagnostics