blob: 95e8a2faba8cf06b4e3ea58740418260461fd124 [file] [log] [blame]
// 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 csslib.src.options;
import 'package:args/args.dart';
class PreprocessorOptions {
/** Generate polyfill code (e.g., var, etc.) */
final bool polyfill;
/** Report warnings as errors. */
final bool warningsAsErrors;
/** Throw an exception on warnings (not used by command line tool). */
final bool throwOnWarnings;
/** Throw an exception on errors (not used by command line tool). */
final bool throwOnErrors;
/** True to show informational messages. The `--verbose` flag. */
final bool verbose;
/** True to show warning messages for bad CSS. The '--checked' flag. */
final bool checked;
// TODO(terry): Add mixin support and nested rules.
/**
* Subset of Less commands enabled; disable with '--no-less'.
* Less syntax supported:
* - @name at root level statically defines variables resolved at compilation
* time. Essentially a directive e.g., @var-name.
*/
final bool lessSupport;
/** Whether to use colors to print messages on the terminal. */
final bool useColors;
/** File to process by the compiler. */
final String inputFile;
const PreprocessorOptions({this.verbose: false, this.checked: false,
this.lessSupport: true, this.warningsAsErrors: false,
this.throwOnErrors: false, this.throwOnWarnings: false,
this.useColors: true, this.polyfill: false, this.inputFile});
PreprocessorOptions.fromArgs(ArgResults args)
: warningsAsErrors = args['warnings_as_errors'],
throwOnWarnings = args['throw_on_warnings'],
throwOnErrors = args['throw_on_errors'],
verbose = args['verbose'],
checked = args['checked'],
lessSupport = args['less'],
useColors = args['colors'],
polyfill = args['polyfill'],
inputFile = args.rest.length > 0 ? args.rest[0] : null;
// tool.dart [options...] <css file>
static PreprocessorOptions parse(List<String> arguments) {
var parser = new ArgParser()
..addFlag('verbose',
abbr: 'v',
defaultsTo: false,
negatable: false,
help: 'Display detail info')
..addFlag('checked',
defaultsTo: false,
negatable: false,
help: 'Validate CSS values invalid value display a warning message')
..addFlag('less',
defaultsTo: true,
negatable: true,
help: 'Supports subset of Less syntax')
..addFlag('suppress_warnings',
defaultsTo: true, help: 'Warnings not displayed')
..addFlag('warnings_as_errors',
defaultsTo: false, help: 'Warning handled as errors')
..addFlag('throw_on_errors',
defaultsTo: false, help: 'Throw on errors encountered')
..addFlag('throw_on_warnings',
defaultsTo: false, help: 'Throw on warnings encountered')
..addFlag('colors',
defaultsTo: true, help: 'Display errors/warnings in colored text')
..addFlag('polyfill',
defaultsTo: false, help: 'Generate polyfill for new CSS features')
..addFlag('help',
abbr: 'h',
defaultsTo: false,
negatable: false,
help: 'Displays this help message');
try {
var results = parser.parse(arguments);
if (results['help'] || results.rest.length == 0) {
showUsage(parser);
return null;
}
return new PreprocessorOptions.fromArgs(results);
} on FormatException catch (e) {
print(e.message);
showUsage(parser);
return null;
}
}
static showUsage(parser) {
print('Usage: css [options...] input.css');
print(parser.getUsage());
}
}