From 2ff3147627feca13d72cd631ef29f4ee152b82f1 Mon Sep 17 00:00:00 2001 From: Naveen Narayanan Date: Wed, 26 Jun 2024 22:36:12 -0700 Subject: [PATCH 1/3] Read version from resource instead of hard-coding it --- BUILD | 2 ++ cli/BUILD | 2 ++ .../main/kotlin/com/bazel_diff/cli/VersionProvider.kt | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/BUILD b/BUILD index def9d414..1afd7dd6 100644 --- a/BUILD +++ b/BUILD @@ -2,3 +2,5 @@ alias( name = "bazel-diff", actual = "//cli:bazel-diff", ) + +exports_files([".bazelversion"]) diff --git a/cli/BUILD b/cli/BUILD index 7602ac13..87645c39 100644 --- a/cli/BUILD +++ b/cli/BUILD @@ -22,6 +22,7 @@ java_binary( kt_jvm_library( name = "cli-lib", srcs = glob(["src/main/kotlin/**/*.kt"]), + resources = ["//:.bazelversion"], deps = [ "@bazel_diff_maven//:com_google_code_gson_gson", "@bazel_diff_maven//:com_google_guava_guava", @@ -31,6 +32,7 @@ kt_jvm_library( "@bazel_diff_maven//:org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm", "@bazel_tools//src/main/protobuf:analysis_v2_java_proto", "@bazel_tools//src/main/protobuf:build_java_proto", + "@bazel_tools//tools/java/runfiles", ], ) 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 c2a86ca4..04ca11db 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(".bazelversion") + ?: throw IllegalArgumentException("unknown version as .bazelversion file not found in resources") + + val version = BufferedReader(InputStreamReader(inputStream)).use { it.readText().trim() } + return arrayOf(version) } } From acd415a165d8515d9d94be18f14dcd62d0c1bf1c Mon Sep 17 00:00:00 2001 From: Naveen Narayanan Date: Thu, 27 Jun 2024 21:11:07 -0700 Subject: [PATCH 2/3] Moving to stamping to extract the version from tag or default to commit hash --- .bazelrc | 3 +++ BUILD | 2 -- cli/BUILD | 14 ++++++++++++-- .../kotlin/com/bazel_diff/cli/VersionProvider.kt | 4 ++-- workspace_status.sh | 5 +++++ 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100755 workspace_status.sh diff --git a/.bazelrc b/.bazelrc index 00fadd4f..321f148e 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/BUILD b/BUILD index 1afd7dd6..def9d414 100644 --- a/BUILD +++ b/BUILD @@ -2,5 +2,3 @@ alias( name = "bazel-diff", actual = "//cli:bazel-diff", ) - -exports_files([".bazelversion"]) diff --git a/cli/BUILD b/cli/BUILD index 87645c39..e00b77e4 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,7 +33,7 @@ java_binary( kt_jvm_library( name = "cli-lib", srcs = glob(["src/main/kotlin/**/*.kt"]), - resources = ["//:.bazelversion"], + resources = [":version_file"], deps = [ "@bazel_diff_maven//:com_google_code_gson_gson", "@bazel_diff_maven//:com_google_guava_guava", @@ -32,7 +43,6 @@ kt_jvm_library( "@bazel_diff_maven//:org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm", "@bazel_tools//src/main/protobuf:analysis_v2_java_proto", "@bazel_tools//src/main/protobuf:build_java_proto", - "@bazel_tools//tools/java/runfiles", ], ) 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 04ca11db..d57ba82e 100644 --- a/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt +++ b/cli/src/main/kotlin/com/bazel_diff/cli/VersionProvider.kt @@ -7,8 +7,8 @@ import java.io.InputStreamReader class VersionProvider : IVersionProvider { override fun getVersion(): Array { val classLoader = this::class.java.classLoader - val inputStream = classLoader.getResourceAsStream(".bazelversion") - ?: throw IllegalArgumentException("unknown version as .bazelversion file not found in resources") + 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 00000000..18e5f60a --- /dev/null +++ b/workspace_status.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set +e + +# Get the current Git tag +echo "STABLE_GIT_TAG $(git describe --tags --abbrev=0 2>/dev/null || git rev-parse HEAD)" From 42dec71db153621b7c193a6248022722a119b833 Mon Sep 17 00:00:00 2001 From: Naveen Narayanan Date: Thu, 27 Jun 2024 21:16:15 -0700 Subject: [PATCH 3/3] Cleaning up workspace_status.sh --- workspace_status.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workspace_status.sh b/workspace_status.sh index 18e5f60a..03fc7522 100755 --- a/workspace_status.sh +++ b/workspace_status.sh @@ -1,5 +1,4 @@ #!/bin/bash -set +e -# Get the current Git tag +# 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)"