writeAll method
Writes formatted contracts and generated build files into the file system
Implementation
Future<void> writeAll() async {
final contractsPath = p.join(
p.relative(config.output.path),
'${config.name}.dart',
);
await config.output.create(recursive: true);
await File(contractsPath).writeAsString(
DartFormatter().format(await toCode()),
);
final packageGraph = await PackageGraph.forThisPackage();
final js = jsonSerializable(BuilderOptions.empty);
final f = AssetId(packageGraph.root.name, contractsPath);
final env = IOEnvironment(packageGraph);
final writer = InMemoryAssetWriter();
final res = AnalyzerResolvers();
await runBuilder(js, [f], env.reader, writer, res);
final jsonSerializablePathOld = p.join(
p.relative(config.output.path),
'${config.name}.json_serializable.g.part',
);
final jsonSerializablePath = p.join(
config.output.path,
'${config.name}.g.dart',
);
final generated = writer.assets[AssetId(
packageGraph.root.name,
jsonSerializablePathOld,
)];
await File(jsonSerializablePath).writeAsString(
'''
// GENERATED CODE - DO NOT MODIFY BY HAND
part of '${config.name}.dart';
${utf8.decode(generated ?? [])}''',
);
}