| Index: pkg/analyzer_experimental/bin/formatter.dart
|
| ===================================================================
|
| --- pkg/analyzer_experimental/bin/formatter.dart (revision 0)
|
| +++ pkg/analyzer_experimental/bin/formatter.dart (revision 0)
|
| @@ -0,0 +1,93 @@
|
| +#!/usr/bin/env dart
|
| +
|
| +// Copyright (c) 2013, 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.
|
| +
|
| +import 'dart:io';
|
| +
|
| +import 'package:args/args.dart';
|
| +
|
| +import 'package:analyzer_experimental/src/services/formatter_impl.dart';
|
| +
|
| +
|
| +const BINARY_NAME = 'dartfmt';
|
| +final argParser = _initArgParser();
|
| +
|
| +void main() {
|
| + var options = argParser.parse(new Options().arguments);
|
| + if (options['help']) {
|
| + _printUsage();
|
| + return;
|
| + }
|
| + if (options.rest.isEmpty) {
|
| + _formatStdin(options);
|
| + } else {
|
| + _formatFiles(options.rest);
|
| + }
|
| +}
|
| +
|
| +_formatFiles(files) {
|
| + for (var file in files) {
|
| + _formatFile(file);
|
| + }
|
| +}
|
| +
|
| +_formatFile(path) {
|
| + var buffer = new StringBuffer();
|
| + var file = new File(path);
|
| + file.openRead()
|
| + .transform(new StringDecoder())
|
| + .listen((data) => buffer.write(data),
|
| + onError: (error) => print('Error, could not open "$path"'),
|
| + onDone: () => print(_formatCU(buffer.toString())));
|
| +}
|
| +
|
| +_formatStdin(options) {
|
| + _log('not supported yet!');
|
| +// stdin.transform(new StringDecoder())
|
| +// .listen((String data) => print(data),
|
| +// onError: (error) => print('Error reading from stdin'),
|
| +// onDone: () => print('Finished reading data'));
|
| +}
|
| +
|
| +/// Initialize the arg parser instance.
|
| +ArgParser _initArgParser() {
|
| + // NOTE: these flags are placeholders only!
|
| + var parser = new ArgParser();
|
| + parser.addFlag('write', abbr: 'w', negatable: false,
|
| + help: 'Write reformatted sources to files (overwriting contents). '
|
| + 'Do not print reformatted sources to standard output.');
|
| + parser.addFlag('help', abbr: 'h', negatable: false,
|
| + help: 'Print this usage information.');
|
| + return parser;
|
| +}
|
| +
|
| +
|
| +/// Displays usage information.
|
| +_printUsage() {
|
| + var buffer = new StringBuffer();
|
| + buffer..write('$BINARY_NAME formats Dart programs.')
|
| + ..write('\n\n')
|
| + ..write('Without an explicit path, $BINARY_NAME processes the standard '
|
| + 'input. Given a file, it operates on that file; given a '
|
| + 'directory, it operates on all .dart files in that directory, '
|
| + 'recursively. (Files starting with a period are ignored.) By '
|
| + 'default, $BINARY_NAME prints the reformatted sources to '
|
| + 'standard output.')
|
| + ..write('\n\n')
|
| + ..write('Supported flags are:')
|
| + ..write('Usage: $BINARY_NAME [flags] [path...]\n\n')
|
| + ..write('${argParser.getUsage()}\n\n');
|
| + _log(buffer.toString());
|
| +}
|
| +
|
| +/// Format the given [src] as a compilation unit.
|
| +String _formatCU(src, {options: const FormatterOptions()}) =>
|
| + new CodeFormatter(options).format(CodeKind.COMPILATION_UNIT, src);
|
| +
|
| +/// Log the given [msg].
|
| +_log(String msg) {
|
| + //TODO(pquitslund): add proper log support
|
| + print(msg);
|
| +}
|
|
|
| Property changes on: pkg/analyzer_experimental/bin/formatter.dart
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
|
|
|
|