/// <summary> /// Gets the requirements. /// </summary> /// <param name="nuGetPackage">The NuGet package.</param> /// <returns> /// The requirements. /// </returns> protected Models.Umbraco.UmbPackageInfoPackageRequirements GetRequirements(Models.NuGet.Package nuGetPackage) { var dependencies = nuGetPackage.Metadata.Dependencies.Items.OfType <Models.NuGet.DependencyGroup>().SelectMany(dg => dg.Dependency) .Union(nuGetPackage.Metadata.Dependencies.Items.OfType <Models.NuGet.Dependency>()); var umbracoDependency = dependencies.FirstOrDefault(d => d.Id == "UmbracoCms") ?? dependencies.FirstOrDefault(d => d.Id == "UmbracoCms.Core"); if (umbracoDependency != null && Version.TryParse(umbracoDependency.Version, out Version umbracoVersion)) { return(new Models.Umbraco.UmbPackageInfoPackageRequirements() { Major = (byte)umbracoVersion.Major, Minor = (byte)umbracoVersion.Minor, Patch = (byte)umbracoVersion.Build }); } return(null); }
/// <summary> /// Gets the files. /// </summary> /// <param name="nuGetPackage">The NuGet package.</param> /// <returns> /// The files. /// </returns> protected IEnumerable <Models.Umbraco.UmbPackageFile> GetFiles(Models.NuGet.Package nuGetPackage) { // Return library (bin) files with framework preference var libFrameworkFiles = nuGetPackage.Files.Where(f => f.Target.StartsWith("lib\\")).GroupBy(f => f.Target.Split('\\')[1]).ToDictionary(fg => fg.Key, fg => fg.AsEnumerable()); foreach (var framework in new[] { "net45", "netstandard1.1", "netstandard1.0", "net403", "net40", "net35", "net20", "net11" }) { if (libFrameworkFiles.TryGetValue(framework, out IEnumerable <Models.NuGet.PackageFile> libFiles)) { foreach (var libFile in libFiles) { var target = "bin" + libFile.Target.Substring(("lib\\" + framework).Length); yield return(new Models.Umbraco.UmbPackageFile() { Guid = libFile.Src, OrgPath = Path.GetDirectoryName(target).Replace("\\", "/"), OrgName = Path.GetFileName(target) }); } break; } } // Return content files var contentFiles = nuGetPackage.Files.Where(f => f.Target.StartsWith("content\\")); foreach (var contentFile in contentFiles) { var target = contentFile.Target.Substring("content\\".Length); yield return(new Models.Umbraco.UmbPackageFile() { Guid = contentFile.Src, OrgPath = Path.GetDirectoryName(target).Replace("\\", "/"), OrgName = Path.GetFileName(target) }); } }