diff options
author | Evan Martin <martine@danga.com> | 2012-01-24 23:56:15 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2012-01-24 23:56:15 (GMT) |
commit | 982de2ff79a1d862026763bcff17582ebeef5a5d (patch) | |
tree | e63d776ef833ef7f35cd0143aa6e0d3fdc977240 /src/ninja.cc | |
parent | 9101fb077be10d74bc0f165cc2c327a9190e3eb6 (diff) | |
download | Ninja-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.cc | 40 |
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; } |