save method
Implementation
Future<void> save(String path) async {
final tarEncoder = TarEncoder();
OutputStream stream = OutputStream();
tarEncoder.start(stream);
Dependencies dependencies = Dependencies();
dependencies.dependencies.addAll(this.dependencies);
final dependenciesData = dependencies.writeToBuffer();
tarEncoder.add(ArchiveFile(
TarKey.allDependency, dependenciesData.length, dependenciesData));
tarEncoder.add(ArchiveFile(TarKey.recordStream, record.length, record));
final metaDataData = metaData.writeToBuffer();
tarEncoder.add(
ArchiveFile(TarKey.scriptMetaData, metaDataData.length, metaDataData));
final snapshotMatchPositions = SnapshotMatchPositions();
checkpoints.forEach((element) {
MatchPositions matchPositions = MatchPositions();
matchPositions.name = element.name;
matchPositions.all.addAll(element.matchPositions.map((e) => e.toMatchPosition()));
snapshotMatchPositions.all.add(matchPositions);
});
final snapshotMatchPositionsData = snapshotMatchPositions.writeToBuffer();
tarEncoder.add(ArchiveFile(TarKey.snapshotMatchPositions,
snapshotMatchPositionsData.length, snapshotMatchPositionsData));
checkpoints.forEach((element) {
tarEncoder.add(
ArchiveFile(element.name, element.snapshot.length, element.snapshot));
});
tarEncoder.finish();
final file = File(path);
await file.writeAsBytes(stream.getBytes());
}