Skip to content

Commit ca04401

Browse files
better error handling
1 parent c605220 commit ca04401

File tree

3 files changed

+37
-33
lines changed

3 files changed

+37
-33
lines changed

tools/add_imports/bin/add_imports.dart

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import 'dart:io';
33
import 'package:add_imports/src/args.dart';
44
import 'package:add_imports/src/config.dart';
55
import 'package:add_imports/src/util.dart';
6+
import 'package:args/args.dart';
67
import 'package:collection/collection.dart';
8+
import 'package:yaml/yaml.dart';
79

810
void main(List<String> arguments) {
911
try {
@@ -13,25 +15,19 @@ void main(List<String> arguments) {
1315
if (newSource == sourceString) return;
1416

1517
sourceFile.writeAsStringSync(newSource);
16-
} on String catch (e) {
17-
print(e);
1818
} on FileSystemException catch (e) {
1919
print('Error while accessing ${e.path}');
20+
} on YamlException {
21+
print('Error while parsing config');
22+
} on ArgParserException {
23+
print(Args.usage);
2024
}
2125
}
2226

2327
(File, Config) init(List<String> arguments) {
24-
final Args(
25-
:filename,
26-
:configpath,
27-
) = mapException(() => Args.parse(arguments), (_) => Args.usage);
28-
29-
final config = mapException(
30-
() => Config.fromYaml(
31-
File(configpath).readAsStringSync(),
32-
),
33-
(_) => 'Error while reading config from "$configpath"',
34-
);
28+
final Args(:filename, :configpath) = Args.parse(arguments);
29+
final configString = File(configpath).readAsStringSync();
30+
final config = Config.fromYaml(configString);
3531

3632
return (File(filename), config);
3733
}
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
import 'package:args/args.dart';
22

33
class Args {
4-
static final parser = ArgParser()
4+
static final _parser = ArgParser()
55
..addOption('filename')
66
..addOption('configpath', defaultsTo: 'add_imports.yaml');
77

88
final String filename;
99
final String configpath;
1010

11-
static String get usage => parser.usage;
11+
static String get usage => _parser.usage;
1212

1313
Args({required this.filename, required this.configpath});
1414

1515
factory Args.parse(List<String> arguments) {
16-
final result = parser.parse(arguments);
16+
try {
17+
final result = _parser.parse(arguments);
1718

18-
return Args(
19-
filename: result['filename'] as String,
20-
configpath: result['configpath'] as String,
21-
);
19+
return Args(
20+
filename: result['filename'] as String,
21+
configpath: result['configpath'] as String,
22+
);
23+
} catch (_) {
24+
throw ArgParserException('');
25+
}
2226
}
2327
}

tools/add_imports/lib/src/config.dart

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,23 @@ class Config {
1010
Config({required this.fileUrlPrefix, required this.classesMap});
1111

1212
factory Config.fromYaml(String yamlString) {
13-
final parsedYaml = loadYaml(yamlString) as YamlMap;
14-
15-
final classesMap = (parsedYaml['classes_map'] as YamlMap).map(
16-
(key, value) => MapEntry(
17-
key as String,
18-
[...value as YamlList].cast<String>(),
19-
),
20-
);
21-
22-
return Config(
23-
classesMap: classesMap,
24-
fileUrlPrefix: parsedYaml['file_url_prefix'] as String,
25-
);
13+
try {
14+
final parsedYaml = loadYaml(yamlString) as YamlMap;
15+
16+
final classesMap = (parsedYaml['classes_map'] as YamlMap).map(
17+
(key, value) => MapEntry(
18+
key as String,
19+
[...value as YamlList].cast<String>(),
20+
),
21+
);
22+
23+
return Config(
24+
classesMap: classesMap,
25+
fileUrlPrefix: parsedYaml['file_url_prefix'] as String,
26+
);
27+
} catch (_) {
28+
throw YamlException('', null);
29+
}
2630
}
2731

2832
String _filenameForClass(String classname) =>

0 commit comments

Comments
 (0)