import 'package:args/args.dart'; const String version = '0.0.1'; ArgParser buildParser() { return ArgParser() ..addFlag( 'help', abbr: 'h', negatable: false, help: 'Print this usage information.', ) ..addFlag( 'verbose', abbr: 'v', negatable: false, help: 'Show additional command output.', ) ..addFlag( 'version', negatable: false, help: 'Print the tool version.', ); } void printUsage(ArgParser argParser) { print('Usage: dart dart.dart [arguments]'); print(argParser.usage); } void main(List arguments) { final ArgParser argParser = buildParser(); try { final ArgResults results = argParser.parse(arguments); bool verbose = false; // Process the parsed arguments. if (results.wasParsed('help')) { printUsage(argParser); return; } if (results.wasParsed('version')) { print('dart version: $version'); return; } if (results.wasParsed('verbose')) { verbose = true; } // Act on the arguments provided. print('Positional arguments: ${results.rest}'); if (verbose) { print('[VERBOSE] All arguments: ${results.arguments}'); } } on FormatException catch (e) { // Print usage information if an invalid argument was provided. print(e.message); print(''); printUsage(argParser); } }