summaryrefslogtreecommitdiffstats
path: root/src/ninja.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2012-01-24 23:56:15 (GMT)
committerEvan Martin <martine@danga.com>2012-01-24 23:56:15 (GMT)
commit982de2ff79a1d862026763bcff17582ebeef5a5d (patch)
treee63d776ef833ef7f35cd0143aa6e0d3fdc977240 /src/ninja.cc
parent9101fb077be10d74bc0f165cc2c327a9190e3eb6 (diff)
downloadNinja-982de2ff79a1d862026763bcff17582ebeef5a5d.zip
Ninja-982de2ff79a1d862026763bcff17582ebeef5a5d.tar.gz
Ninja-982de2ff79a1d862026763bcff17582ebeef5a5d.tar.bz2
rearrange query/browse output to be more sensible
Diffstat (limited to 'src/ninja.cc')
-rw-r--r--src/ninja.cc40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/ninja.cc b/src/ninja.cc
index 4e750f4..1822e54 100644
--- a/src/ninja.cc
+++ b/src/ninja.cc
@@ -224,24 +224,7 @@ int ToolQuery(Globals* globals, int argc, char* argv[]) {
}
for (int i = 0; i < argc; ++i) {
Node* node = globals->state->LookupNode(argv[i]);
- if (node) {
- printf("%s:\n", argv[i]);
- if (node->in_edge()) {
- printf(" input: %s\n", node->in_edge()->rule_->name().c_str());
- for (vector<Node*>::iterator in = node->in_edge()->inputs_.begin();
- in != node->in_edge()->inputs_.end(); ++in) {
- printf(" %s\n", (*in)->path().c_str());
- }
- }
- for (vector<Edge*>::const_iterator edge = node->out_edges().begin();
- edge != node->out_edges().end(); ++edge) {
- printf(" output: %s\n", (*edge)->rule_->name().c_str());
- for (vector<Node*>::iterator out = (*edge)->outputs_.begin();
- out != (*edge)->outputs_.end(); ++out) {
- printf(" %s\n", (*out)->path().c_str());
- }
- }
- } else {
+ if (!node) {
Node* suggestion = globals->state->SpellcheckNode(argv[i]);
if (suggestion) {
printf("%s unknown, did you mean %s?\n",
@@ -251,6 +234,27 @@ int ToolQuery(Globals* globals, int argc, char* argv[]) {
}
return 1;
}
+
+ printf("%s:\n", argv[i]);
+ if (Edge* edge = node->in_edge()) {
+ printf(" input: %s\n", edge->rule_->name().c_str());
+ for (int in = 0; in < (int)edge->inputs_.size(); in++) {
+ const char* label = "";
+ if (edge->is_implicit(in))
+ label = "| ";
+ else if (edge->is_order_only(in))
+ label = "|| ";
+ printf(" %s%s\n", label, edge->inputs_[in]->path().c_str());
+ }
+ }
+ printf(" outputs:\n");
+ for (vector<Edge*>::const_iterator edge = node->out_edges().begin();
+ edge != node->out_edges().end(); ++edge) {
+ for (vector<Node*>::iterator out = (*edge)->outputs_.begin();
+ out != (*edge)->outputs_.end(); ++out) {
+ printf(" %s\n", (*out)->path().c_str());
+ }
+ }
}
return 0;
}