compileCode method
Implementation
Future<Uint8List> compileCode(Locations locations) async {
String packageName;
final pubspecData = loadYaml(await locations.pubspecYaml!.readAsString());
if (pubspecData is! YamlMap) {
throw ArgumentError("Could not read pubspec.yaml");
}
packageName = pubspecData.toMap()['name'];
final compiler = Compiler();
for (final name in ['flutter', 'flutter_map', 'every_door']) {
await loadBindings(compiler, name);
}
Map<String, String> addFiles(Directory dir) {
final result = <String, String>{};
if (!dir.existsSync()) return result;
for (final file in dir.listSync()) {
if (file is File && file.path.endsWith('.dart')) {
String fileData = file.readAsStringSync();
fileData = fileData.replaceAll('package:every_door_plugin/', 'package:every_door/');
final rel = p
.relative(file.path, from: locations.codeRoot!.path)
.replaceAll('\\', '/');
result[rel] = fileData;
} else if (file is Directory) {
result.addAll(addFiles(file));
}
}
return result;
}
final data = {packageName: addFiles(locations.codeRoot!)};
final program = compiler.compile(data);
return program.write();
}