removeUnused function
Implementation
void removeUnused(File arbFile, List<String> excludes) {
final Map<String, dynamic> data = json.decode(arbFile.readAsStringSync());
final lib = Directory('lib');
final fileContents = lib
.listSync(recursive: true)
.whereType<File>()
.where((element) {
final path = element.path;
return !excludes.any((element) => path.startsWith(element));
})
.where((element) => element.path.endsWith('.dart'))
.map((e) => e.readAsStringSync())
.toList();
var remove = <String>[];
for (final key in data.keys) {
final value = data[key];
if (value is String) {
if (fileContents.any((content) => content.contains(key))) {
continue;
}
remove.add(key);
}
}
data.removeWhere((key, value) => remove.contains(key));
final sorted = SplayTreeMap.from(data);
final encoder = JsonEncoder.withIndent(' ');
arbFile.writeAsStringSync(encoder.convert(sorted), flush: true);
}