| Index: pkg/polymer/lib/src/compiler_options.dart
|
| diff --git a/pkg/polymer/lib/src/compiler_options.dart b/pkg/polymer/lib/src/compiler_options.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4c1d317b14af1919932504d4b2ec6b66dad46827
|
| --- /dev/null
|
| +++ b/pkg/polymer/lib/src/compiler_options.dart
|
| @@ -0,0 +1,148 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +library polymer.src.compiler_options;
|
| +
|
| +import 'package:args/args.dart';
|
| +
|
| +class CompilerOptions {
|
| + /** Report warnings as errors. */
|
| + final bool warningsAsErrors;
|
| +
|
| + /** True to show informational messages. The `--verbose` flag. */
|
| + final bool verbose;
|
| +
|
| + /** Remove any generated files. */
|
| + final bool clean;
|
| +
|
| + /** Whether to use colors to print messages on the terminal. */
|
| + final bool useColors;
|
| +
|
| + /** Force mangling any generated name (even when --out is provided). */
|
| + final bool forceMangle;
|
| +
|
| + /** Generate component's dart code, but not the main entry point file. */
|
| + final bool componentsOnly;
|
| +
|
| + /** File to process by the compiler. */
|
| + String inputFile;
|
| +
|
| + /** Directory where all sources are found. */
|
| + final String baseDir;
|
| +
|
| + /** Directory where all output will be generated. */
|
| + final String outputDir;
|
| +
|
| + /** Directory where to look for 'package:' imports. */
|
| + final String packageRoot;
|
| +
|
| + /**
|
| + * Adjust resource URLs in the output HTML to point back to the original
|
| + * location in the file system. Commonly this is enabled during development,
|
| + * but disabled for deployment.
|
| + */
|
| + final bool rewriteUrls;
|
| +
|
| + /**
|
| + * Whether to print error messages using the json format understood by the
|
| + * Dart editor.
|
| + */
|
| + final bool jsonFormat;
|
| +
|
| + /** Emulate scoped styles using a CSS polyfill. */
|
| + final bool emulateScopedCss;
|
| +
|
| + /** Use CSS file for CSS Reset. */
|
| + final String resetCssFile;
|
| +
|
| + /** Whether to analyze the input for warnings without generating any code. */
|
| + final bool analysisOnly;
|
| +
|
| + // We could make this faster, if it ever matters.
|
| + factory CompilerOptions() => parse(['']);
|
| +
|
| + CompilerOptions.fromArgs(ArgResults args)
|
| + : warningsAsErrors = args['warnings_as_errors'],
|
| + verbose = args['verbose'],
|
| + clean = args['clean'],
|
| + useColors = args['colors'],
|
| + baseDir = args['basedir'],
|
| + outputDir = args['out'],
|
| + packageRoot = args['package-root'],
|
| + rewriteUrls = args['rewrite-urls'],
|
| + forceMangle = args['unique_output_filenames'],
|
| + jsonFormat = args['json_format'],
|
| + componentsOnly = args['components_only'],
|
| + emulateScopedCss = args['scoped-css'],
|
| + resetCssFile = args['css-reset'],
|
| + analysisOnly = !args['deploy'],
|
| + inputFile = args.rest.length > 0 ? args.rest[0] : null;
|
| +
|
| + /**
|
| + * Returns the compiler options parsed from [arguments]. Set [checkUsage] to
|
| + * false to suppress checking of correct usage or printing help messages.
|
| + */
|
| + // TODO(sigmund): convert all flags to use dashes instead of underscores
|
| + static CompilerOptions parse(List<String> arguments,
|
| + {bool checkUsage: true}) {
|
| + var parser = new ArgParser()
|
| + ..addFlag('verbose', abbr: 'v')
|
| + ..addFlag('clean', help: 'Remove all generated files',
|
| + defaultsTo: false, negatable: false)
|
| + ..addFlag('warnings_as_errors', abbr: 'e',
|
| + help: 'Warnings handled as errors',
|
| + defaultsTo: false, negatable: false)
|
| + ..addFlag('colors', help: 'Display errors/warnings in colored text',
|
| + defaultsTo: true)
|
| + ..addFlag('rewrite-urls',
|
| + help: 'Adjust every resource url to point to the original location in'
|
| + ' the filesystem.\nThis on by default during development and can be'
|
| + ' disabled to make the generated code easier to deploy.',
|
| + defaultsTo: true)
|
| + ..addFlag('unique_output_filenames', abbr: 'u',
|
| + help: 'Use unique names for all generated files, so they will not '
|
| + 'have the\nsame name as your input files, even if they are in a'
|
| + ' different directory',
|
| + defaultsTo: false, negatable: false)
|
| + ..addFlag('json_format',
|
| + help: 'Print error messsages in a json format easy to parse by tools,'
|
| + ' such as the Dart editor',
|
| + defaultsTo: false, negatable: false)
|
| + ..addFlag('components_only',
|
| + help: 'Generate only the code for component classes, do not generate '
|
| + 'HTML files or the main bootstrap code.',
|
| + defaultsTo: false, negatable: false)
|
| + ..addFlag('scoped-css', help: 'Emulate scoped styles with CSS polyfill',
|
| + defaultsTo: false)
|
| + ..addOption('css-reset', abbr: 'r', help: 'CSS file used to reset CSS')
|
| + ..addFlag('deploy', help: 'Emit code used for deploying a polymer app,'
|
| + ' if false just show warnings and errors (default)',
|
| + defaultsTo: false, negatable: false)
|
| + ..addOption('out', abbr: 'o', help: 'Directory where to generate files'
|
| + ' (defaults to the same directory as the source file)')
|
| + ..addOption('basedir', help: 'Base directory where to find all source '
|
| + 'files (defaults to the source file\'s directory)')
|
| + ..addOption('package-root', help: 'Where to find "package:" imports'
|
| + '(defaults to the "packages/" subdirectory next to the source file)')
|
| + ..addFlag('help', abbr: 'h', help: 'Displays this help message',
|
| + defaultsTo: false, negatable: false);
|
| + try {
|
| + var results = parser.parse(arguments);
|
| + if (checkUsage && (results['help'] || results.rest.length == 0)) {
|
| + showUsage(parser);
|
| + return null;
|
| + }
|
| + return new CompilerOptions.fromArgs(results);
|
| + } on FormatException catch (e) {
|
| + print(e.message);
|
| + showUsage(parser);
|
| + return null;
|
| + }
|
| + }
|
| +
|
| + static showUsage(parser) {
|
| + print('Usage: dwc [options...] input.html');
|
| + print(parser.getUsage());
|
| + }
|
| +}
|
|
|