private static Yield Create_Helper(Plug dekiApi, int relto, string reltopath, IPackageReader packager, Result<ImportManager> result) { Result<XDoc> manifestResult; yield return manifestResult = packager.ReadManifest(new Result<XDoc>()); Result<Importer> importerResult; if(string.IsNullOrEmpty(reltopath)) { yield return importerResult = Importer.CreateAsync(dekiApi, manifestResult.Value, relto, new Result<Importer>()); } else { yield return importerResult = Importer.CreateAsync(dekiApi, manifestResult.Value, reltopath, new Result<Importer>()); } result.Return(new ImportManager(importerResult.Value, packager)); yield break; }
public PackageManifest GetManifest(PackageKey key, NuGet.Frameworks.NuGetFramework projectFramework) { if (key.Framework != null) { var fullPath = Path.Combine(RootPath, key.GetFileName()); if (!File.Exists(fullPath)) { throw new FileNotFoundException("package not found"); } using (IPackageReader reader = _packageReaderFactory.Get(RepositoryType.Pundit, File.OpenRead(fullPath))) return(reader.ReadManifest()); } // From here on, we resolve packages that come from a NuGet package and therefore, have no FW var filePattern = key.GetNoFrameworkFileName(); var results = new DirectoryInfo(RootPath).GetFiles(filePattern).ToArray(); if (results.Length == 0) { return(null); } var matches = 0; foreach (var info in results) { var tempKey = PackageExtensions.GetPackageKeyFromFileName(info.Name); var nearestFw = NuGet.Frameworks.NuGetFrameworkUtility.GetNearest(new[] { new FakedFrameworkGroup(tempKey.Framework) }, projectFramework); if (nearestFw.TargetFramework.GetShortFolderName() == tempKey.Framework) { matches++; } } if (matches != 1) { throw new NotSupportedException("Error, 0 or more than 1 package found matching the framework."); } using (IPackageReader reader = _packageReaderFactory.Get(RepositoryType.Pundit, File.OpenRead(results[0].FullName))) return(reader.ReadManifest()); }
private static Yield Create_Helper(Plug dekiApi, int relto, string reltopath, IPackageReader packager, Result <ImportManager> result) { Result <XDoc> manifestResult; yield return(manifestResult = packager.ReadManifest(new Result <XDoc>())); Result <Importer> importerResult; if (string.IsNullOrEmpty(reltopath)) { yield return(importerResult = Importer.CreateAsync(dekiApi, manifestResult.Value, relto, new Result <Importer>())); } else { yield return(importerResult = Importer.CreateAsync(dekiApi, manifestResult.Value, reltopath, new Result <Importer>())); } result.Return(new ImportManager(importerResult.Value, packager)); yield break; }