private static void extractTarGz(string gzfile, string dstPath) { if (Directory.Exists(dstPath)) { Directory.Delete(dstPath, true); } Tar.ExtractTarGz(gzfile, dstPath); }
private static void extractTarGz(string gzfile, string path) { string backupFolder = Utils.PathCombine(path, "backup"); string backupVSFolder = Utils.PathCombine(backupFolder, "UWPProjectTemplates"); if (Directory.Exists(backupVSFolder)) { Directory.Delete(backupVSFolder, true); } Tar.ExtractTarGz(gzfile, backupFolder); }
private void ExtractToTarget(string path) { Log.Info("Extracting..."); var tempFile = Path.GetTempFileName(); File.Delete(tempFile); Directory.CreateDirectory(tempFile); var tempDir = tempFile; Log.Info($"Extracting '{path}'->'{tempDir}'"); if (path.EndsWith(".zip")) { Log.Info("ExtractionMethod: ZIP"); ZipFile.ExtractToDirectory(path, tempDir); } else if (path.EndsWith(".tar.gz")) { Log.Info("ExtractionMethod: TAR/GZ"); Tar.ExtractTarGz(path, tempDir); } else { throw new InvalidOperationException("Unknown compression type"); } List <Task> deleteTasks = new List <Task> { Task.Run(() => { Log.Info($"Deleting input/tempfile '{path}'"); File.Delete(path); Log.Info($"Deleted '{path}'"); }) }; var targetInfo = new DirectoryInfo(Config.DestinationSubDir); foreach (var dir in new DirectoryInfo(tempDir).GetDirectories()) { Log.Info($"Moving internal (layer-1) directory '{dir}' into '{targetInfo}'"); CopyFilesRecursively(dir, new DirectoryInfo(Config.DestinationSubDir)); deleteTasks.Add( Task.Run(() => { Log.Info($"Deleting internal folder '{dir.FullName}'"); Directory.Delete(dir.FullName, true); Log.Info($"Deleted '{dir.FullName}'"); }) ); } Log.Info("Waiting for DeleteTasks"); Task.WaitAll(deleteTasks.ToArray()); Log.Info("All DeleteTasks finished"); Log.Info($"Deleting tempfolder '{tempDir}'"); Directory.Delete(tempDir, true); Log.Info($"Deleted '{tempDir}'"); Log.Info("Extracting finished"); }