コード例 #1
0
 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();
     }
 }
コード例 #2
0
ファイル: ReplayRecorder.cs プロジェクト: helium-build/helium
        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());
        }