summaryrefslogtreecommitdiff
path: root/src/buildtool/main/main.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/main.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/main.cpp')
-rw-r--r--src/buildtool/main/main.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index ba8bcb7d..d6d999ab 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -29,6 +29,7 @@
#include "src/buildtool/logging/log_config.hpp"
#include "src/buildtool/logging/log_sink_cmdline.hpp"
#include "src/buildtool/logging/log_sink_file.hpp"
+#include "src/buildtool/main/version.hpp"
#include "src/buildtool/multithreading/async_map_consumer.hpp"
#include "src/buildtool/multithreading/task_system.hpp"
#include "src/utils/cpp/concepts.hpp"
@@ -41,6 +42,7 @@ namespace Target = BuildMaps::Target;
enum class SubCommand {
kUnknown,
+ kVersion,
kDescribe,
kAnalyse,
kBuild,
@@ -134,6 +136,8 @@ auto ParseCommandLineArguments(int argc, char const* const* argv)
CLI::App app("just");
app.option_defaults()->take_last();
+ auto* cmd_version = app.add_subcommand(
+ "version", "Print version information in JSON format.");
auto* cmd_describe = app.add_subcommand(
"describe", "Describe the rule generating a target.");
auto* cmd_analyse =
@@ -152,6 +156,7 @@ auto ParseCommandLineArguments(int argc, char const* const* argv)
app.require_subcommand(1);
CommandLineArguments clargs;
+ SetupDescribeCommandArguments(cmd_version, &clargs);
SetupDescribeCommandArguments(cmd_describe, &clargs);
SetupAnalyseCommandArguments(cmd_analyse, &clargs);
SetupBuildCommandArguments(cmd_build, &clargs);
@@ -169,7 +174,10 @@ auto ParseCommandLineArguments(int argc, char const* const* argv)
std::exit(kExitFailure);
}
- if (*cmd_describe) {
+ if (*cmd_version) {
+ clargs.cmd = SubCommand::kVersion;
+ }
+ else if (*cmd_describe) {
clargs.cmd = SubCommand::kDescribe;
}
else if (*cmd_analyse) {
@@ -1319,6 +1327,11 @@ auto main(int argc, char* argv[]) -> int {
try {
auto arguments = ParseCommandLineArguments(argc, argv);
+ if (arguments.cmd == SubCommand::kVersion) {
+ std::cerr << version() << std::endl;
+ return kExitSuccess;
+ }
+
SetupLogging(arguments.common);
#ifndef BOOTSTRAP_BUILD_TOOL
SetupHashFunction();