public static VersionIncrementStrategy CreateFrom(IEnumerable <ConventionalCommit> conventionalCommits)
        {
            // TODO: Quick and dirty implementation - Conventions? Better comparison?
            var versionImpact = VersionImpact.None;

            foreach (var conventionalCommit in conventionalCommits)
            {
                if (!string.IsNullOrWhiteSpace(conventionalCommit.Type))
                {
                    if (conventionalCommit.IsFix)
                    {
                        versionImpact = MaxVersionImpact(versionImpact, VersionImpact.Patch);
                    }
                    else if (conventionalCommit.IsFeature)
                    {
                        versionImpact = MaxVersionImpact(versionImpact, VersionImpact.Minor);
                    }
                }

                if (conventionalCommit.IsBreakingChange)
                {
                    versionImpact = MaxVersionImpact(versionImpact, VersionImpact.Major);
                }
            }

            return(new VersionIncrementStrategy(versionImpact));
        }
 private bool IsWithinPrereleaseVersionRange(SemanticVersion version, VersionImpact versionImpact)
 {
     return(versionImpact switch {
         VersionImpact.None => true,
         VersionImpact.Patch => true,
         VersionImpact.Minor => version.Patch == 0,
         VersionImpact.Major => version.Patch == 0 && version.Minor == 0,
         _ => throw new InvalidOperationException($"Version impact of {versionImpact} cannot be handled"),
     });
Example #3
0
 private static VersionImpact MaxVersionImpact(VersionImpact impact1, VersionImpact impact2)
 {
     return((VersionImpact)Math.Max((int)impact1, (int)impact2));
 }
Example #4
0
 private VersionIncrementStrategy(VersionImpact versionImpact)
 {
     _versionImpact = versionImpact;
 }
 private VersionIncrementStrategy(VersionImpact impact, bool isMaster)
 {
     _impact   = impact;
     _isMaster = isMaster;
 }
 private static VersionImpact MaxImpact(VersionImpact left, VersionImpact right)
 {
     return((VersionImpact)Math.Max((int)left, (int)right));
 }