public static ComplexVersion Parse(string verStr) { ComplexVersion ver = null; if (verStr != null) { var splitVerStr = verStr.Split(new char[] { '-' }, 2); var strongVerStr = splitVerStr[0]; var prerelVerStr = splitVerStr.Length > 1 ? splitVerStr[1] : null; Version strongVer; if (Version.TryParse(strongVerStr, out strongVer)) { ver = new ComplexVersion() { StrongVersion = strongVer, Prerelease = prerelVerStr }; } } return(ver); }
public static ProjectJsonDependencyInfo MergeToLatest(IEnumerable <ProjectJsonDependencyInfo> projectJsons, string oldprerelease = null, string newprerelease = null) { var merged = new ProjectJsonDependencyInfo(); merged.dependencies = new Dictionary <string, string>(); foreach (var pjson in projectJsons) { if (pjson.dependencies != null) { foreach (var depend in pjson.dependencies) { var depVer = ComplexVersion.Parse(depend.Value); if (newprerelease != null && depVer.Prerelease == oldprerelease) { depVer.Prerelease = newprerelease; } //if the dependency is not present in the merged dependencies OR the version in the current pjson is a greater than the one in merged //if string.Compare returns > 0 then depend.Value is greater than the one in merged, this should mean a later version if (!merged.dependencies.ContainsKey(depend.Key) || (ComplexVersion.Parse(merged.dependencies[depend.Key]) < depVer)) { merged.dependencies[depend.Key] = depVer.ToString(); } } } } return(merged); }
public static ComplexVersion Parse(string verStr) { ComplexVersion ver = null; if(verStr != null) { var splitVerStr = verStr.Split(new char[] { '-' }, 2); var strongVerStr = splitVerStr[0]; var prerelVerStr = splitVerStr.Length > 1 ? splitVerStr[1] : null; Version strongVer; if(Version.TryParse(strongVerStr, out strongVer)) { ver = new ComplexVersion() { StrongVersion = strongVer, Prerelease = prerelVerStr }; } } return ver; }