Пример #1
0
        public void ExtractArchive(string archiveDestination)
        {
            var progress = new ConsoleProgressReport();
            var archive  = new IndexedArchive();

            archive.Extract(NuGetPackagesArchive, archiveDestination, progress);
        }
Пример #2
0
        public string ExtractArchive()
        {
            var progress = new ConsoleProgressReport();
            var archive  = new IndexedArchive();

            archive.Extract(NuGetPackagesArchive, _temporaryDirectory.DirectoryPath, progress);

            return(_temporaryDirectory.DirectoryPath);
        }
Пример #3
0
        static void Main(string[] args)
        {
            var archivePath    = args[0];
            var extractionPath = args[1];

            Directory.CreateDirectory(extractionPath);

            var progress = new ConsoleProgressReport();
            var archive  = new IndexedArchive();

            archive.Extract(archivePath, extractionPath, progress);
        }
Пример #4
0
        private static void ExtractData()
        {
            if (File.Exists(@"..\data.xz"))
            {
                var indexedArchive = new IndexedArchive();

                // Note: there is 2 phases while decompressing: Decompress (LZMA) and Expanding (file copying using index.txt)
                var progressReport = new XenkoLauncherProgressReport(2);

                // Extract files from LZMA archive
                indexedArchive.Extract(@"..\data.xz", @"..", progressReport);

                File.Delete(@"..\data.xz");
            }
        }
Пример #5
0
        public static int Main(string[] args)
        {
            //DebugHelper.HandleDebugSwitch(ref args);

            var app = new CommandLineApplication();

            app.Name        = "archive";
            app.FullName    = ".NET archiver";
            app.Description = "Archives and expands sets of files";
            app.HelpOption("-h|--help");

            var extract     = app.Option("-x|--extract <outputDirectory>", "Directory to extract to", CommandOptionType.SingleValue);
            var archiveFile = app.Option("-a|--archive <file>", "Archive to operate on", CommandOptionType.SingleValue);
            var externals   = app.Option("--external <external>...", "External files and directories to consider for extraction", CommandOptionType.MultipleValue);
            var sources     = app.Argument("<sources>...", "Files & directory to include in the archive", multipleValues: true);

            app.OnExecute(() => {
                if (extract.HasValue() && sources.Values.Any())
                {
                    Console.WriteLine("Extract '-x' can only be specified when no '<sources>' are specified to add to the archive.");
                    return(1);
                }
                else if (!extract.HasValue() && !sources.Values.Any())
                {
                    Console.WriteLine("Either extract '-x' or '<sources>' must be specified.");
                    return(1);
                }

                if (!archiveFile.HasValue())
                {
                    Console.WriteLine("Archive '-a' must be specified.");
                    return(1);
                }

                var progress = new ConsoleProgressReport();

                var archive = new IndexedArchive();
                foreach (var external in externals.Values)
                {
                    if (Directory.Exists(external))
                    {
                        archive.AddExternalDirectory(external);
                    }
                    else
                    {
                        archive.AddExternalFile(external);
                    }
                }

                if (sources.Values.Any())
                {
                    foreach (var source in sources.Values)
                    {
                        if (Directory.Exists(source))
                        {
                            archive.AddDirectory(source, progress);
                        }
                        else
                        {
                            archive.AddFile(source, Path.GetFileName(source));
                        }
                    }

                    archive.Save(archiveFile.Value(), progress);
                }
                else  // sources not specified, extract must have been specified
                {
                    archive.Extract(archiveFile.Value(), extract.Value(), progress);
                }

                return(0);
            });

            return(app.Execute(args));
        }