diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts index df36fb83..6c50b57b 100644 --- a/cli/build.gradle.kts +++ b/cli/build.gradle.kts @@ -1,3 +1,5 @@ +import java.util.* + fun properties(key: String) = project.findProperty(key).toString() plugins { @@ -51,6 +53,18 @@ tasks.test { useJUnitPlatform() } +tasks.build { + val props = Properties() + val propsFile = File("${project.projectDir}/src/main/resources/META-INF/lcaac.properties") + propsFile.inputStream().use { props.load(it) } + props.setProperty("author", "Kleis Technology") + props.setProperty("description", "LCA as Code CLI") + props.setProperty("version", artifactVersion) + propsFile.outputStream().use { + props.store(it, null) + } +} + publishing { repositories { maven { diff --git a/cli/src/main/kotlin/ch/kleis/lcaac/cli/Main.kt b/cli/src/main/kotlin/ch/kleis/lcaac/cli/Main.kt index 917534cc..93367263 100644 --- a/cli/src/main/kotlin/ch/kleis/lcaac/cli/Main.kt +++ b/cli/src/main/kotlin/ch/kleis/lcaac/cli/Main.kt @@ -1,9 +1,6 @@ package ch.kleis.lcaac.cli -import ch.kleis.lcaac.cli.cmd.AssessCommand -import ch.kleis.lcaac.cli.cmd.LcaacCommand -import ch.kleis.lcaac.cli.cmd.TestCommand -import ch.kleis.lcaac.cli.cmd.TraceCommand +import ch.kleis.lcaac.cli.cmd.* import com.github.ajalt.clikt.core.subcommands fun main(args: Array) = LcaacCommand() @@ -11,5 +8,6 @@ fun main(args: Array) = LcaacCommand() AssessCommand(), TestCommand(), TraceCommand(), + VersionCommand(), ) .main(args) diff --git a/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/VersionCommand.kt b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/VersionCommand.kt new file mode 100644 index 00000000..a473a07e --- /dev/null +++ b/cli/src/main/kotlin/ch/kleis/lcaac/cli/cmd/VersionCommand.kt @@ -0,0 +1,19 @@ +package ch.kleis.lcaac.cli.cmd + +import com.github.ajalt.clikt.core.CliktCommand +import java.util.Properties + +class VersionCommand : CliktCommand(name = "version", help = "Get version") { + override fun run() { + val propsFile = {}.javaClass.classLoader.getResourceAsStream("META-INF/lcaac.properties") + val props = propsFile.use { + Properties().apply { load(it) } + } + val author = props.getProperty("author") + val description = props.getProperty("description") + val version = props.getProperty("version") + echo(description) + echo("v${version}") + echo(author) + } +} diff --git a/cli/src/main/resources/META-INF/lcaac.properties b/cli/src/main/resources/META-INF/lcaac.properties new file mode 100644 index 00000000..383b5423 --- /dev/null +++ b/cli/src/main/resources/META-INF/lcaac.properties @@ -0,0 +1,3 @@ +author=Kleis Technology +description=LCA as Code CLI +version=1.7.6 diff --git a/gradle.properties b/gradle.properties index e5e5efd1..30bdbe4f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,4 +2,4 @@ javaVersion=17 gradleVersion=7.6 org.gradle.jvmargs=-Xmx4096m lcaacGroup=ch.kleis.lcaac -lcaacVersion=1.7.6 +lcaacVersion=1.7.7