Exemplo n.º 1
0
        public void BeforeAddEntry(FusePackConfig config, IPackageEntry entry)
        {
            var processEntry       = entry as FusionProcessEntry;
            var processConfigEntry = entry as FusionProcessConfigEntry;

            var metaEntry = entry as FusionMetaEntry;

            if (processEntry != null)
            {
                processEntry.Name = config.Id;
            }

            if (processConfigEntry != null)
            {
                processConfigEntry.Name = $"{config.Id}.config";
            }

            if (metaEntry != null)
            {
                metaEntry.SetInfo(FusionMetaEntry.ExecutableInfoKey, config.Id);
                metaEntry.SetInfo(ZappVariables.StartupAssemblyNameFusionInfoKey, "SuperExitingApp1");
                metaEntry.SetInfo(ZappVariables.TeardownAssemblyNameFusionInfoKey, "SuperExitingApp1");
                metaEntry.SetInfo(ZappVariables.TeardownTypeNameFusionInfoKey, "SuperExitingClass1");
                metaEntry.SetInfo(ZappVariables.TeardownMethodNameFusionInfoKey, "Teardown");
            }
        }
Exemplo n.º 2
0
 public byte[] ExtractEntry(IPackageEntry entry)
 {
     using (var sr = new BinaryReader(OpenStream(entry)))
     {
         return sr.ReadBytes((int) sr.BaseStream.Length);
     }
 }
Exemplo n.º 3
0
 public byte[] ExtractEntry(IPackageEntry entry)
 {
     using (var sr = new BinaryReader(OpenStream(entry)))
     {
         return(sr.ReadBytes((int)sr.BaseStream.Length));
     }
 }
Exemplo n.º 4
0
 private string ReadEntryContent(IPackageEntry entry)
 {
     using (var stream = entry.Open())
         using (var reader = new StreamReader(stream))
         {
             return(reader.ReadToEnd());
         }
 }
Exemplo n.º 5
0
 public InlinePackageFile(IPackage package, string path)
 {
     _package = package;
     _entry   = package.GetEntry(path);
     FilePath = path;
     _files   = new HashSet <string>(_package.GetFiles(FilePath));
     _folders = new HashSet <string>(_package.GetDirectories(FilePath));
 }
Exemplo n.º 6
0
        public Stream OpenStream(IPackageEntry entry)
        {
            var pe = entry as VpkEntry;

            if (pe == null)
            {
                throw new ArgumentException("This package is only compatible with VpkEntry objects.");
            }
            return(new BufferedStream(new VpkEntryStream(pe, this)));
        }
Exemplo n.º 7
0
        public Stream OpenStream(IPackageEntry entry)
        {
            var pe = entry as ZipEntry;

            if (pe == null)
            {
                throw new ArgumentException("This package is only compatible with ZipEntry objects.");
            }
            return(pe.Entry.GetStream(OpenFile(PackageFile)));
        }
Exemplo n.º 8
0
        public Stream OpenStream(IPackageEntry entry)
        {
            var pe = entry as WadEntry;

            if (pe == null)
            {
                throw new ArgumentException("This package is only compatible with WadEntry objects.");
            }
            return(new WadImageStream(pe, this));
        }
Exemplo n.º 9
0
        private void SaveEntryOnFusion(
            IFusion fusion,
            IPackageEntry entry,
            FusePackConfig fusionConfig)
        {
            foreach (var filter in fusionFilters)
            {
                filter.BeforeAddEntry(fusionConfig, entry);
            }

            fusion.AddEntry(entry);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Adds an entry to the fusion package.
        /// </summary>
        /// <param name="entry">Entry to add.</param>
        /// <exception cref="ArgumentNullException">Throw when <paramref name="entry"/> is not set.</exception>
        /// <inheritdoc />
        public void AddEntry(IPackageEntry entry)
        {
            EnsureArg.IsNotNull(entry, nameof(entry));

            var newEntry = archive.CreateEntry(entry.Name);

            using (var entryStream = entry.Open())
                using (var newEntryStream = newEntry.Open())
                {
                    entryStream.CopyTo(newEntryStream);
                }
        }
Exemplo n.º 11
0
        public Stream OpenStream(IPackageEntry entry)
        {
            var pe = entry as PakEntry;

            if (pe == null)
            {
                throw new ArgumentException("This package is only compatible with PakEntry objects.");
            }
            return(new BufferedStream(new SubStream(OpenFile(PackageFile), pe.Offset, pe.Length)
            {
                CloseParentOnDispose = true
            }));
        }
Exemplo n.º 12
0
        private IBinaryInfo BuildBinaryInfo(IList <IPackageEntry> fileInfos, IPackageEntry binaryFileInfo)
        {
            var binaryInfo = new BinaryInfo();

            binaryInfo.Name = Path.GetFileNameWithoutExtension(binaryFileInfo.FullPath);
            binaryInfo.Type = Path.GetExtension(binaryFileInfo.FullPath).Substring(1);
            binaryInfo.File = binaryFileInfo;

            using (var stream = binaryFileInfo.GetStream())
            {
                binaryInfo.Hash = binaryStoreManager.ReadBinaryHash(stream);
                stream.Seek(0, SeekOrigin.Begin);
                binaryInfo.SymbolHash = binaryStoreManager.ReadPdbHash(stream);
            }

            string symbolName     = Path.ChangeExtension(binaryFileInfo.FullPath, "pdb");
            var    symbolFileInfo = fileInfos.SingleOrDefault(s => s.FullPath == symbolName);

            if (symbolFileInfo != null)
            {
                var symbolInfo = new SymbolInfo();
                symbolInfo.Type = Path.GetExtension(symbolFileInfo.FullPath).Substring(1);
                symbolInfo.File = symbolFileInfo;

                using (var stream = symbolFileInfo.GetStream())
                    symbolInfo.Hash = symbolStoreManager.ReadHash(stream);

                symbolInfo.SourceInfos = sourceDiscover.FindSources(fileInfos, symbolInfo);
                binaryInfo.SymbolInfo  = symbolInfo;
            }

            string documentationName     = Path.ChangeExtension(binaryFileInfo.FullPath, "xml");
            var    documentationFileInfo = fileInfos.SingleOrDefault(s => s.FullPath == documentationName);

            if (documentationFileInfo != null)
            {
                var documentationInfo = new DocumentationInfo();
                documentationInfo.Type       = Path.GetExtension(documentationFileInfo.FullPath).Substring(1);
                documentationInfo.File       = documentationFileInfo;
                binaryInfo.DocumentationInfo = documentationInfo;
            }

            return(binaryInfo);
        }
        private IBinaryInfo BuildBinaryInfo(IAddInfo addInfo, IList<IPackageEntry> fileInfos, IPackageEntry binaryFileInfo)
        {
            var binaryInfo = new BinaryInfo(addInfo);

            binaryInfo.Name = Path.GetFileNameWithoutExtension(binaryFileInfo.FullPath);
            binaryInfo.Type = Path.GetExtension(binaryFileInfo.FullPath).Substring(1);
            binaryInfo.File = binaryFileInfo;

            using (var stream = binaryFileInfo.Stream)
            {
                binaryInfo.Hash = binaryStoreManager.ReadBinaryHash(stream);
                stream.Seek(0, SeekOrigin.Begin);
                binaryInfo.SymbolHash = binaryStoreManager.ReadPdbHash(stream);
            }

            string symbolName = Path.ChangeExtension(binaryFileInfo.FullPath, "pdb");
            var symbolFileInfo = fileInfos.SingleOrDefault(s => s.FullPath == symbolName);
            if (symbolFileInfo != null)
            {
                var symbolInfo = new SymbolInfo(binaryInfo);
                symbolInfo.Type = Path.GetExtension(symbolFileInfo.FullPath).Substring(1);
                symbolInfo.File = symbolFileInfo;

                using (var stream = symbolFileInfo.Stream)
                {
                    symbolInfo.Hash = symbolStoreManager.ReadHash(stream);
                }

                symbolInfo.SourceInfos = sourceDiscover.FindSources(fileInfos, binaryInfo, symbolInfo).OrderBy(s => s.KeyPath).ToArray();
                binaryInfo.SymbolInfo = symbolInfo;
            }

            string documentationName = Path.ChangeExtension(binaryFileInfo.FullPath, "xml");
            var documentationFileInfo = fileInfos.SingleOrDefault(s => s.FullPath == documentationName);
            if (documentationFileInfo != null)
            {
                var documentationInfo = new DocumentationInfo(binaryInfo);
                documentationInfo.Type = Path.GetExtension(documentationFileInfo.FullPath).Substring(1);
                documentationInfo.File = documentationFileInfo;
                binaryInfo.DocumentationInfo = documentationInfo;
            }

            return binaryInfo;
        }
Exemplo n.º 14
0
        public InlinePackageFile(string fileName)
        {
            switch (Path.GetExtension(fileName))
            {
            case ".pak":
                _package = new PakPackage(new FileInfo(fileName));
                break;

            case ".vpk":
                _package = new VpkDirectory(new FileInfo(fileName));
                break;

            default:
                throw new ArgumentException("This file format is not a valid inline package file.");
            }
            FilePath = "";
            _entry   = null;
            _files   = new HashSet <string>(_package.GetFiles(FilePath));
            _folders = new HashSet <string>(_package.GetDirectories(FilePath));
        }
Exemplo n.º 15
0
 public TransformingWrapperPackageEntry(IPackageEntry packageEntry, ITransformation transformation)
 {
     this.packageEntry   = packageEntry;
     this.transformation = transformation;
 }
Exemplo n.º 16
0
 public Stream OpenStream(IPackageEntry entry)
 {
     var pe = entry as VpkEntry;
     if (pe == null) throw new ArgumentException("This package is only compatible with VpkEntry objects.");
     return new BufferedStream(new VpkEntryStream(pe, this));
 }
 public TransformingWrapperPackageEntry(IPackageEntry packageEntry, ITransformation transformation)
 {
     this.packageEntry = packageEntry;
     this.transformation = transformation;
 }
Exemplo n.º 18
0
 public Stream OpenStream(IPackageEntry entry)
 {
     var pe = entry as PakEntry;
     if (pe == null) throw new ArgumentException("This package is only compatible with PakEntry objects.");
     return new BufferedStream(new SubStream(OpenFile(PackageFile), pe.Offset, pe.Length) { CloseParentOnDispose = true });
 }
Exemplo n.º 19
0
 public Stream OpenStream(IPackageEntry entry)
 {
     var pe = entry as WadEntry;
     if (pe == null) throw new ArgumentException("This package is only compatible with WadEntry objects.");
     return new WadImageStream(pe, this);
 }