Add some options to format subcommand (#18360)
* Add `--dry-run` option to `flutter format` sub command * Add `--set-exit-if-changed` option to `format` sub command * Add `--machine` option to `format` sub command * Make variable names to be not shorthand: cmd -> command Fix https://github.com/flutter/flutter/pull/18360#discussion_r199656120
This commit is contained in:
@@ -10,6 +10,26 @@ import '../dart/sdk.dart';
|
||||
import '../runner/flutter_command.dart';
|
||||
|
||||
class FormatCommand extends FlutterCommand {
|
||||
FormatCommand() {
|
||||
argParser.addFlag('dry-run',
|
||||
abbr: 'n',
|
||||
help: 'Show which files would be modified but make no changes.',
|
||||
defaultsTo: false,
|
||||
negatable: false,
|
||||
);
|
||||
argParser.addFlag('set-exit-if-changed',
|
||||
help: 'Return exit code 1 if there are any formatting changes.',
|
||||
defaultsTo: false,
|
||||
negatable: false,
|
||||
);
|
||||
argParser.addFlag('machine',
|
||||
abbr: 'm',
|
||||
help: 'Produce machine-readable JSON output.',
|
||||
defaultsTo: false,
|
||||
negatable: false,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
final String name = 'format';
|
||||
|
||||
@@ -36,8 +56,25 @@ class FormatCommand extends FlutterCommand {
|
||||
}
|
||||
|
||||
final String dartfmt = sdkBinaryName('dartfmt');
|
||||
final List<String> cmd = <String>[dartfmt, '-w']..addAll(argResults.rest);
|
||||
final int result = await runCommandAndStreamOutput(cmd);
|
||||
final List<String> command = <String>[dartfmt];
|
||||
|
||||
if (argResults['dry-run']) {
|
||||
command.add('-n');
|
||||
}
|
||||
if (argResults['machine']) {
|
||||
command.add('-m');
|
||||
}
|
||||
if (!argResults['dry-run'] && !argResults['machine']) {
|
||||
command.add('-w');
|
||||
}
|
||||
|
||||
if (argResults['set-exit-if-changed']) {
|
||||
command.add('--set-exit-if-changed');
|
||||
}
|
||||
|
||||
command..addAll(argResults.rest);
|
||||
|
||||
final int result = await runCommandAndStreamOutput(command);
|
||||
if (result != 0)
|
||||
throwToolExit('Formatting failed: $result', exitCode: result);
|
||||
}
|
||||
|
||||
@@ -38,5 +38,42 @@ void main() {
|
||||
final String formatted = srcFile.readAsStringSync();
|
||||
expect(formatted, original);
|
||||
});
|
||||
|
||||
testUsingContext('dry-run', () async {
|
||||
final String projectPath = await createProject(temp);
|
||||
|
||||
final File srcFile = fs.file(
|
||||
fs.path.join(projectPath, 'lib', 'main.dart'));
|
||||
final String nonFormatted = srcFile.readAsStringSync().replaceFirst(
|
||||
'main()', 'main( )');
|
||||
srcFile.writeAsStringSync(nonFormatted);
|
||||
|
||||
final FormatCommand command = new FormatCommand();
|
||||
final CommandRunner<Null> runner = createTestCommandRunner(command);
|
||||
await runner.run(<String>['format', '--dry-run', srcFile.path]);
|
||||
|
||||
final String shouldNotFormatted = srcFile.readAsStringSync();
|
||||
expect(shouldNotFormatted, nonFormatted);
|
||||
});
|
||||
|
||||
testUsingContext('dry-run with set-exit-if-changed', () async {
|
||||
final String projectPath = await createProject(temp);
|
||||
|
||||
final File srcFile = fs.file(
|
||||
fs.path.join(projectPath, 'lib', 'main.dart'));
|
||||
final String nonFormatted = srcFile.readAsStringSync().replaceFirst(
|
||||
'main()', 'main( )');
|
||||
srcFile.writeAsStringSync(nonFormatted);
|
||||
|
||||
final FormatCommand command = new FormatCommand();
|
||||
final CommandRunner<Null> runner = createTestCommandRunner(command);
|
||||
|
||||
expect(runner.run(<String>[
|
||||
'format', '--dry-run', '--set-exit-if-changed', srcFile.path
|
||||
]), throwsException);
|
||||
|
||||
final String shouldNotFormatted = srcFile.readAsStringSync();
|
||||
expect(shouldNotFormatted, nonFormatted);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user