@@ -6,74 +6,65 @@ import 'package:add_imports/src/function_or_null.dart';
66import 'package:collection/collection.dart' ;
77
88void 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