diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-23 16:38:39 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-24 15:15:15 +0200 |
commit | 46f5fdee03f690541ce56b0670eb7d86d36f6a3d (patch) | |
tree | bcf8b82073e049c444d454de59970f5575ca06a5 /src/buildtool/main/main.cpp | |
parent | 4c38d492a2239019255296123f51fa44dec48f14 (diff) | |
download | justbuild-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.cpp | 15 |
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(); |