From a4b90fa428f6b1836854c089754c912f72c7bfb2 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Tue, 14 Dec 2010 08:37:48 -0800 Subject: verbosity tristate --- src/build.cc | 17 ++++++++++------- src/build.h | 11 ++++++++--- src/build_test.cc | 8 +++++++- src/ninja.cc | 2 +- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/build.cc b/src/build.cc index c160dc3..dc1fcab 100644 --- a/src/build.cc +++ b/src/build.cc @@ -13,12 +13,13 @@ struct BuildStatusLog { time_t last_update_; int finished_edges_, total_edges_; - bool verbose_; + + BuildConfig::Verbosity verbosity_; }; BuildStatusLog::BuildStatusLog() : last_update_(time(NULL)), finished_edges_(0), total_edges_(0), - verbose_(false) {} + verbosity_(BuildConfig::NORMAL) {} void BuildStatusLog::PlanHasTotalEdges(int total) { total_edges_ = total; @@ -26,10 +27,12 @@ void BuildStatusLog::PlanHasTotalEdges(int total) { void BuildStatusLog::BuildEdgeStarted(Edge* edge) { string desc = edge->GetDescription(); - if (!verbose_ && !desc.empty()) - printf("%s\n", desc.c_str()); - else - printf("%s\n", edge->EvaluateCommand().c_str()); + if (verbosity_ != BuildConfig::QUIET) { + if (verbosity_ != BuildConfig::VERBOSE && !desc.empty()) + printf("%s\n", desc.c_str()); + else + printf("%s\n", edge->EvaluateCommand().c_str()); + } } void BuildStatusLog::BuildEdgeFinished(Edge* edge) { @@ -243,7 +246,7 @@ Builder::Builder(State* state, const BuildConfig& config) else command_runner_ = new RealCommandRunner; log_ = new BuildStatusLog; - log_->verbose_ = config.verbose; + log_->verbosity_ = config.verbosity; } Node* Builder::AddTarget(const string& name, string* err) { diff --git a/src/build.h b/src/build.h index b79ffae..4574e20 100644 --- a/src/build.h +++ b/src/build.h @@ -58,9 +58,14 @@ struct CommandRunner { }; struct BuildConfig { - BuildConfig() : verbose(false), dry_run(false) {} - - bool verbose; + BuildConfig() : verbosity(NORMAL), dry_run(false) {} + + enum Verbosity { + NORMAL, + QUIET, // No output -- used when testing. + VERBOSE + }; + Verbosity verbosity; bool dry_run; }; diff --git a/src/build_test.cc b/src/build_test.cc index b8f1887..b2c4d76 100644 --- a/src/build_test.cc +++ b/src/build_test.cc @@ -160,7 +160,7 @@ TEST_F(PlanTest, DependencyCycle) { struct BuildTest : public StateTestWithBuiltinRules, public CommandRunner, public DiskInterface { - BuildTest() : config_(), builder_(&state_, config_), now_(1), + BuildTest() : config_(MakeConfig()), builder_(&state_, config_), now_(1), last_command_(NULL) { builder_.disk_interface_ = this; builder_.command_runner_ = this; @@ -197,6 +197,12 @@ struct BuildTest : public StateTestWithBuiltinRules, return ""; } + BuildConfig MakeConfig() { + BuildConfig config; + config.verbosity = BuildConfig::QUIET; + return config; + } + BuildConfig config_; Builder builder_; int now_; diff --git a/src/ninja.cc b/src/ninja.cc index 3c09bcd..8376d9a 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -49,7 +49,7 @@ int main(int argc, char** argv) { config.dry_run = true; break; case 'v': - config.verbose = true; + config.verbosity = BuildConfig::VERBOSE; break; case 'h': default: -- cgit v0.12