Esempio n. 1
0
        public static void Generate(string[] archiveFileNames, System.IO.Stream outputStream)
        {
            var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap();

            AnnoRDA.FileSystem fileSystem;

            if (archiveFileNames.Length == 1 && PathIsDirectory(archiveFileNames[0]))
            {
                var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader();
                var loadResult      = directoryLoader.Load(archiveFileNames[0], System.Threading.CancellationToken.None);

                fileSystem = loadResult.FileSystem;
                foreach (string path in loadResult.ContainerPaths)
                {
                    archiveFiles.Add(path, path);
                }
            }
            else
            {
                fileSystem = new AnnoRDA.FileSystem();
                var fileLoader = new AnnoRDA.Loader.ContainerFileLoader();
                foreach (var rdaFileName in archiveFileNames)
                {
                    var loadedFS = fileLoader.Load(rdaFileName);
                    fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None);

                    archiveFiles.Add(rdaFileName, rdaFileName);
                }
            }

            using (var fileDBWriter = new AnnoRDA.FileDB.Writer.FileSystemWriter(outputStream, true)) {
                fileDBWriter.WriteFileSystem(fileSystem, archiveFiles);
            }
        }
Esempio n. 2
0
        public override int Run(string[] remainingArguments)
        {
            var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap();
            AnnoRDA.FileSystem fileSystem;

            if (remainingArguments.Length == 1 && this.PathIsDirectory(remainingArguments[0])) {
                var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader();
                var loadResult = directoryLoader.Load(remainingArguments[0], System.Threading.CancellationToken.None);

                fileSystem = loadResult.FileSystem;
                foreach (string path in loadResult.ContainerPaths) {
                    archiveFiles.Add(path, path);
                }
            } else {
                fileSystem = new AnnoRDA.FileSystem();
                var fileLoader = new AnnoRDA.Loader.ContainerFileLoader();
                foreach (var rdaFileName in remainingArguments) {
                    var loadedFS = fileLoader.Load(rdaFileName);
                    fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None);

                    archiveFiles.Add(rdaFileName, rdaFileName);
                }
            }

            using (var outputStream = new System.IO.FileStream(this.outputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) {
                using (var writer = new AnnoRDA.FileDB.Writer.FileDBWriter(outputStream, false)) {
                    writer.WriteFileDB(fileSystem, archiveFiles);
                }
            }

            return 0;
        }
Esempio n. 3
0
        public override int Run(string[] remainingArguments)
        {
            var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap();

            AnnoRDA.FileSystem fileSystem;

            if (remainingArguments.Length == 1 && this.PathIsDirectory(remainingArguments[0]))
            {
                var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader();
                var loadResult      = directoryLoader.Load(remainingArguments[0], System.Threading.CancellationToken.None);

                fileSystem = loadResult.FileSystem;
                foreach (string path in loadResult.ContainerPaths)
                {
                    archiveFiles.Add(path, path);
                }
            }
            else
            {
                fileSystem = new AnnoRDA.FileSystem();
                var fileLoader = new AnnoRDA.Loader.ContainerFileLoader();
                foreach (var rdaFileName in remainingArguments)
                {
                    var loadedFS = fileLoader.Load(rdaFileName);
                    fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None);

                    archiveFiles.Add(rdaFileName, rdaFileName);
                }
            }

            using (var outputStream = new System.IO.FileStream(this.outputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) {
                using (var writer = new AnnoRDA.FileDB.Writer.FileSystemWriter(outputStream, false)) {
                    writer.WriteFileSystem(fileSystem, archiveFiles);
                }
            }

            return(0);
        }