private void updateSpecification(CreatePackagesInput input, SpecGroup group, IEnumerable <SpecGroup> groups) { var spec = group.Spec; var local = Solution.LocalDependencies(); var nuspec = new NuspecDocument(spec.Filename); group .DetermineDependencies() .Each(dependency => { var localDependency = local.Get(dependency); var constraint = Solution.ConstraintFor(dependency); var version = constraint.SpecFor(localDependency.Version); var nuspecDep = new NuspecDependency(dependency.Name, version); RippleLog.Info("Adding dependency: " + nuspecDep); nuspec.AddDependency(nuspecDep); }); group .Projects .SelectMany(project => project.References) .Each(projectRef => { var target = groups.FirstOrDefault(x => x.Projects.Contains(projectRef)); if (target == null) { return; } // TODO -- Do we need another setting for project references? var constraint = Solution.NuspecSettings.Float; var version = constraint.SpecFor(new SemanticVersion(input.VersionFlag)); var nuspecDep = new NuspecDependency(target.Spec.Name, version); RippleLog.Info("Adding dependency: " + nuspecDep); nuspec.AddDependency(nuspecDep); }); nuspec.SaveChanges(); }
protected override bool Validate(NuspecDependency nuspecDependency, NuspecDependency packageDependency, out string message) { // No Max => major updates are allowed if (nuspecDependency.MaxVersion == null) { message = $"Package '{nuspecDependency.Name}' does not specify a upper version, which means every major update is allowed."; return(false); } // Version Range with inclusive max if (nuspecDependency.MaxVersion.Major > nuspecDependency.MinVersion.Major && nuspecDependency.MaxVersion.Inclusive) { message = $"Package dependency '{nuspecDependency.Name}' allows major updates."; return(false); } message = null; return(true); }
protected override bool Validate(NuspecDependency nuspecDependency, NuspecDependency nuConfigPackage, out string message) { var specMin = nuspecDependency.MinVersion; var specMax = nuspecDependency.MaxVersion; if (specMax == null) { message = $"Cannot evaluate rule for '{nuspecDependency.Name}' if no max range is set"; return(false); } if (specMin.Major != specMax.Major || (specMin.Major == specMax.Major && specMin.Minor != specMax.Minor && specMax.Inclusive)) { message = $"Package dependency '{nuspecDependency.Name}' more than bug-fix dependencies ({nuspecDependency.Version})!"; return(false); } message = string.Empty; return(true); }