| // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart = 2.9 |
| |
| import 'dart:async'; |
| import 'dart:io'; |
| import 'dart:isolate'; |
| |
| import 'package:args/command_runner.dart'; |
| import 'package:io/ansi.dart'; |
| import 'package:io/io.dart'; |
| import 'package:webdev/src/command/configuration.dart'; |
| import 'package:webdev/src/webdev_command_runner.dart'; |
| |
| Future main(List<String> args) async { |
| try { |
| exitCode = await run(args); |
| } on UsageException catch (e) { |
| print(red.wrap(e.message)); |
| print(' '); |
| print(e.usage); |
| exitCode = ExitCode.usage.code; |
| } on FileSystemException catch (e) { |
| print(red.wrap('$_boldApp could not run in the current directory.')); |
| print(e.message); |
| if (e.path != null) { |
| print(' ${e.path}'); |
| } |
| exitCode = ExitCode.config.code; |
| } on PackageException catch (e) { |
| var withUnsupportedArg = |
| e.unsupportedArgument != null ? ' with --${e.unsupportedArgument}' : ''; |
| print(red |
| .wrap('$_boldApp could not run$withUnsupportedArg for this project.')); |
| for (var detail in e.details) { |
| print(yellow.wrap(detail.error)); |
| if (detail.description != null) { |
| print(detail.description); |
| } |
| } |
| |
| exitCode = ExitCode.config.code; |
| } on IsolateSpawnException catch (e) { |
| print(red.wrap('$_boldApp failed with an unexpected exception.')); |
| print(e.message); |
| exitCode = ExitCode.software.code; |
| } on InvalidConfiguration catch (e) { |
| print(red.wrap('$_boldApp $e')); |
| exitCode = ExitCode.config.code; |
| } |
| } |
| |
| String get _boldApp => styleBold.wrap(appName); |