summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/common/cli.hpp10
-rw-r--r--src/buildtool/main/main.cpp10
2 files changed, 17 insertions, 3 deletions
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp
index 4e1d86da..a95cac5f 100644
--- a/src/buildtool/common/cli.hpp
+++ b/src/buildtool/common/cli.hpp
@@ -24,8 +24,11 @@ struct CommonArguments {
std::optional<std::filesystem::path> workspace_root{};
std::optional<std::filesystem::path> repository_config{};
std::optional<std::string> main{};
- std::optional<std::filesystem::path> log_file{};
std::size_t jobs{std::max(1U, std::thread::hardware_concurrency())};
+};
+
+struct LogArguments {
+ std::optional<std::filesystem::path> log_file{};
LogLevel log_limit{kDefaultLogLevel};
};
@@ -119,6 +122,11 @@ static inline auto SetupCommonArguments(
clargs->jobs,
"Number of jobs to run (Default: Number of cores).")
->type_name("NUM");
+}
+
+static inline auto SetupLogArguments(
+ gsl::not_null<CLI::App*> const& app,
+ gsl::not_null<LogArguments*> const& clargs) {
app->add_option(
"-f,--log-file", clargs->log_file, "Path to local log file.")
->type_name("PATH");
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index 4c977955..e9f2d72c 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -56,6 +56,7 @@ enum class SubCommand {
struct CommandLineArguments {
SubCommand cmd{SubCommand::kUnknown};
CommonArguments common;
+ LogArguments log;
AnalysisArguments analysis;
DiagnosticArguments diagnose;
EndpointArguments endpoint;
@@ -72,6 +73,7 @@ auto SetupDescribeCommandArguments(
gsl::not_null<CommandLineArguments*> const& clargs) {
SetupCommonArguments(app, &clargs->common);
SetupAnalysisArguments(app, &clargs->analysis, false);
+ SetupLogArguments(app, &clargs->log);
}
/// \brief Setup arguments for sub command "just analyse".
@@ -79,6 +81,7 @@ auto SetupAnalyseCommandArguments(
gsl::not_null<CLI::App*> const& app,
gsl::not_null<CommandLineArguments*> const& clargs) {
SetupCommonArguments(app, &clargs->common);
+ SetupLogArguments(app, &clargs->log);
SetupAnalysisArguments(app, &clargs->analysis);
SetupEndpointArguments(app, &clargs->endpoint);
SetupDiagnosticArguments(app, &clargs->diagnose);
@@ -90,6 +93,7 @@ auto SetupBuildCommandArguments(
gsl::not_null<CLI::App*> const& app,
gsl::not_null<CommandLineArguments*> const& clargs) {
SetupCommonArguments(app, &clargs->common);
+ SetupLogArguments(app, &clargs->log);
SetupAnalysisArguments(app, &clargs->analysis);
SetupEndpointArguments(app, &clargs->endpoint);
SetupBuildArguments(app, &clargs->build);
@@ -119,6 +123,7 @@ auto SetupInstallCasCommandArguments(
SetupCompatibilityArguments(app);
SetupEndpointArguments(app, &clargs->endpoint);
SetupFetchArguments(app, &clargs->fetch);
+ SetupLogArguments(app, &clargs->log);
}
/// \brief Setup arguments for sub command "just traverse".
@@ -126,6 +131,7 @@ auto SetupTraverseCommandArguments(
gsl::not_null<CLI::App*> const& app,
gsl::not_null<CommandLineArguments*> const& clargs) {
SetupCommonArguments(app, &clargs->common);
+ SetupLogArguments(app, &clargs->log);
SetupEndpointArguments(app, &clargs->endpoint);
SetupGraphArguments(app, &clargs->graph); // instead of analysis
SetupBuildArguments(app, &clargs->build);
@@ -209,7 +215,7 @@ void SetupDefaultLogging() {
LogConfig::SetSinks({LogSinkCmdLine::CreateFactory()});
}
-void SetupLogging(CommonArguments const& clargs) {
+void SetupLogging(LogArguments const& clargs) {
LogConfig::SetLogLimit(clargs.log_limit);
if (clargs.log_file) {
LogConfig::AddSink(LogSinkFile::CreateFactory(
@@ -1444,7 +1450,7 @@ auto main(int argc, char* argv[]) -> int {
return kExitSuccess;
}
- SetupLogging(arguments.common);
+ SetupLogging(arguments.log);
if (arguments.analysis.expression_log_limit) {
Evaluator::SetExpressionLogLimit(
*arguments.analysis.expression_log_limit);