// Copyright 2016 The Chromium Authors. 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:async'; import 'package:path/path.dart' as path; import '../base/process.dart'; import '../cache.dart'; import '../globals.dart'; import '../runner/flutter_command.dart'; class FormatCommand extends FlutterCommand { @override final String name = 'format'; @override List<String> get aliases => const <String>['dartfmt']; @override final String description = 'Format one or more dart files.'; @override String get invocation => "${runner.executableName} $name <one or more paths>"; @override Future<int> runCommand() async { if (argResults.rest.isEmpty) { printStatus('No files specified to be formatted.'); printStatus(''); printStatus('To format all files in the current directory tree:'); printStatus('${runner.executableName} $name .'); printStatus(''); printStatus(usage); return 1; } String dartfmt = path.join( Cache.flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'dartfmt'); List<String> cmd = <String>[dartfmt, '-w']..addAll(argResults.rest); return runCommandAndStreamOutput(cmd); } }