示例#1
0
 /// <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));
 }
示例#2
0
 internal ReleaseNoteInfo(ReleaseSolutionInfo info)
 {
     SolutionName    = info.Solution.Solution.Name;
     PreviousVersion = info.PreviousVersion;
     Current         = info.CurrentReleaseInfo;
     ReleaseNote     = info.ReleaseNote;
 }
示例#3
0
 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);
 }