summaryrefslogtreecommitdiff
path: root/src/buildtool/main/version.cpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-23 16:38:39 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-24 15:15:15 +0200
commit46f5fdee03f690541ce56b0670eb7d86d36f6a3d (patch)
treebcf8b82073e049c444d454de59970f5575ca06a5 /src/buildtool/main/version.cpp
parent4c38d492a2239019255296123f51fa44dec48f14 (diff)
downloadjustbuild-46f5fdee03f690541ce56b0670eb7d86d36f6a3d.tar.gz
Add a version subcommand
To also allow identifying snapshot versions in a meaningful way, we support embedding SOURCE_DATE_EPOCH which ought to be set to the commit time of the commit used.
Diffstat (limited to 'src/buildtool/main/version.cpp')
-rw-r--r--src/buildtool/main/version.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/buildtool/main/version.cpp b/src/buildtool/main/version.cpp
new file mode 100644
index 00000000..3bd37f2a
--- /dev/null
+++ b/src/buildtool/main/version.cpp
@@ -0,0 +1,22 @@
+#include "src/buildtool/main/version.hpp"
+
+#include "nlohmann/json.hpp"
+#include "src/utils/cpp/json.hpp"
+
+auto version() -> std::string {
+ std::size_t major = 0;
+ std::size_t minor = 1;
+ std::size_t revision = 0;
+ std::string suffix = "+devel";
+
+ nlohmann::json version_info = {{"version", {major, minor, revision}},
+ {"suffix", suffix}};
+
+#ifdef SOURCE_DATE_EPOCH
+ version_info["SOURCE_DATE_EPOCH"] = (std::size_t)SOURCE_DATE_EPOCH;
+#else
+ version_info["SOURCE_DATE_EPOCH"] = nullptr;
+#endif
+
+ return IndentOnlyUntilDepth(version_info, 2, 1, {});
+}