save method

Future<void> save(
  1. String path
)

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());
}