private async Task WriteWorkspace(Stream workspaceStream) { try { Directory.CreateDirectory(WorkspaceDir); await using var tarStream = new TarInputStream(workspaceStream); await ArchiveUtil.ExtractTar(tarStream, WorkspaceDir); } finally { workspaceStream.Close(); } }
public static async Task <IRecorder> Create(string archiveFile, string workDir) { var extractedDirCleanup = DirectoryCleanup.CreateTempDir(workDir, async extractedDir => { await using (var stream = File.OpenRead(archiveFile)) { await using var tarStream = new TarInputStream(stream); await ArchiveUtil.ExtractTar(tarStream, extractedDir); } var dependencyMetadata = JsonConvert.DeserializeObject <JObject>( await File.ReadAllTextAsync(Path.Combine(extractedDir, ArchiveRecorder.TransientMetadataPath)) ); return(new ReplayRecorder(extractedDir, dependencyMetadata)); }); return(await extractedDirCleanup.Value()); }