Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: tools/gn/command_help.cc

Issue 2504133003: Add more gn documentation (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/gn/docs/language.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "tools/gn/args.h" 9 #include "tools/gn/args.h"
10 #include "tools/gn/commands.h" 10 #include "tools/gn/commands.h"
11 #include "tools/gn/err.h" 11 #include "tools/gn/err.h"
12 #include "tools/gn/functions.h" 12 #include "tools/gn/functions.h"
13 #include "tools/gn/input_conversion.h" 13 #include "tools/gn/input_conversion.h"
14 #include "tools/gn/label.h"
14 #include "tools/gn/label_pattern.h" 15 #include "tools/gn/label_pattern.h"
16 #include "tools/gn/ninja_build_writer.h"
15 #include "tools/gn/parser.h" 17 #include "tools/gn/parser.h"
16 #include "tools/gn/runtime_deps.h" 18 #include "tools/gn/runtime_deps.h"
17 #include "tools/gn/setup.h" 19 #include "tools/gn/setup.h"
18 #include "tools/gn/standard_out.h" 20 #include "tools/gn/standard_out.h"
19 #include "tools/gn/string_utils.h" 21 #include "tools/gn/string_utils.h"
20 #include "tools/gn/substitution_writer.h" 22 #include "tools/gn/substitution_writer.h"
21 #include "tools/gn/switches.h" 23 #include "tools/gn/switches.h"
24 #include "tools/gn/target.h"
22 #include "tools/gn/variables.h" 25 #include "tools/gn/variables.h"
23 26
24 namespace commands { 27 namespace commands {
25 28
26 namespace { 29 namespace {
27 30
28 void PrintToplevelHelp() { 31 void PrintToplevelHelp() {
29 OutputString("Commands (type \"gn help <command>\" for more details):\n"); 32 OutputString("Commands (type \"gn help <command>\" for more details):\n");
30 for (const auto& cmd : commands::GetCommands()) 33 for (const auto& cmd : commands::GetCommands())
31 PrintShortHelp(cmd.second.help_short); 34 PrintShortHelp(cmd.second.help_short);
(...skipping 23 matching lines...) Expand all
55 // Target variables. 58 // Target variables.
56 OutputString("\nVariables you set in targets (type \"gn help <variable>\" " 59 OutputString("\nVariables you set in targets (type \"gn help <variable>\" "
57 "for more details):\n"); 60 "for more details):\n");
58 for (const auto& target : variables::GetTargetVariables()) 61 for (const auto& target : variables::GetTargetVariables())
59 PrintShortHelp(target.second.help_short); 62 PrintShortHelp(target.second.help_short);
60 63
61 OutputString("\nOther help topics:\n"); 64 OutputString("\nOther help topics:\n");
62 PrintShortHelp("all: Print all the help at once"); 65 PrintShortHelp("all: Print all the help at once");
63 PrintShortHelp("buildargs: How build arguments work."); 66 PrintShortHelp("buildargs: How build arguments work.");
64 PrintShortHelp("dotfile: Info about the toplevel .gn file."); 67 PrintShortHelp("dotfile: Info about the toplevel .gn file.");
68 PrintShortHelp("execution: Build graph and execution overview.");
65 PrintShortHelp("grammar: Language and grammar for GN build files."); 69 PrintShortHelp("grammar: Language and grammar for GN build files.");
66 PrintShortHelp( 70 PrintShortHelp(
67 "input_conversion: Processing input from exec_script and read_file."); 71 "input_conversion: Processing input from exec_script and read_file.");
68 PrintShortHelp("label_pattern: Matching more than one label."); 72 PrintShortHelp("label_pattern: Matching more than one label.");
73 PrintShortHelp("labels: About labels.");
74 PrintShortHelp("ninja_rules: How Ninja build rules and named.");
69 PrintShortHelp("nogncheck: Annotating includes for checking."); 75 PrintShortHelp("nogncheck: Annotating includes for checking.");
70 PrintShortHelp("runtime_deps: How runtime dependency computation works."); 76 PrintShortHelp("runtime_deps: How runtime dependency computation works.");
71 PrintShortHelp("source_expansion: Map sources to outputs for scripts."); 77 PrintShortHelp("source_expansion: Map sources to outputs for scripts.");
72 PrintShortHelp("switches: Show available command-line switches."); 78 PrintShortHelp("switches: Show available command-line switches.");
73 } 79 }
74 80
75 void PrintSwitchHelp() { 81 void PrintSwitchHelp() {
76 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); 82 const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
77 bool use_markdown = cmdline->HasSwitch(switches::kMarkdown); 83 bool use_markdown = cmdline->HasSwitch(switches::kMarkdown);
78 84
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 PrintLongHelp(f.second.help); 123 PrintLongHelp(f.second.help);
118 124
119 for (const auto& v: variables::GetBuiltinVariables()) 125 for (const auto& v: variables::GetBuiltinVariables())
120 PrintLongHelp(v.second.help); 126 PrintLongHelp(v.second.help);
121 127
122 for (const auto& v: variables::GetTargetVariables()) 128 for (const auto& v: variables::GetTargetVariables())
123 PrintLongHelp(v.second.help); 129 PrintLongHelp(v.second.help);
124 130
125 PrintLongHelp(kBuildArgs_Help); 131 PrintLongHelp(kBuildArgs_Help);
126 PrintLongHelp(kDotfile_Help); 132 PrintLongHelp(kDotfile_Help);
133 PrintLongHelp(kExecution_Help);
127 PrintLongHelp(kGrammar_Help); 134 PrintLongHelp(kGrammar_Help);
128 PrintLongHelp(kInputConversion_Help); 135 PrintLongHelp(kInputConversion_Help);
129 PrintLongHelp(kLabelPattern_Help); 136 PrintLongHelp(kLabelPattern_Help);
137 PrintLongHelp(kLabels_Help);
138 PrintLongHelp(kNinjaRules_Help);
130 PrintLongHelp(kNoGnCheck_Help); 139 PrintLongHelp(kNoGnCheck_Help);
131 PrintLongHelp(kRuntimeDeps_Help); 140 PrintLongHelp(kRuntimeDeps_Help);
132 PrintLongHelp(kSourceExpansion_Help); 141 PrintLongHelp(kSourceExpansion_Help);
133 PrintSwitchHelp(); 142 PrintSwitchHelp();
134 } 143 }
135 144
136 // Prints help on the given switch. There should be no leading hyphens. Returns 145 // Prints help on the given switch. There should be no leading hyphens. Returns
137 // true if the switch was found and help was printed. False means the switch is 146 // true if the switch was found and help was printed. False means the switch is
138 // unknown. 147 // unknown.
139 bool PrintHelpOnSwitch(const std::string& what) { 148 bool PrintHelpOnSwitch(const std::string& what) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 if (found_target_var != target_vars.end()) { 242 if (found_target_var != target_vars.end()) {
234 PrintLongHelp(found_target_var->second.help); 243 PrintLongHelp(found_target_var->second.help);
235 return 0; 244 return 0;
236 } 245 }
237 for (const auto& entry : target_vars) 246 for (const auto& entry : target_vars)
238 all_help_topics.push_back(entry.first); 247 all_help_topics.push_back(entry.first);
239 248
240 // Random other topics. 249 // Random other topics.
241 std::map<std::string, void(*)()> random_topics; 250 std::map<std::string, void(*)()> random_topics;
242 random_topics["all"] = PrintAllHelp; 251 random_topics["all"] = PrintAllHelp;
252 random_topics["execution"] = []() { PrintLongHelp(kExecution_Help); };
243 random_topics["buildargs"] = []() { PrintLongHelp(kBuildArgs_Help); }; 253 random_topics["buildargs"] = []() { PrintLongHelp(kBuildArgs_Help); };
244 random_topics["dotfile"] = []() { PrintLongHelp(kDotfile_Help); }; 254 random_topics["dotfile"] = []() { PrintLongHelp(kDotfile_Help); };
245 random_topics["grammar"] = []() { PrintLongHelp(kGrammar_Help); }; 255 random_topics["grammar"] = []() { PrintLongHelp(kGrammar_Help); };
246 random_topics["input_conversion"] = []() { 256 random_topics["input_conversion"] = []() {
247 PrintLongHelp(kInputConversion_Help); 257 PrintLongHelp(kInputConversion_Help);
248 }; 258 };
249 random_topics["label_pattern"] = []() { PrintLongHelp(kLabelPattern_Help); }; 259 random_topics["label_pattern"] = []() { PrintLongHelp(kLabelPattern_Help); };
260 random_topics["labels"] = []() { PrintLongHelp(kLabels_Help); };
261 random_topics["ninja_rules"] = []() { PrintLongHelp(kNinjaRules_Help); };
250 random_topics["nogncheck"] = []() { PrintLongHelp(kNoGnCheck_Help); }; 262 random_topics["nogncheck"] = []() { PrintLongHelp(kNoGnCheck_Help); };
251 random_topics["runtime_deps"] = []() { PrintLongHelp(kRuntimeDeps_Help); }; 263 random_topics["runtime_deps"] = []() { PrintLongHelp(kRuntimeDeps_Help); };
252 random_topics["source_expansion"] = []() { 264 random_topics["source_expansion"] = []() {
253 PrintLongHelp(kSourceExpansion_Help); 265 PrintLongHelp(kSourceExpansion_Help);
254 }; 266 };
255 random_topics["switches"] = PrintSwitchHelp; 267 random_topics["switches"] = PrintSwitchHelp;
256 auto found_random_topic = random_topics.find(what); 268 auto found_random_topic = random_topics.find(what);
257 if (found_random_topic != random_topics.end()) { 269 if (found_random_topic != random_topics.end()) {
258 found_random_topic->second(); 270 found_random_topic->second();
259 return 0; 271 return 0;
260 } 272 }
261 for (const auto& entry : random_topics) 273 for (const auto& entry : random_topics)
262 all_help_topics.push_back(entry.first); 274 all_help_topics.push_back(entry.first);
263 275
264 // No help on this. 276 // No help on this.
265 Err(Location(), "No help on \"" + what + "\".").PrintToStdout(); 277 Err(Location(), "No help on \"" + what + "\".").PrintToStdout();
266 base::StringPiece suggestion = SpellcheckString(what, all_help_topics); 278 base::StringPiece suggestion = SpellcheckString(what, all_help_topics);
267 if (suggestion.empty()) { 279 if (suggestion.empty()) {
268 OutputString("Run `gn help` for a list of available topics.\n", 280 OutputString("Run `gn help` for a list of available topics.\n",
269 DECORATION_NONE); 281 DECORATION_NONE);
270 } else { 282 } else {
271 OutputString("Did you mean `gn help " + suggestion.as_string() + "`?\n", 283 OutputString("Did you mean `gn help " + suggestion.as_string() + "`?\n",
272 DECORATION_NONE); 284 DECORATION_NONE);
273 } 285 }
274 return 1; 286 return 1;
275 } 287 }
276 288
277 } // namespace commands 289 } // namespace commands
OLDNEW
« no previous file with comments | « no previous file | tools/gn/docs/language.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698