diff --git a/src/main/java/fr/inria/corese/command/App.java b/src/main/java/fr/inria/corese/command/App.java index 9ece295a0..2e5b214f2 100644 --- a/src/main/java/fr/inria/corese/command/App.java +++ b/src/main/java/fr/inria/corese/command/App.java @@ -11,14 +11,10 @@ import picocli.CommandLine.Help.Ansi.Style; import picocli.CommandLine.Help.ColorScheme; -@Command(name = "Corese-command", version = App.version, mixinStandardHelpOptions = true, subcommands = { - Convert.class, Sparql.class, Shacl.class, RemoteSparql.class, Canonicalize.class, GenerateCompletion.class -}) - +@Command(name = "Corese-command", versionProvider = VersionProvider.class, mixinStandardHelpOptions = true, subcommands = { + Convert.class, Sparql.class, Shacl.class, RemoteSparql.class, Canonicalize.class, GenerateCompletion.class }) public final class App implements Runnable { - public final static String version = "4.5.1"; - public static void main(String[] args) { // Define the color scheme ColorScheme colorScheme = new ColorScheme.Builder() diff --git a/src/main/java/fr/inria/corese/command/VersionProvider.java b/src/main/java/fr/inria/corese/command/VersionProvider.java new file mode 100644 index 000000000..babb49179 --- /dev/null +++ b/src/main/java/fr/inria/corese/command/VersionProvider.java @@ -0,0 +1,31 @@ +package fr.inria.corese.command; + +import fr.inria.corese.core.util.CoreseInfo; +import picocli.CommandLine; + +/** + * Custom version provider for dynamic version information + */ +public class VersionProvider implements CommandLine.IVersionProvider { + + // Version of Corese-Command + public final static String commandVersion = "4.5.1"; + + @Override + public String[] getVersion() { + return new String[] { + "Corese-Command Version: " + commandVersion, + "Based on Corese-Core Version: " + CoreseInfo.getVersion() + }; + } + + /** + * Get the version of Corese-Command + * + * @return the version of Corese-Command + */ + public static String getCommandVersion() { + return commandVersion; + } + +} \ No newline at end of file diff --git a/src/main/java/fr/inria/corese/command/programs/AbstractCommand.java b/src/main/java/fr/inria/corese/command/programs/AbstractCommand.java index d5b8c24c2..9c7a47805 100644 --- a/src/main/java/fr/inria/corese/command/programs/AbstractCommand.java +++ b/src/main/java/fr/inria/corese/command/programs/AbstractCommand.java @@ -4,7 +4,7 @@ import java.util.Optional; import java.util.concurrent.Callable; -import fr.inria.corese.command.App; +import fr.inria.corese.command.VersionProvider; import fr.inria.corese.command.utils.ConfigManager; import fr.inria.corese.command.utils.exporter.rdf.RdfDataExporter; import fr.inria.corese.core.util.Property; @@ -19,7 +19,7 @@ * * This class provides common options and methods for all commands. */ -@Command(version = App.version) +@Command(versionProvider = VersionProvider.class) public abstract class AbstractCommand implements Callable { /////////////// diff --git a/src/main/java/fr/inria/corese/command/programs/Convert.java b/src/main/java/fr/inria/corese/command/programs/Convert.java index c3dbbaec8..d0116c487 100644 --- a/src/main/java/fr/inria/corese/command/programs/Convert.java +++ b/src/main/java/fr/inria/corese/command/programs/Convert.java @@ -1,6 +1,5 @@ package fr.inria.corese.command.programs; -import fr.inria.corese.command.App; import fr.inria.corese.command.utils.exporter.rdf.EnumRdfOutputFormat; import fr.inria.corese.command.utils.exporter.rdf.RdfDataExporter; import fr.inria.corese.command.utils.loader.rdf.EnumRdfInputFormat; @@ -9,7 +8,7 @@ import picocli.CommandLine.Command; import picocli.CommandLine.Option; -@Command(name = "convert", version = App.version, description = "Convert an RDF file from one serialization format to another.", mixinStandardHelpOptions = true) +@Command(name = "convert", description = "Convert an RDF file from one serialization format to another.", mixinStandardHelpOptions = true) public class Convert extends AbstractInputCommand { @Option(names = { "-f", "-if", diff --git a/src/main/java/fr/inria/corese/command/programs/RemoteSparql.java b/src/main/java/fr/inria/corese/command/programs/RemoteSparql.java index deca312da..757d465dd 100644 --- a/src/main/java/fr/inria/corese/command/programs/RemoteSparql.java +++ b/src/main/java/fr/inria/corese/command/programs/RemoteSparql.java @@ -6,14 +6,13 @@ import com.github.jsonldjava.shaded.com.google.common.io.Files; -import fr.inria.corese.command.App; import fr.inria.corese.command.utils.http.EnumRequestMethod; import fr.inria.corese.command.utils.http.SparqlHttpClient; import fr.inria.corese.command.utils.loader.sparql.SparqlQueryLoader; import picocli.CommandLine.Command; import picocli.CommandLine.Option; -@Command(name = "remote-sparql", version = App.version, description = "Execute a SPARQL query on a remote endpoint.", mixinStandardHelpOptions = true) +@Command(name = "remote-sparql", description = "Execute a SPARQL query on a remote endpoint.", mixinStandardHelpOptions = true) public class RemoteSparql extends AbstractCommand { @Option(names = { "-q", diff --git a/src/main/java/fr/inria/corese/command/programs/Shacl.java b/src/main/java/fr/inria/corese/command/programs/Shacl.java index ef045e25d..046c6a07e 100644 --- a/src/main/java/fr/inria/corese/command/programs/Shacl.java +++ b/src/main/java/fr/inria/corese/command/programs/Shacl.java @@ -1,6 +1,5 @@ package fr.inria.corese.command.programs; -import fr.inria.corese.command.App; import fr.inria.corese.command.utils.TestType; import fr.inria.corese.command.utils.exporter.rdf.EnumRdfOutputFormat; import fr.inria.corese.command.utils.exporter.rdf.RdfDataExporter; @@ -10,7 +9,7 @@ import picocli.CommandLine.Command; import picocli.CommandLine.Option; -@Command(name = "shacl", version = App.version, description = "Run SHACL validation on a RDF dataset.", mixinStandardHelpOptions = true) +@Command(name = "shacl", description = "Run SHACL validation on a RDF dataset.", mixinStandardHelpOptions = true) public class Shacl extends AbstractInputCommand { @Option(names = { "-f", "-if", diff --git a/src/main/java/fr/inria/corese/command/programs/Sparql.java b/src/main/java/fr/inria/corese/command/programs/Sparql.java index 590f5a661..91dadaf77 100644 --- a/src/main/java/fr/inria/corese/command/programs/Sparql.java +++ b/src/main/java/fr/inria/corese/command/programs/Sparql.java @@ -1,18 +1,17 @@ package fr.inria.corese.command.programs; -import fr.inria.corese.command.App; import fr.inria.corese.command.utils.exporter.sparql.EnumResultFormat; import fr.inria.corese.command.utils.exporter.sparql.SparqlResultExporter; import fr.inria.corese.command.utils.loader.rdf.EnumRdfInputFormat; import fr.inria.corese.command.utils.loader.rdf.RdfDataLoader; import fr.inria.corese.command.utils.loader.sparql.SparqlQueryLoader; import fr.inria.corese.core.Graph; -import fr.inria.corese.core.query.QueryProcess; import fr.inria.corese.core.kgram.core.Mappings; +import fr.inria.corese.core.query.QueryProcess; import picocli.CommandLine.Command; import picocli.CommandLine.Option; -@Command(name = "sparql", version = App.version, description = "Run a SPARQL query.", mixinStandardHelpOptions = true) +@Command(name = "sparql", description = "Run a SPARQL query.", mixinStandardHelpOptions = true) public class Sparql extends AbstractInputCommand { @Option(names = { "-f", "-if", diff --git a/src/main/java/fr/inria/corese/command/utils/http/SparqlHttpClient.java b/src/main/java/fr/inria/corese/command/utils/http/SparqlHttpClient.java index b9ee5f764..1129d2f83 100644 --- a/src/main/java/fr/inria/corese/command/utils/http/SparqlHttpClient.java +++ b/src/main/java/fr/inria/corese/command/utils/http/SparqlHttpClient.java @@ -8,7 +8,7 @@ import org.apache.commons.lang3.tuple.Pair; -import fr.inria.corese.command.App; +import fr.inria.corese.command.VersionProvider; import fr.inria.corese.command.utils.TestType; import fr.inria.corese.core.Graph; import fr.inria.corese.core.query.QueryProcess; @@ -43,7 +43,7 @@ public class SparqlHttpClient { private int redirectCount = 0; private int maxRedirects = 5; - private final String USERAGENT = "Corese-Command/" + App.version; + private final String USERAGENT = "Corese-Command/" + VersionProvider.getCommandVersion(); ///////////////// // Constructor //