/// <summary> /// Creates a new <see cref="ReleaseRoadmap"/> for a <see cref="IWorldSolutionContext"/>. /// </summary> /// <param name="m">The monitor to use.</param> /// <param name="ctx">The context.</param> /// <returns>Null on error.</returns> public static ReleaseRoadmap Create( IActivityMonitor m, IWorldSolutionContext ctx, XElement previous = null, bool restorePreviousState = true) { if (ctx == null) { throw new ArgumentNullException(nameof(ctx)); } ReleaseSolutionInfo[] infos = new ReleaseSolutionInfo[ctx.Solutions.Count]; foreach (var(s, d) in ctx.Solutions) { var v = d.GitRepository.GetCommitVersionInfo(m); if (v == null) { m.Error($"Unable to get Commit version information for solution {s.Solution}."); return(null); } infos[s.Index] = new ReleaseSolutionInfo(d.GitRepository, s, v, previous? .Elements() .FirstOrDefault(e => (string)e.Attribute("Name") == s.Solution.Name)); } return(new ReleaseRoadmap(ctx, infos)); }
internal ReleaseNoteInfo(ReleaseSolutionInfo info) { SolutionName = info.Solution.Solution.Name; PreviousVersion = info.PreviousVersion; Current = info.CurrentReleaseInfo; ReleaseNote = info.ReleaseNote; }
public SelectorContext( ReleaseSolutionInfo info, ReleaseInfo requirements, IReadOnlyList <CSVersion> possibles) { _info = info; Requirements = requirements; _possible = new PossibleVersions(requirements, info._commitVersionInfo.PreviousVersion, possibles); CanUsePreviouslyResolvedInfo = info._previouslyResolvedInfo.IsValid && info._previouslyResolvedInfo.IsCompatibleWith(requirements.Level, requirements.Constraint) && _possible.AllPossibleVersions.Contains(info._previouslyResolvedInfo.Version); }