internal static async Task <int> UnpackPak(FileInfo fileInfo, string outputDirectory, bool showContentInfo = false) { try { PakFile pak = PakFile.Open(fileInfo); if (showContentInfo) { CliUtilities.PrintRow("File", "FileSize"); ShowPakInfo(pak); Console.WriteLine(); } Console.WriteLine($"Total file count {pak.FileCount} \n"); bool unpack = CliUtilities.ShowConsolePrompt($"Do you want to unpack {fileInfo.Name}"); if (unpack) { await Unpack(pak, outputDirectory); } } catch (Exception ex) { Console.WriteLine(ex); return(1); } return(0); }
internal static async Task <int> UnpackPaks(string inputDirectory, string outputDirectory) { try { IEnumerable <string> files = Directory.EnumerateFiles(inputDirectory); bool unpack = CliUtilities.ShowConsolePrompt($"Do you want to unpack {files.Count()} files?"); if (unpack) { using (ProgressBar pbar = new ProgressBar(files.Count(), "", pbarOptions)) { foreach (var file in files) { FileInfo info = new FileInfo(file); PakFile pak = await PakFile.OpenAsync(info); using (ChildProgressBar childPbar = pbar.Spawn(pak.FileCount, "", pbarOptions)) { await UnpackDirectory(pak, outputDirectory, childPbar.AsProgress <PakEntry>(e => e.FileName)); pbar.Tick(); } } } Console.WriteLine("Unpack completed!"); } } catch (Exception ex) { Console.WriteLine(ex); return(1); } return(0); }