main function
Implementation
void main(List<String> args) async {
final scope = RootScope();
final terminal = Terminal(stdout: stderr);
scope.add(Terminal.provider, terminal);
final index = args.indexOf('--');
final havenArgs = index >= 0 ? args.take(index) : args;
final isJson = havenArgs.contains('--json');
final context = HavenCommandContext();
final runner = HavenCommandRunner(
'haven',
'A powerful tool for superintend Flutter versions',
scope: scope,
context: context,
isJson: isJson,
);
final log = _setupLogger(isJson, terminal, runner);
scope.add(HVLogger.provider, log);
_defineArguments(runner, context, terminal, log);
registerHavenCommands(runner);
try {
final result = await runner.run(args);
if (result == null) {
await runner.printUsage();
} else {
await runner.writeResultAndExit(result);
}
} on CommandError catch (exception, stackTrace) {
log.v('$stackTrace');
await runner.writeResultAndExit(exception.result);
} on UsageException catch (exception) {
await runner.writeResultAndExit(
CommandHelpResult(
didRequestHelp: runner.didRequestHelp,
help: exception.message,
usage: exception.usage,
),
);
} catch (exception, stackTrace) {
await runner.writeResultAndExit(
CommandErrorResult(exception, stackTrace, log.level?.index ?? 0),
);
}
}