@@ -21,7 +21,7 @@ ArgResults newArgResults(
2121}
2222
2323/// The results of parsing a series of command line arguments using
24- /// [ArgParser.parse() ] .
24+ /// [ArgParser.parse] .
2525///
2626/// Includes the parsed options and any remaining unparsed command line
2727/// arguments.
@@ -57,9 +57,13 @@ class ArgResults {
5757 : rest = UnmodifiableListView (rest),
5858 arguments = UnmodifiableListView (arguments);
5959
60- /// Returns the parsed ore default command-line option named [name] .
60+ /// Returns the parsed or default command-line option named [name] .
6161 ///
6262 /// [name] must be a valid option name in the parser.
63+ ///
64+ /// > [!Note]
65+ /// > Callers should prefer using the more strongly typed methods - [flag] for
66+ /// > flags, [option] for options, and [multiOption] for multi-options.
6367 dynamic operator [](String name) {
6468 if (! _parser.options.containsKey (name)) {
6569 throw ArgumentError ('Could not find an option named "$name ".' );
@@ -73,6 +77,48 @@ class ArgResults {
7377 return option.valueOrDefault (_parsed[name]);
7478 }
7579
80+ /// Returns the parsed or default command-line flag named [name] .
81+ ///
82+ /// [name] must be a valid flag name in the parser.
83+ bool flag (String name) {
84+ var option = _parser.options[name];
85+ if (option == null ) {
86+ throw ArgumentError ('Could not find an option named "$name ".' );
87+ }
88+ if (! option.isFlag) {
89+ throw ArgumentError ('"$name " is not a flag.' );
90+ }
91+ return option.valueOrDefault (_parsed[name]) as bool ;
92+ }
93+
94+ /// Returns the parsed or default command-line option named [name] .
95+ ///
96+ /// [name] must be a valid option name in the parser.
97+ String ? option (String name) {
98+ var option = _parser.options[name];
99+ if (option == null ) {
100+ throw ArgumentError ('Could not find an option named "$name ".' );
101+ }
102+ if (! option.isSingle) {
103+ throw ArgumentError ('"$name " is a multi-option.' );
104+ }
105+ return option.valueOrDefault (_parsed[name]) as String ? ;
106+ }
107+
108+ /// Returns the list of parsed (or default) command-line options for [name] .
109+ ///
110+ /// [name] must be a valid option name in the parser.
111+ List <String > multiOption (String name) {
112+ var option = _parser.options[name];
113+ if (option == null ) {
114+ throw ArgumentError ('Could not find an option named "$name ".' );
115+ }
116+ if (! option.isMultiple) {
117+ throw ArgumentError ('"$name " is not a multi-option.' );
118+ }
119+ return option.valueOrDefault (_parsed[name]) as List <String >;
120+ }
121+
76122 /// The names of the available options.
77123 ///
78124 /// Includes the options whose values were parsed or that have defaults.
0 commit comments