| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 library mojom.command; | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 import 'dart:io'; | |
| 9 | |
| 10 import 'package:args/args.dart'; | |
| 11 import 'package:args/command_runner.dart'; | |
| 12 import 'package:logging/logging.dart' as logging; | |
| 13 import 'package:mojom/src/utils.dart'; | |
| 14 import 'package:path/path.dart' as path; | |
| 15 | |
| 16 abstract class MojomCommand extends Command { | |
| 17 bool _verbose; | |
| 18 bool _dryRun; | |
| 19 bool _errorOnDuplicate; | |
| 20 Directory _mojomRoot; | |
| 21 Directory _mojoSdk; | |
| 22 List<String> _skips; | |
| 23 | |
| 24 bool get verbose => _verbose; | |
| 25 bool get dryRun => _dryRun; | |
| 26 bool get errorOnDuplicate => _errorOnDuplicate; | |
| 27 Directory get mojomRoot => _mojomRoot; | |
| 28 Directory get mojoSdk => _mojoSdk; | |
| 29 List<String> get skips => _skips; | |
| 30 | |
| 31 static setupLogging() { | |
| 32 if (log == null) { | |
| 33 logging.hierarchicalLoggingEnabled = true; | |
| 34 log = new logging.Logger('mojom'); | |
| 35 log.onRecord.listen((logging.LogRecord rec) { | |
| 36 print('${rec.level.name}: ${rec.message}'); | |
| 37 }); | |
| 38 } | |
| 39 } | |
| 40 | |
| 41 validateArguments() async { | |
| 42 assert(log != null); | |
| 43 if (globalResults['verbose']) { | |
| 44 log.level = logging.Level.INFO; | |
| 45 } else { | |
| 46 log.level = logging.Level.WARNING; | |
| 47 } | |
| 48 _dryRun = globalResults['dry-run']; | |
| 49 _errorOnDuplicate = !globalResults['ignore-duplicates']; | |
| 50 | |
| 51 final mojoSdkPath = globalResults['mojo-sdk']; | |
| 52 if (mojoSdkPath == null) { | |
| 53 throw new CommandLineError( | |
| 54 "The Mojo SDK directory must be specified with the --mojo-sdk " | |
| 55 "flag or the MOJO_SDK environment variable."); | |
| 56 } | |
| 57 _mojomRoot = new Directory(makeAbsolute(globalResults['mojom-root'])); | |
| 58 _mojoSdk = new Directory(makeAbsolute(mojoSdkPath)); | |
| 59 log.info("Mojo SDK = $_mojoSdk"); | |
| 60 if (!(await _mojoSdk.exists())) { | |
| 61 throw new CommandLineError( | |
| 62 "The specified Mojo SDK directory $_mojoSdk must exist."); | |
| 63 } | |
| 64 if (globalResults['skip'] != null) { | |
| 65 _skips = globalResults['skip'].map(makeAbsolute).toList(); | |
| 66 } | |
| 67 } | |
| 68 | |
| 69 String toString() { | |
| 70 String dart = makeRelative(Platform.executable); | |
| 71 String script = makeRelative(path.fromUri(Platform.script)); | |
| 72 String globals = globalResults.arguments.join(" "); | |
| 73 return "$dart $script $globals"; | |
| 74 } | |
| 75 } | |
| OLD | NEW |