public VersionAnalysisResult AnalyzeVersions(AssemblyPublicInterface localPublicInterface, AssemblyPublicInterface onlinePublicInterface) { var result = new VersionAnalysisResult(); result.ActualBump = CompareVersions(onlinePublicInterface.Version, localPublicInterface.Version, result); result.CalculatedBump = AnalyzeInterfaces(onlinePublicInterface, localPublicInterface, result.Changes); return(result); }
static VersionBumpType CompareVersions(string online, string local, VersionAnalysisResult result) { if (online.MajorVersion() > local.MajorVersion()) { result.Comments.Add("Cannot downgrade major version."); return(VersionBumpType.Downgrade); } if (online.MajorVersion() < local.MajorVersion()) { if (local.MinorVersion() != 0) { result.Comments.Add("The minor version should be reset to 0 when bumping the major version."); } else if (local.PatchVersion() != 0) { result.Comments.Add("The patch version should be reset to 0 when bumping the major version."); } return(VersionBumpType.Major); } if (online.MinorVersion() > local.MinorVersion()) { result.Comments.Add("Cannot downgrade minor version."); return(VersionBumpType.Downgrade); } if (online.MinorVersion() < local.MinorVersion()) { if (local.PatchVersion() != 0) { result.Comments.Add("The patch version should be reset to 0 when bumping the minor version."); } return(VersionBumpType.Minor); } if (online.PatchVersion() > local.PatchVersion()) { result.Comments.Add("Cannot downgrade patch version."); return(VersionBumpType.Downgrade); } if (online.PatchVersion() < local.PatchVersion()) { return(VersionBumpType.Patch); } return(VersionBumpType.None); }