| Index: bin/devc.dart
|
| diff --git a/bin/devc.dart b/bin/devc.dart
|
| index 9d2edfa801ecfbab736ec6221afdba848db27f6b..ac1919afc00e3093b17ce999448f7df830473bba 100755
|
| --- a/bin/devc.dart
|
| +++ b/bin/devc.dart
|
| @@ -8,70 +8,11 @@ library ddc.bin.checker;
|
|
|
| import 'dart:io';
|
|
|
| -import 'package:args/args.dart';
|
| -import 'package:cli_util/cli_util.dart' show getSdkDir;
|
| -import 'package:logging/logging.dart' show Logger, Level;
|
| -
|
| -import 'package:dev_compiler/config.dart';
|
| import 'package:dev_compiler/devc.dart';
|
| import 'package:dev_compiler/src/checker/dart_sdk.dart' show mockSdkSources;
|
| import 'package:dev_compiler/src/checker/resolver.dart' show TypeResolver;
|
| import 'package:dev_compiler/src/options.dart';
|
|
|
| -final ArgParser argParser = new ArgParser()
|
| - ..addFlag(
|
| - 'covariant-generics', help: 'Use covariant generics', defaultsTo: true)
|
| - ..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null)
|
| - ..addFlag('dart-gen',
|
| - abbr: 'd', help: 'Generate dart output', defaultsTo: false)
|
| - ..addFlag('dart-gen-fmt',
|
| - help: 'Generate readable dart output', defaultsTo: true)
|
| - ..addFlag('dump-info',
|
| - abbr: 'i', help: 'Dump summary information', defaultsTo: false)
|
| - ..addOption('dump-info-file',
|
| - abbr: 'f',
|
| - help: 'Dump info json file (requires dump-info)',
|
| - defaultsTo: null)
|
| - ..addOption('dump-src-to', help: 'Dump dart src code', defaultsTo: null)
|
| - ..addFlag('force-compile',
|
| - help: 'Compile code with static errors', defaultsTo: false)
|
| - ..addFlag('help', abbr: 'h', help: 'Display this message')
|
| - ..addFlag('ignore-types',
|
| - help: 'Ignore types during codegen', defaultsTo: false)
|
| - ..addOption('log', abbr: 'l', help: 'Logging level', defaultsTo: 'severe')
|
| - ..addFlag('mock-sdk',
|
| - abbr: 'm', help: 'Use a mock Dart SDK', defaultsTo: false)
|
| - ..addOption('out', abbr: 'o', help: 'Output directory', defaultsTo: null)
|
| - ..addFlag('relaxed-casts',
|
| - help: 'Cast between Dart assignable types', defaultsTo: true)
|
| - ..addOption('package-root',
|
| - abbr: 'p',
|
| - help: 'Package root to resolve "package:" imports',
|
| - defaultsTo: 'packages/')
|
| - ..addFlag('use-multi-package',
|
| - help: 'Whether to use the multi-package resolver for "package:" imports',
|
| - defaultsTo: false)
|
| - ..addOption('nonnullable',
|
| - abbr: 'n',
|
| - help: 'Comma separated string of non-nullable types',
|
| - defaultsTo: null)
|
| - ..addOption('package-paths', help: 'if using the multi-package resolver, '
|
| - 'the list of directories where to look for packages.', defaultsTo: '')
|
| - ..addFlag('sdk-check',
|
| - abbr: 's', help: 'Typecheck sdk libs', defaultsTo: false)
|
| - ..addFlag('infer-from-overrides',
|
| - help: 'Infer unspecified types of fields and return types from '
|
| - 'definitions in supertypes', defaultsTo: true)
|
| - ..addFlag('infer-transitively',
|
| - help: 'Infer consts/fields from definitions in other libraries',
|
| - defaultsTo: false)
|
| - ..addFlag('infer-only-finals',
|
| - help: 'Do not infer non-const or non-final fields', defaultsTo: false)
|
| - ..addFlag('infer-eagerly',
|
| - help: 'experimental: allows a non-stable order of transitive inference on'
|
| - ' consts and fields. This is used to test for possible inference with a '
|
| - 'proper implementation in the future.', defaultsTo: false);
|
| -
|
| void _showUsageAndExit() {
|
| print('usage: dartdevc [<options>] <file.dart>\n');
|
| print('<file.dart> is a single Dart file to process.\n');
|
| @@ -80,60 +21,26 @@ void _showUsageAndExit() {
|
| exit(1);
|
| }
|
|
|
| -void main(List<String> argv) {
|
| - ArgResults args = argParser.parse(argv);
|
| - if (args['help']) _showUsageAndExit();
|
| +void main(List<String> args) {
|
| + var options = parseOptions(args);
|
| + if (options.help) _showUsageAndExit();
|
|
|
| - bool shouldMockSdk = args['mock-sdk'];
|
| - String dartSdkPath;
|
| - if (!shouldMockSdk) {
|
| - var sdkDir = getSdkDir(argv);
|
| - if (sdkDir == null) {
|
| - print('Could not automatically find dart sdk path.');
|
| - print('Please pass in explicitly: --dart-sdk <path>');
|
| - exit(1);
|
| - }
|
| - dartSdkPath = sdkDir.path;
|
| + if (!options.useMockSdk && options.dartSdkPath == null) {
|
| + print('Could not automatically find dart sdk path.');
|
| + print('Please pass in explicitly: --dart-sdk <path>');
|
| + exit(1);
|
| }
|
|
|
| - if (args.rest.length == 0) {
|
| + if (options.entryPointFile == null) {
|
| print('Expected filename.');
|
| _showUsageAndExit();
|
| }
|
|
|
| - String levelName = args['log'].toUpperCase();
|
| - Level level = Level.LEVELS.firstWhere((Level l) => l.name == levelName,
|
| - orElse: () => Level.SEVERE);
|
| - var useColors = stdioType(stdout) == StdioType.TERMINAL;
|
| - if (!args['dump-info']) setupLogger(level, print);
|
| -
|
| - var options = new CompilerOptions(
|
| - checkSdk: args['sdk-check'],
|
| - dumpInfo: args['dump-info'],
|
| - dumpInfoFile: args['dump-info-file'],
|
| - dumpSrcDir: args['dump-src-to'],
|
| - forceCompile: args['force-compile'],
|
| - formatOutput: args['dart-gen-fmt'],
|
| - ignoreTypes: args['ignore-types'],
|
| - outputDart: args['dart-gen'],
|
| - outputDir: args['out'],
|
| - covariantGenerics: args['covariant-generics'],
|
| - relaxedCasts: args['relaxed-casts'],
|
| - useColors: useColors,
|
| - useMultiPackage: args['use-multi-package'],
|
| - packageRoot: args['package-root'],
|
| - packagePaths: args['package-paths'].split(','),
|
| - inferFromOverrides: args['infer-from-overrides'],
|
| - inferStaticsFromIdentifiers: args['infer-transitively'],
|
| - inferInNonStableOrder: args['infer-eagerly'],
|
| - onlyInferConstsAndFinalFields: args['infer-only-finals'],
|
| - nonnullableTypes: optionsToList(args['nonnullable'],
|
| - defaultValue: TypeOptions.NONNULLABLE_TYPES));
|
| + if (!options.dumpInfo) setupLogger(options.logLevel, print);
|
|
|
| - var typeResolver = shouldMockSdk
|
| + var typeResolver = options.useMockSdk
|
| ? new TypeResolver.fromMock(mockSdkSources, options)
|
| - : new TypeResolver.fromDir(dartSdkPath, options);
|
| - var filename = args.rest.first;
|
| - var result = compile(filename, typeResolver, options);
|
| + : new TypeResolver.fromDir(options.dartSdkPath, options);
|
| + var result = compile(options.entryPointFile, typeResolver, options);
|
| exit(result.failure ? 1 : 0);
|
| }
|
|
|