import 'dart:io'; import 'package:mason_logger/mason_logger.dart'; import 'package:wyatt_continuous_deployment/src/bootstrap.dart'; import 'package:wyatt_continuous_deployment/src/wyatt_continuous_deployment_command_runner.dart'; Future main(List args) async { await bootstrap(Logger()); await flushThenExit(await WyattContinuousDeploymentCommandRunner().run(args)); } /// Flushes the stdout and stderr streams, then exits the program with the given /// status code. /// /// This returns a Future that will never complete, since the program will have /// exited already. This is useful to prevent Future chains from proceeding /// after you've decided to exit. Future flushThenExit(int status) => Future.wait([stdout.close(), stderr.close()]) .then((_) => exit(status));