Skip to content

Commit 9d957cf

Browse files
upd
1 parent 426c7bb commit 9d957cf

File tree

1 file changed

+48
-57
lines changed

1 file changed

+48
-57
lines changed

tools/add_imports/bin/add_imports.dart

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,74 +6,65 @@ import 'package:add_imports/src/function_or_null.dart';
66
import 'package:collection/collection.dart';
77

88
void main(List<String> arguments) {
9-
final state = init(arguments);
10-
if (state == null) return;
11-
12-
final (sourceFile, config) = state;
13-
14-
final sourceString = sourceFile.readAsStringSync.orNull();
15-
if (sourceString == null) {
16-
print('Error while reading source from "${sourceFile.path}"');
17-
18-
return;
19-
}
20-
21-
final classes = RegExp(r'new self.([A-Za-z]+)\(')
22-
.allMatches(sourceString)
23-
.map((e) => e.group(1))
24-
.whereNotNull()
25-
.toSet()
26-
.intersection(config.classesMap.values.flattened.toSet())
27-
.whereNot((e) => sourceString.contains('import { $e }'))
28-
.toList();
29-
30-
if (classes.isEmpty) return;
31-
32-
final imports = classes.map(
33-
(classname) {
34-
final filename = config.classesMap.entries
35-
.firstWhere((e) => e.value.contains(classname))
36-
.key;
37-
38-
final url = '${config.fileUrlPrefix}$filename';
39-
40-
return 'import { $classname } from "$url";';
41-
},
42-
);
43-
44-
final inits = classes.map((e) => 'self.$e = $e');
45-
46-
final newSource = [
47-
...imports,
48-
...inits,
49-
sourceString,
50-
].join('\n');
51-
529
try {
53-
sourceFile.writeAsStringSync(newSource);
54-
} catch (_) {
55-
print('Error while writing new source to "${sourceFile.path}"');
56-
57-
return;
10+
final (sourceFile, config) = init(arguments);
11+
12+
final sourceString = sourceFile.readAsStringSync.orNull();
13+
if (sourceString == null) {
14+
throw 'Error while reading source from "${sourceFile.path}"';
15+
}
16+
17+
final classes = RegExp(r'new self.([A-Za-z]+)\(')
18+
.allMatches(sourceString)
19+
.map((e) => e.group(1))
20+
.whereNotNull()
21+
.toSet()
22+
.intersection(config.classesMap.values.flattened.toSet())
23+
.whereNot((e) => sourceString.contains('import { $e }'))
24+
.toList();
25+
26+
if (classes.isEmpty) return;
27+
28+
final imports = classes.map(
29+
(classname) {
30+
final filename = config.classesMap.entries
31+
.firstWhere((e) => e.value.contains(classname))
32+
.key;
33+
34+
final url = '${config.fileUrlPrefix}$filename';
35+
36+
return 'import { $classname } from "$url";';
37+
},
38+
);
39+
40+
final inits = classes.map((e) => 'self.$e = $e');
41+
42+
final newSource = [
43+
...imports,
44+
...inits,
45+
sourceString,
46+
].join('\n');
47+
48+
try {
49+
sourceFile.writeAsStringSync(newSource);
50+
} catch (_) {
51+
throw 'Error while writing new source to "${sourceFile.path}"';
52+
}
53+
} on String catch (e) {
54+
print(e);
5855
}
5956
}
6057

61-
(File, Config)? init(List<String> arguments) {
58+
(File, Config) init(List<String> arguments) {
6259
final args = (() => Args.parse(arguments)).orNull();
63-
if (args == null) {
64-
print(Args.usage);
65-
66-
return null;
67-
}
60+
if (args == null) throw Args.usage;
6861

6962
final config = (() => Config.fromYaml(
7063
File(args.configpath).readAsStringSync(),
7164
)).orNull();
7265

7366
if (config == null) {
74-
print('Error while reading config from "${args.configpath}"');
75-
76-
return null;
67+
throw 'Error while reading config from "${args.configpath}"';
7768
}
7869

7970
return (File(args.filename), config);

0 commit comments

Comments
 (0)