Example #1
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);
        }