0 purchases
build cli
Parse command line arguments directly into an annotation class using the
Dart Build System.
Example #
Annotate a class with @CliOptions() from package:build_cli_annotations.
import 'package:build_cli_annotations/build_cli_annotations.dart';
part 'example.g.dart';
@CliOptions()
class Options {
@CliOption(abbr: 'n', help: 'Required. The name to use in the greeting.')
final String name;
final bool nameWasParsed;
late bool yell;
@CliOption(defaultsTo: Language.en, abbr: 'l')
late Language displayLanguage;
@CliOption(negatable: false, help: 'Prints usage information.')
late bool help;
Options(this.name, {this.nameWasParsed = false});
}
enum Language { en, es }
copied to clipboard
Configure and run the Dart Build System and a set of helpers is created
to parse the corresponding command line arguments and populate your class.
void main(List<String> args) {
var options = parseOptions(args);
if (!options.nameWasParsed) {
throw new ArgumentError('You must set `name`.');
}
print(options.name);
}
copied to clipboard
Setup #
Add three packages to pubspec.yaml:
dependencies:
build_cli_annotations: ^1.0.0
dev_dependencies:
build_cli: ^1.0.0
build_runner: ^1.0.0
copied to clipboard
build_cli_annotations is a separate package containing the annotations you
add to classes and members to tell build_cli what to do.
If the code you're annotating is in a published directory – lib, bin –
put it in the dependencies section.
build_cli contains the logic to generate the code.
It should almost always be put in dev_dependencies.
build_runner contains the logic to run a build and generate code.
It should almost always be put in dev_dependencies.
Details #
Uses package:args under the covers.
More examples: #
The package contains a fully documented
end-to-end example.
The test directory
contains implementations that exercise most of the features of this package.
Also look at the
package:peanut source code.
The options files in the
src directory
as the interesting files.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.