OLD | NEW |
1 Parses raw command-line arguments into a set of options and values. | 1 Parses raw command-line arguments into a set of options and values. |
2 | 2 |
3 This library supports [GNU][] and [POSIX][] style options, and it works | 3 This library supports [GNU][] and [POSIX][] style options, and it works |
4 in both server-side and client-side apps. | 4 in both server-side and client-side apps. |
5 | 5 |
6 ## Defining options | 6 ## Defining options |
7 | 7 |
8 First create an [ArgParser][]: | 8 First create an [ArgParser][]: |
9 | 9 |
10 var parser = new ArgParser(); | 10 var parser = new ArgParser(); |
11 | 11 |
12 Then define a set of options on that parser using [addOption()][addOption] and | 12 Then define a set of options on that parser using [addOption()][addOption] and |
13 [addFlag()][addFlag]. Here's the minimal way to create an option named "name": | 13 [addFlag()][addFlag]. Here's the minimal way to create an option named "name": |
14 | 14 |
15 parser.addOption('name'); | 15 parser.addOption('name'); |
16 | 16 |
17 When an option can only be set or unset (as opposed to taking a string value), | 17 When an option can only be set or unset (as opposed to taking a string value), |
18 use a flag: | 18 use a flag: |
19 | 19 |
20 parser.addFlag('name'); | 20 ```dart |
| 21 parser.addFlag('name'); |
| 22 ``` |
21 | 23 |
22 Flag options, by default, accept a 'no-' prefix to negate the option. You can | 24 Flag options, by default, accept a 'no-' prefix to negate the option. You can |
23 disable the 'no-' prefix using the `negatable` parameter: | 25 disable the 'no-' prefix using the `negatable` parameter: |
24 | 26 |
25 parser.addFlag('name', negatable: false); | 27 ```dart |
| 28 parser.addFlag('name', negatable: false); |
| 29 ``` |
26 | 30 |
27 *Note:* From here on out, "option" refers to both regular options and flags. In | 31 *Note:* From here on out, "option" refers to both regular options and flags. In |
28 cases where the distinction matters, we'll use "non-flag option." | 32 cases where the distinction matters, we'll use "non-flag option." |
29 | 33 |
30 Options can have an optional single-character abbreviation, specified with the | 34 Options can have an optional single-character abbreviation, specified with the |
31 `abbr` parameter: | 35 `abbr` parameter: |
32 | 36 |
33 parser.addOption('mode', abbr: 'm'); | 37 ```dart |
34 parser.addFlag('verbose', abbr: 'v'); | 38 parser.addOption('mode', abbr: 'm'); |
| 39 parser.addFlag('verbose', abbr: 'v'); |
| 40 ``` |
35 | 41 |
36 Options can also have a default value, specified with the `defaultsTo` | 42 Options can also have a default value, specified with the `defaultsTo` |
37 parameter. The default value is used when arguments don't specify the option. | 43 parameter. The default value is used when arguments don't specify the option. |
38 | 44 |
39 parser.addOption('mode', defaultsTo: 'debug'); | 45 ```dart |
40 parser.addFlag('verbose', defaultsTo: false); | 46 parser.addOption('mode', defaultsTo: 'debug'); |
| 47 parser.addFlag('verbose', defaultsTo: false); |
| 48 ``` |
41 | 49 |
42 The default value for non-flag options can be any string. For flags, it must | 50 The default value for non-flag options can be any string. For flags, it must |
43 be a `bool`. | 51 be a `bool`. |
44 | 52 |
45 To validate a non-flag option, you can use the `allowed` parameter to provide an | 53 To validate a non-flag option, you can use the `allowed` parameter to provide an |
46 allowed set of values. When you do, the parser throws a [FormatException] if the | 54 allowed set of values. When you do, the parser throws a [FormatException] if the |
47 value for an option is not in the allowed set. Here's an example of specifying | 55 value for an option is not in the allowed set. Here's an example of specifying |
48 allowed values: | 56 allowed values: |
49 | 57 |
50 parser.addOption('mode', allowed: ['debug', 'release']); | 58 ```dart |
| 59 parser.addOption('mode', allowed: ['debug', 'release']); |
| 60 ``` |
51 | 61 |
52 You can use the `callback` parameter to associate a function with an option. | 62 You can use the `callback` parameter to associate a function with an option. |
53 Later, when parsing occurs, the callback function is invoked with the value of | 63 Later, when parsing occurs, the callback function is invoked with the value of |
54 the option: | 64 the option: |
55 | 65 |
56 parser.addOption('mode', callback: (mode) => print('Got mode $mode')); | 66 ```dart |
57 parser.addFlag('verbose', callback: (verbose) { | 67 parser.addOption('mode', callback: (mode) => print('Got mode $mode')); |
58 if (verbose) print('Verbose'); | 68 parser.addFlag('verbose', callback: (verbose) { |
59 }); | 69 if (verbose) print('Verbose'); |
| 70 }); |
| 71 ``` |
60 | 72 |
61 The callbacks for all options are called whenever a set of arguments is parsed. | 73 The callbacks for all options are called whenever a set of arguments is parsed. |
62 If an option isn't provided in the args, its callback is passed the default | 74 If an option isn't provided in the args, its callback is passed the default |
63 value, or `null` if no default value is set. | 75 value, or `null` if no default value is set. |
64 | 76 |
65 ## Parsing arguments | 77 ## Parsing arguments |
66 | 78 |
67 Once you have an [ArgParser][] set up with some options and flags, you use it by | 79 Once you have an [ArgParser][] set up with some options and flags, you use it by |
68 calling [ArgParser.parse()][parse] with a set of arguments: | 80 calling [ArgParser.parse()][parse] with a set of arguments: |
69 | 81 |
70 var results = parser.parse(['some', 'command', 'line', 'args']); | 82 ```dart |
| 83 var results = parser.parse(['some', 'command', 'line', 'args']); |
| 84 ``` |
71 | 85 |
72 These arguments usually come from the arguments to `main()`. For example: | 86 These arguments usually come from the arguments to `main()`. For example: |
73 | 87 |
74 main(List<String> args) { | 88 main(List<String> args) { |
75 // ... | 89 // ... |
76 var results = parser.parse(args); | 90 var results = parser.parse(args); |
77 } | 91 } |
78 | 92 |
79 However, you can pass in any list of strings. The `parse()` method returns an | 93 However, you can pass in any list of strings. The `parse()` method returns an |
80 instance of [ArgResults][], a map-like object that contains the values of the | 94 instance of [ArgResults][], a map-like object that contains the values of the |
81 parsed options. | 95 parsed options. |
82 | 96 |
83 var parser = new ArgParser(); | 97 ```dart |
84 parser.addOption('mode'); | 98 var parser = new ArgParser(); |
85 parser.addFlag('verbose', defaultsTo: true); | 99 parser.addOption('mode'); |
86 var results = parser.parse(['--mode', 'debug', 'something', 'else']); | 100 parser.addFlag('verbose', defaultsTo: true); |
| 101 var results = parser.parse(['--mode', 'debug', 'something', 'else']); |
87 | 102 |
88 print(results['mode']); // debug | 103 print(results['mode']); // debug |
89 print(results['verbose']); // true | 104 print(results['verbose']); // true |
| 105 ``` |
90 | 106 |
91 By default, the `parse()` method stops as soon as it reaches `--` by itself or | 107 By default, the `parse()` method stops as soon as it reaches `--` by itself or |
92 anything that the parser doesn't recognize as an option, flag, or option value. | 108 anything that the parser doesn't recognize as an option, flag, or option value. |
93 If arguments still remain, they go into [ArgResults.rest][rest]. | 109 If arguments still remain, they go into [ArgResults.rest][rest]. |
94 | 110 |
95 print(results.rest); // ['something', 'else'] | 111 ```dart |
| 112 print(results.rest); // ['something', 'else'] |
| 113 ``` |
96 | 114 |
97 To continue to parse options found after non-option arguments, pass | 115 To continue to parse options found after non-option arguments, pass |
98 `allowTrailingOptions: true` when creating the [ArgParser][]. | 116 `allowTrailingOptions: true` when creating the [ArgParser][]. |
99 | 117 |
100 ## Specifying options | 118 ## Specifying options |
101 | 119 |
102 To actually pass in options and flags on the command line, use GNU or POSIX | 120 To actually pass in options and flags on the command line, use GNU or POSIX |
103 style. Consider this option: | 121 style. Consider this option: |
104 | 122 |
105 parser.addOption('name', abbr: 'n'); | 123 ```dart |
| 124 parser.addOption('name', abbr: 'n'); |
| 125 ``` |
106 | 126 |
107 You can specify its value on the command line using any of the following: | 127 You can specify its value on the command line using any of the following: |
108 | 128 |
109 --name=somevalue | 129 ``` |
110 --name somevalue | 130 --name=somevalue |
111 -nsomevalue | 131 --name somevalue |
112 -n somevalue | 132 -nsomevalue |
| 133 -n somevalue |
| 134 ``` |
113 | 135 |
114 Consider this flag: | 136 Consider this flag: |
115 | 137 |
116 parser.addFlag('name', abbr: 'n'); | 138 ```dart |
| 139 parser.addFlag('name', abbr: 'n'); |
| 140 ``` |
117 | 141 |
118 You can set it to true using one of the following: | 142 You can set it to true using one of the following: |
119 | 143 |
120 --name | 144 ``` |
121 -n | 145 --name |
| 146 -n |
| 147 ``` |
122 | 148 |
123 You can set it to false using the following: | 149 You can set it to false using the following: |
124 | 150 |
125 --no-name | 151 ``` |
| 152 --no-name |
| 153 ``` |
126 | 154 |
127 Multiple flag abbreviations can be collapsed into a single argument. Say you | 155 Multiple flag abbreviations can be collapsed into a single argument. Say you |
128 define these flags: | 156 define these flags: |
129 | 157 |
130 parser.addFlag('verbose', abbr: 'v') | 158 ```dart |
131 ..addFlag('french', abbr: 'f') | 159 parser.addFlag('verbose', abbr: 'v') |
132 ..addFlag('iambic-pentameter', abbr: 'i'); | 160 ..addFlag('french', abbr: 'f') |
| 161 ..addFlag('iambic-pentameter', abbr: 'i'); |
| 162 ``` |
133 | 163 |
134 You can set all three flags at once: | 164 You can set all three flags at once: |
135 | 165 |
136 -vfi | 166 ``` |
| 167 -vfi |
| 168 ``` |
137 | 169 |
138 By default, an option has only a single value, with later option values | 170 By default, an option has only a single value, with later option values |
139 overriding earlier ones; for example: | 171 overriding earlier ones; for example: |
140 | 172 |
141 var parser = new ArgParser(); | 173 ```dart |
142 parser.addOption('mode'); | 174 var parser = new ArgParser(); |
143 var results = parser.parse(['--mode', 'on', '--mode', 'off']); | 175 parser.addOption('mode'); |
144 print(results['mode']); // prints 'off' | 176 var results = parser.parse(['--mode', 'on', '--mode', 'off']); |
| 177 print(results['mode']); // prints 'off' |
| 178 ``` |
145 | 179 |
146 If you need multiple values, set the `allowMultiple` parameter. In that case the | 180 If you need multiple values, set the `allowMultiple` parameter. In that case the |
147 option can occur multiple times, and the `parse()` method returns a list of | 181 option can occur multiple times, and the `parse()` method returns a list of |
148 values: | 182 values: |
149 | 183 |
150 var parser = new ArgParser(); | 184 ```dart |
151 parser.addOption('mode', allowMultiple: true); | 185 var parser = new ArgParser(); |
152 var results = parser.parse(['--mode', 'on', '--mode', 'off']); | 186 parser.addOption('mode', allowMultiple: true); |
153 print(results['mode']); // prints '[on, off]' | 187 var results = parser.parse(['--mode', 'on', '--mode', 'off']); |
| 188 print(results['mode']); // prints '[on, off]' |
| 189 ``` |
154 | 190 |
155 ## Defining commands ## | 191 ## Defining commands ## |
156 | 192 |
157 In addition to *options*, you can also define *commands*. A command is a named | 193 In addition to *options*, you can also define *commands*. A command is a named |
158 argument that has its own set of options. For example, consider this shell | 194 argument that has its own set of options. For example, consider this shell |
159 command: | 195 command: |
160 | 196 |
161 $ git commit -a | 197 ``` |
| 198 $ git commit -a |
| 199 ``` |
162 | 200 |
163 The executable is `git`, the command is `commit`, and the `-a` option is an | 201 The executable is `git`, the command is `commit`, and the `-a` option is an |
164 option passed to the command. You can add a command using the [addCommand][] | 202 option passed to the command. You can add a command using the [addCommand][] |
165 method: | 203 method: |
166 | 204 |
167 var parser = new ArgParser(); | 205 ```dart |
168 var command = parser.addCommand('commit'); | 206 var parser = new ArgParser(); |
| 207 var command = parser.addCommand('commit'); |
| 208 ``` |
169 | 209 |
170 It returns another [ArgParser][], which you can then use to define options | 210 It returns another [ArgParser][], which you can then use to define options |
171 specific to that command. If you already have an [ArgParser][] for the command's | 211 specific to that command. If you already have an [ArgParser][] for the command's |
172 options, you can pass it in: | 212 options, you can pass it in: |
173 | 213 |
174 var parser = new ArgParser(); | 214 ```dart |
175 var command = new ArgParser(); | 215 var parser = new ArgParser(); |
176 parser.addCommand('commit', command); | 216 var command = new ArgParser(); |
| 217 parser.addCommand('commit', command); |
| 218 ``` |
177 | 219 |
178 The [ArgParser][] for a command can then define options or flags: | 220 The [ArgParser][] for a command can then define options or flags: |
179 | 221 |
180 command.addFlag('all', abbr: 'a'); | 222 ```dart |
| 223 command.addFlag('all', abbr: 'a'); |
| 224 ``` |
181 | 225 |
182 You can add multiple commands to the same parser so that a user can select one | 226 You can add multiple commands to the same parser so that a user can select one |
183 from a range of possible commands. When parsing an argument list, you can then | 227 from a range of possible commands. When parsing an argument list, you can then |
184 determine which command was entered and what options were provided for it. | 228 determine which command was entered and what options were provided for it. |
185 | 229 |
186 var results = parser.parse(['commit', '-a']); | 230 ```dart |
187 print(results.command.name); // "commit" | 231 var results = parser.parse(['commit', '-a']); |
188 print(results.command['all']); // true | 232 print(results.command.name); // "commit" |
| 233 print(results.command['all']); // true |
| 234 ``` |
189 | 235 |
190 Options for a command must appear after the command in the argument list. For | 236 Options for a command must appear after the command in the argument list. For |
191 example, given the above parser, `"git -a commit"` is *not* valid. The parser | 237 example, given the above parser, `"git -a commit"` is *not* valid. The parser |
192 tries to find the right-most command that accepts an option. For example: | 238 tries to find the right-most command that accepts an option. For example: |
193 | 239 |
194 var parser = new ArgParser(); | 240 ```dart |
195 parser.addFlag('all', abbr: 'a'); | 241 var parser = new ArgParser(); |
196 var command = parser.addCommand('commit'); | 242 parser.addFlag('all', abbr: 'a'); |
197 command.addFlag('all', abbr: 'a'); | 243 var command = parser.addCommand('commit'); |
| 244 command.addFlag('all', abbr: 'a'); |
198 | 245 |
199 var results = parser.parse(['commit', '-a']); | 246 var results = parser.parse(['commit', '-a']); |
200 print(results.command['all']); // true | 247 print(results.command['all']); // true |
| 248 ``` |
201 | 249 |
202 Here, both the top-level parser and the `"commit"` command can accept a `"-a"` | 250 Here, both the top-level parser and the `"commit"` command can accept a `"-a"` |
203 (which is probably a bad command line interface, admittedly). In that case, when | 251 (which is probably a bad command line interface, admittedly). In that case, when |
204 `"-a"` appears after `"commit"`, it is applied to that command. If it appears to | 252 `"-a"` appears after `"commit"`, it is applied to that command. If it appears to |
205 the left of `"commit"`, it is given to the top-level parser. | 253 the left of `"commit"`, it is given to the top-level parser. |
206 | 254 |
207 ## Dispatching Commands | 255 ## Dispatching Commands |
208 | 256 |
209 If you're writing a command-based application, you can use the [CommandRunner][] | 257 If you're writing a command-based application, you can use the [CommandRunner][] |
210 and [Command][] classes to help structure it. [CommandRunner][] has built-in | 258 and [Command][] classes to help structure it. [CommandRunner][] has built-in |
211 support for dispatching to [Command][]s based on command-line arguments, as well | 259 support for dispatching to [Command][]s based on command-line arguments, as well |
212 as handling `--help` flags and invalid arguments. For example: | 260 as handling `--help` flags and invalid arguments. For example: |
213 | 261 |
214 var runner = new CommandRunner("git", "Distributed version control.") | 262 ```dart |
215 ..addCommand(new CommitCommand()) | 263 var runner = new CommandRunner("git", "Distributed version control.") |
216 ..addCommand(new StashCommand()) | 264 ..addCommand(new CommitCommand()) |
217 ..run(['commit', '-a']); // Calls [CommitCommand.run()] | 265 ..addCommand(new StashCommand()) |
| 266 ..run(['commit', '-a']); // Calls [CommitCommand.run()] |
| 267 ``` |
218 | 268 |
219 Custom commands are defined by extending the [Command][] class. For example: | 269 Custom commands are defined by extending the [Command][] class. For example: |
220 | 270 |
221 class CommitCommand extends Command { | 271 ```dart |
222 // The [name] and [description] properties must be defined by every | 272 class CommitCommand extends Command { |
223 // subclass. | 273 // The [name] and [description] properties must be defined by every |
224 final name = "commit"; | 274 // subclass. |
225 final description = "Record changes to the repository."; | 275 final name = "commit"; |
| 276 final description = "Record changes to the repository."; |
226 | 277 |
227 CommitCommand() { | 278 CommitCommand() { |
228 // [argParser] is automatically created by the parent class. | 279 // [argParser] is automatically created by the parent class. |
229 argParser.addFlag('all', abbr: 'a'); | 280 argParser.addFlag('all', abbr: 'a'); |
230 } | 281 } |
231 | 282 |
232 // [run] may also return a Future. | 283 // [run] may also return a Future. |
233 void run() { | 284 void run() { |
234 // [options] is set before [run()] is called and contains the options | 285 // [options] is set before [run()] is called and contains the options |
235 // passed to this command. | 286 // passed to this command. |
236 print(options['all']); | 287 print(options['all']); |
237 } | 288 } |
238 } | 289 } |
| 290 ``` |
239 | 291 |
240 Commands can also have subcommands, which are added with [addSubcommand][]. A | 292 Commands can also have subcommands, which are added with [addSubcommand][]. A |
241 command with subcommands can't run its own code, so [run][] doesn't need to be | 293 command with subcommands can't run its own code, so [run][] doesn't need to be |
242 implemented. For example: | 294 implemented. For example: |
243 | 295 |
244 class StashCommand extends Command { | 296 ```dart |
245 final String name = "stash"; | 297 class StashCommand extends Command { |
246 final String description = "Stash changes in the working directory."; | 298 final String name = "stash"; |
| 299 final String description = "Stash changes in the working directory."; |
247 | 300 |
248 StashCommand() { | 301 StashCommand() { |
249 addSubcommand(new StashSaveCommand()); | 302 addSubcommand(new StashSaveCommand()); |
250 addSubcommand(new StashListCommand()); | 303 addSubcommand(new StashListCommand()); |
251 } | 304 } |
252 } | 305 } |
| 306 ``` |
253 | 307 |
254 [CommandRunner][] automatically adds a `help` command that displays usage | 308 [CommandRunner][] automatically adds a `help` command that displays usage |
255 information for commands, as well as support for the `--help` flag for all | 309 information for commands, as well as support for the `--help` flag for all |
256 commands. If it encounters an error parsing the arguments or processing a | 310 commands. If it encounters an error parsing the arguments or processing a |
257 command, it throws a [UsageError][]; your `main()` method should catch these and | 311 command, it throws a [UsageError][]; your `main()` method should catch these and |
258 print them appropriately. For example: | 312 print them appropriately. For example: |
259 | 313 |
260 runner.run(arguments).catchError((error) { | 314 ```dart |
261 if (error is! UsageError) throw error; | 315 runner.run(arguments).catchError((error) { |
262 print(error); | 316 if (error is! UsageError) throw error; |
263 exit(64); // Exit code 64 indicates a usage error. | 317 print(error); |
264 }); | 318 exit(64); // Exit code 64 indicates a usage error. |
| 319 }); |
| 320 ``` |
265 | 321 |
266 ## Displaying usage | 322 ## Displaying usage |
267 | 323 |
268 You can automatically generate nice help text, suitable for use as the output of | 324 You can automatically generate nice help text, suitable for use as the output of |
269 `--help`. To display good usage information, you should provide some help text | 325 `--help`. To display good usage information, you should provide some help text |
270 when you create your options. | 326 when you create your options. |
271 | 327 |
272 To define help text for an entire option, use the `help:` parameter: | 328 To define help text for an entire option, use the `help:` parameter: |
273 | 329 |
274 parser.addOption('mode', help: 'The compiler configuration', | 330 ```dart |
275 allowed: ['debug', 'release']); | 331 parser.addOption('mode', help: 'The compiler configuration', |
276 parser.addFlag('verbose', help: 'Show additional diagnostic info'); | 332 allowed: ['debug', 'release']); |
| 333 parser.addFlag('verbose', help: 'Show additional diagnostic info'); |
| 334 ``` |
277 | 335 |
278 For non-flag options, you can also provide a help string for the parameter: | 336 For non-flag options, you can also provide a help string for the parameter: |
279 | 337 |
280 parser.addOption('out', help: 'The output path', valueHelp: 'path', | 338 ```dart |
281 allowed: ['debug', 'release']); | 339 parser.addOption('out', help: 'The output path', valueHelp: 'path', |
| 340 allowed: ['debug', 'release']); |
| 341 ``` |
282 | 342 |
283 For non-flag options, you can also provide detailed help for each expected value | 343 For non-flag options, you can also provide detailed help for each expected value |
284 by using the `allowedHelp:` parameter: | 344 by using the `allowedHelp:` parameter: |
285 | 345 |
286 parser.addOption('arch', help: 'The architecture to compile for', | 346 ```dart |
287 allowedHelp: { | 347 parser.addOption('arch', help: 'The architecture to compile for', |
288 'ia32': 'Intel x86', | 348 allowedHelp: { |
289 'arm': 'ARM Holding 32-bit chip' | 349 'ia32': 'Intel x86', |
290 }); | 350 'arm': 'ARM Holding 32-bit chip' |
| 351 }); |
| 352 ``` |
291 | 353 |
292 To display the help, use the [getUsage()][getUsage] method: | 354 To display the help, use the [getUsage()][getUsage] method: |
293 | 355 |
294 print(parser.getUsage()); | 356 ```dart |
| 357 print(parser.getUsage()); |
| 358 ``` |
295 | 359 |
296 The resulting string looks something like this: | 360 The resulting string looks something like this: |
297 | 361 |
298 --mode The compiler configuration | 362 ``` |
299 [debug, release] | 363 --mode The compiler configuration |
| 364 [debug, release] |
300 | 365 |
301 --out=<path> The output path | 366 --out=<path> The output path |
302 --[no-]verbose Show additional diagnostic info | 367 --[no-]verbose Show additional diagnostic info |
303 --arch The architecture to compile for | 368 --arch The architecture to compile for |
304 [arm] ARM Holding 32-bit chip | 369 [arm] ARM Holding 32-bit chip |
305 [ia32] Intel x86 | 370 [ia32] Intel x86 |
| 371 ``` |
306 | 372 |
307 [posix]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html
#tag_12_02 | 373 [posix]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html
#tag_12_02 |
308 [gnu]: http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfa
ces | 374 [gnu]: http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfa
ces |
309 [ArgParser]: http://www.dartdocs.org/documentation/args/latest/index.html#args/a
rgs.ArgParser | 375 [ArgParser]: http://www.dartdocs.org/documentation/args/latest/index.html#args/a
rgs.ArgParser |
310 [ArgResults]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.ArgResults | 376 [ArgResults]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.ArgResults |
311 [CommandRunner]: http://www.dartdocs.org/documentation/args/latest/index.html#ar
gs/args.CommandRunner | 377 [CommandRunner]: http://www.dartdocs.org/documentation/args/latest/index.html#ar
gs/args.CommandRunner |
312 [Command]: http://www.dartdocs.org/documentation/args/latest/index.html#args/arg
s.Command | 378 [Command]: http://www.dartdocs.org/documentation/args/latest/index.html#args/arg
s.Command |
313 [UsageError]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.UsageError | 379 [UsageError]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.UsageError |
314 [addOption]: http://www.dartdocs.org/documentation/args/latest/index.html#args/a
rgs.ArgParser@id_addOption | 380 [addOption]: http://www.dartdocs.org/documentation/args/latest/index.html#args/a
rgs.ArgParser@id_addOption |
315 [addFlag]: http://www.dartdocs.org/documentation/args/latest/index.html#args/arg
s.ArgParser@id_addFlag | 381 [addFlag]: http://www.dartdocs.org/documentation/args/latest/index.html#args/arg
s.ArgParser@id_addFlag |
316 [parse]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.
ArgParser@id_parse | 382 [parse]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.
ArgParser@id_parse |
317 [rest]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.A
rgResults@id_rest | 383 [rest]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.A
rgResults@id_rest |
318 [addCommand]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.ArgParser@id_addCommand | 384 [addCommand]: http://www.dartdocs.org/documentation/args/latest/index.html#args/
args.ArgParser@id_addCommand |
319 [getUsage]: http://www.dartdocs.org/documentation/args/latest/index.html#args/ar
gs.ArgParser@id_getUsage | 385 [getUsage]: http://www.dartdocs.org/documentation/args/latest/index.html#args/ar
gs.ArgParser@id_getUsage |
320 [addSubcommand]: http://www.dartdocs.org/documentation/args/latest/index.html#ar
gs/args.Command@id_addSubcommand | 386 [addSubcommand]: http://www.dartdocs.org/documentation/args/latest/index.html#ar
gs/args.Command@id_addSubcommand |
321 [run]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.Co
mmand@id_run | 387 [run]: http://www.dartdocs.org/documentation/args/latest/index.html#args/args.Co
mmand@id_run |
OLD | NEW |