basicCmdAppHelper<T extends ValidArgsChecker> function

Future<void> basicCmdAppHelper<T extends ValidArgsChecker>({
  1. required String appTitle,
  2. required List<String> arguments,
  3. required ArgParser parser,
  4. required T onResults(
    1. ArgParser,
    2. ArgResults
    ),
  5. required Future<void> action(
    1. ArgParser,
    2. ArgResults,
    3. T
    ),
})

A helper for creating a basic command-line app.

Implementation

Future<void> basicCmdAppHelper<T extends ValidArgsChecker>({
  required String appTitle,
  required List<String> arguments,
  required ArgParser parser,
  required T Function(ArgParser, ArgResults) onResults,
  required Future<void> Function(ArgParser, ArgResults, T) action,
}) async {
  try {
    late ArgResults results;
    try {
      results = parser.parse(arguments);
    } catch (e) {
      Here().debugLogError('Failed to parse arguments $e');
      return;
    }
    if (results['help']) {
      printUsage(appTitle, parser);
      return;
    }
    final args = onResults(parser, results);
    if (!args.isValid) {
      Here().debugLogError('You must provide all required options.');
      printUsage(appTitle, parser);
      exit(1);
    }
    await action(parser, results, args);
  } catch (e) {
    Here().debugLogError(e);
  }
}