public void Parse(string line, WrapDescriptor descriptor) { var bits = line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); if (bits == null || bits.Length < 2 || string.Compare(bits[0], "depends", StringComparison.OrdinalIgnoreCase) != 0) return; var packageName = bits[1]; // Versions are always in the format // comparator version ('and' comparator version)* //List<VersionVertice> vertices = new List<VersionVertice>(); //if (bits.Length - 2 >= 2) //{ // vertices.Add(GetVersionVertice(bits, 2)); // for (int i = 0; i < (bits.Length - 4) / 3; i++) // if (string.Compare(bits[4], "and", StringComparison.OrdinalIgnoreCase) == 0) // vertices.Add(GetVersionVertice(bits, 5 + (i * 3))); //} //else //{ // vertices.Add(new AnyVersionVertice(null)); //} descriptor.Dependencies.Add(new WrapDependency { Name = packageName, VersionVertices = Parse(bits.Skip(2).ToArray()).ToList() }); }
public IEnumerable<IAssemblyReferenceExportItem> GetAssemblyReferences(WrapDescriptor descriptor, IWrapRepository repository, IWrapAssemblyClient client) { return (from dependency in descriptor.Dependencies let package = repository.Find(dependency) where package != null let items = package.Load().GetExport("bin", client.Environment).Items.OfType<IAssemblyReferenceExportItem>() select items).SelectMany(x => x); }
void LoadDescriptor() { using (var zip = new ZipFile(_wrapFile.FullName)) { var descriptor = zip.Cast<ZipEntry>().FirstOrDefault(x => x.Name.EndsWith(".wrapdesc")); if (descriptor == null) throw new InvalidOperationException("The package '{0}' doesn't contain a valid .wrapdesc file."); using (var stream = zip.GetInputStream(descriptor)) Descriptor = new WrapDescriptorParser().ParseFile(descriptor.Name, stream); } }