diff --git a/.bazelrc b/.bazelrc index 00fadd4..321f148 100644 --- a/.bazelrc +++ b/.bazelrc @@ -2,3 +2,6 @@ run -c opt --show_loading_progress=false --show_progress=false --ui_event_filter run:verbose -c dbg --show_loading_progress=true --show_progress=true --ui_event_filters=info,error,debug # https://github.com/mockito/mockito/issues/1879 test --sandbox_tmpfs_path=/tmp + +# To allow stamping git tag for version. +build --workspace_status_command=$(pwd)/workspace_status.sh diff --git a/cli/BUILD b/cli/BUILD index 7602ac1..e00b77e 100644 --- a/cli/BUILD +++ b/cli/BUILD @@ -8,6 +8,17 @@ config_setting( }, ) +genrule( + name = "version_file", + srcs = [], + outs = ["version"], + cmd_bash = """ + version_tag=$$(grep ^STABLE_GIT_TAG bazel-out/stable-status.txt | cut -d' ' -f2); \ + printf '%s' $$version_tag > $@; + """, + stamp = 1, +) + java_binary( name = "bazel-diff", jvm_flags = select({ @@ -22,6 +33,7 @@ java_binary( kt_jvm_library( name = "cli-lib", srcs = glob(["src/main/kotlin/**/*.kt"]), + resources = [":version_file"], deps = [ "@bazel_diff_maven//:com_google_code_gson_gson", "@bazel_diff_maven//:com_google_guava_guava", diff --git a/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt b/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt index c2a86ca..d57ba82 100644 --- a/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt +++ b/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt @@ -1,9 +1,16 @@ package com.bazel_diff.cli import picocli.CommandLine.IVersionProvider +import java.io.BufferedReader +import java.io.InputStreamReader class VersionProvider : IVersionProvider { override fun getVersion(): Array { - return arrayOf("7.0.0") + val classLoader = this::class.java.classLoader + val inputStream = classLoader.getResourceAsStream("cli/version") + ?: throw IllegalArgumentException("unknown version as version file not found in resources") + + val version = BufferedReader(InputStreamReader(inputStream)).use { it.readText().trim() } + return arrayOf(version) } } diff --git a/workspace_status.sh b/workspace_status.sh new file mode 100755 index 0000000..03fc752 --- /dev/null +++ b/workspace_status.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Get the current Git tag or default to the commit hash +echo "STABLE_GIT_TAG $(git describe --tags --abbrev=0 2>/dev/null || git rev-parse HEAD)"