add read from stdin

This commit is contained in:
2019-11-18 00:05:02 +08:00
parent dbd04e7763
commit b251c5f2e2

View File

@@ -1,13 +1,26 @@
import 'dart:convert';
import 'dart:io';
main(List<String> args) async {
if (args.length == 0) {
print('File name is not assigned\nUsage: prettyjson.dart <file.json>');
return;
}
final jsonContent = await new File(args[0]).readAsString();
main(List<String> args) async {
final jsonContent = await readContent(args);
final jsonDecoded = json.decode(jsonContent);
JsonEncoder encoder = new JsonEncoder.withIndent(' ');
print(encoder.convert(jsonDecoded));
}
Future<String> readContent(List<String> args) async {
if (args.length == 0) {
return readFromStdin();
} else {
return new File(args[0]).readAsString();
}
}
Future<String> readFromStdin() async {
final stdinContentLines = stdin.transform(utf8.decoder);
final stdinContentArray = new List<String>();
await for (var line in stdinContentLines) {
stdinContentArray.add(line);
}
return Future<String>.value(stdinContentArray.join('\n'));
}