For 'dartdev format' and 'dartdev format --help', return the output from dartfmt --help, instead of the default output from FormatCommand.printUsage(). This is follow up on https://dart-review.googlesource.com/c/sdk/+/133042

Change-Id: I497e983a2302fbb010256a4961b6121294a9de82
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/134106
Commit-Queue: Jaime Wren <jwren@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
This commit is contained in:
Jaime Wren
2020-02-03 17:51:36 +00:00
committed by commit-bot@chromium.org
parent 1efba58d22
commit b00f0ff5fd
5 changed files with 48 additions and 10 deletions
+4
View File
@@ -31,6 +31,10 @@ class DartdevRunner<int> extends CommandRunner {
final Ansi ansi = Ansi(Ansi.terminalSupportsAnsi);
log = isVerbose ? Logger.verbose(ansi: ansi) : Logger.standard(ansi: ansi);
// TODO(jwren) override this super call so that the arguments on each
// command aren't enforced. Example:
// dart .../dartdev.dart format -w /path/to/file.dart
// fails becuase '-w' isn't known by the FormatCommand class.
return await super.runCommand(results);
}
}
+18 -6
View File
@@ -9,19 +9,31 @@ import '../sdk.dart';
class FormatCommand extends DartdevCommand {
FormatCommand({bool verbose = false})
: super('format', 'Format one or more Dart files.') {
// TODO(jwren) add all options and flags
}
: super('format', 'Format one or more Dart files.');
@override
FutureOr<int> run() async {
// TODO(jwren) implement verbose in dart_style
// dartfmt doesn't have '-v' or '--verbose', so remove from the argument list
var args = List.from(argResults.arguments)
// TODO(jwren) The verbose flag was added to dartfmt in version 1.3.4 with
// https://github.com/dart-lang/dart_style/pull/887, this version is rolled
// into the dart sdk build, we can remove the removal of '-v' and
// '--verbose':
List<String> args = List.from(argResults.arguments)
..remove('-v')
..remove('--verbose');
if (args.isEmpty) {
args.add('--help');
}
var process = await startProcess(sdk.dartfmt, args);
routeToStdout(process);
return process.exitCode;
}
@override
void printUsage() {
var processResult = runSync(sdk.dartfmt, ['--help']);
String result = processResult.stdout;
print(result);
}
}
+9
View File
@@ -33,6 +33,15 @@ Future<Process> startProcess(
return Process.start(executable, arguments, workingDirectory: cwd);
}
ProcessResult runSync(
String executable,
List<String> arguments, {
String cwd,
}) {
log.trace('$executable ${arguments.join(' ')}');
return Process.runSync(executable, arguments, workingDirectory: cwd);
}
void routeToStdout(
Process process, {
bool logToTrace = false,
+1
View File
@@ -22,6 +22,7 @@ void help() {
var result = p.runSync('--help');
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
expect(result.stdout, contains(DartdevRunner.dartdevDescription));
expect(result.stdout, contains('Usage: dartdev <command> [arguments]'));
expect(result.stdout, contains('Global options:'));
+16 -4
View File
@@ -15,13 +15,25 @@ void format() {
tearDown(() => p?.dispose());
test('implicit --help', () {
p = project();
var result = p.runSync('format');
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
expect(result.stdout, contains('Idiomatically formats Dart source code.'));
expect(result.stdout,
contains('dartfmt [options...] [files or directories...]'));
expect(result.stdout, contains('dartfmt -w .'));
});
test('--help', () {
p = project();
var result = p.runSync('format', ['--help']);
expect(result.exitCode, 0);
expect(result.stdout, contains('Format one or more Dart files.'));
expect(result.stdout, contains('Usage: dartdev format [arguments]'));
expect(
result.stdout, contains('Run "dartdev help" to see global options.'));
expect(result.stderr, isEmpty);
expect(result.stdout, contains('Idiomatically formats Dart source code.'));
expect(result.stdout,
contains('dartfmt [options...] [files or directories...]'));
expect(result.stdout, contains('dartfmt -w .'));
});
}