verbose mode
authorEvan Martin <martine@danga.com>
Tue, 7 Dec 2010 03:37:26 +0000 (19:37 -0800)
committerEvan Martin <martine@danga.com>
Tue, 7 Dec 2010 03:37:26 +0000 (19:37 -0800)
src/build.cc
src/build.h
src/ninja.cc

index 128ad7d..262fee5 100644 (file)
@@ -13,10 +13,12 @@ struct BuildStatusLog {
 
   time_t last_update_;
   int finished_edges_, total_edges_;
+  bool verbose_;
 };
 
 BuildStatusLog::BuildStatusLog()
-  : last_update_(time(NULL)), finished_edges_(0), total_edges_(0) {}
+    : last_update_(time(NULL)), finished_edges_(0), total_edges_(0),
+      verbose_(false) {}
 
 void BuildStatusLog::PlanHasTotalEdges(int total) {
   total_edges_ = total;
@@ -24,7 +26,7 @@ void BuildStatusLog::PlanHasTotalEdges(int total) {
 
 void BuildStatusLog::BuildEdgeStarted(Edge* edge) {
   string desc = edge->GetDescription();
-  if (!desc.empty())
+  if (!verbose_ && !desc.empty())
     printf("%s\n", desc.c_str());
   else
     printf("%s\n", edge->EvaluateCommand().c_str());
@@ -217,6 +219,10 @@ Builder::Builder(State* state)
   log_ = new BuildStatusLog;
 }
 
+void Builder::SetVerbose(bool verbose) {
+  log_->verbose_ = verbose;
+}
+
 Node* Builder::AddTarget(const string& name, string* err) {
   Node* node = state_->LookupNode(name);
   if (!node) {
index bbde651..e362226 100644 (file)
@@ -60,6 +60,8 @@ struct CommandRunner {
 struct Builder {
   Builder(State* state);
 
+  void SetVerbose(bool verbose);
+
   Node* AddTarget(const string& name, string* err);
   bool Build(string* err);
 
index f39c77f..fab3f3a 100644 (file)
@@ -20,6 +20,7 @@ void usage() {
 "options:\n"
 "  -g       output graphviz dot file for targets and exit\n"
 "  -i FILE  specify input build file [default=build.ninja]\n"
+"  -v       show all command lines\n"
           );
 }
 
@@ -33,8 +34,8 @@ int main(int argc, char** argv) {
   const char* input_file = "build.ninja";
 
   int opt;
-  bool graph = false;
-  while ((opt = getopt_long(argc, argv, "ghi:", options, NULL)) != -1) {
+  bool graph = false, verbose = false;
+  while ((opt = getopt_long(argc, argv, "ghi:v", options, NULL)) != -1) {
     switch (opt) {
       case 'g':
         graph = true;
@@ -42,6 +43,9 @@ int main(int argc, char** argv) {
       case 'i':
         input_file = optarg;
         break;
+      case 'v':
+        verbose = true;
+        break;
       case 'h':
       default:
         usage();
@@ -82,6 +86,7 @@ int main(int argc, char** argv) {
   }
 
   Builder builder(&state);
+  builder.SetVerbose(verbose);
   for (int i = 0; i < argc; ++i) {
     if (!builder.AddTarget(argv[i], &err)) {
       if (!err.empty()) {