Skip to content

Commit

Permalink
address feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
nkolev92 committed Feb 27, 2020
1 parent 5aa07f8 commit dad63c9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 56 deletions.
88 changes: 43 additions & 45 deletions src/NuGet.Core/NuGet.Versioning/FloatRange.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ namespace NuGet.Versioning
/// </summary>
public class FloatRange : IEquatable<FloatRange>
{
private readonly NuGetVersion _minVersion;
private readonly NuGetVersionFloatBehavior _floatBehavior;
private readonly string _releasePrefix;

/// <summary>
/// Create a floating range.
Expand Down Expand Up @@ -43,37 +40,38 @@ public FloatRange(NuGetVersionFloatBehavior floatBehavior, NuGetVersion minVersi
/// <param name="releasePrefix">The original release label. Invalid labels are allowed here.</param>
public FloatRange(NuGetVersionFloatBehavior floatBehavior, NuGetVersion minVersion, string releasePrefix)
{
_floatBehavior = floatBehavior;
_minVersion = minVersion;
_releasePrefix = releasePrefix;
FloatBehavior = floatBehavior;
MinVersion = minVersion;
OriginalReleasePrefix = releasePrefix;

if (_releasePrefix == null
if (OriginalReleasePrefix == null
&& minVersion != null
&& minVersion.IsPrerelease)
{
// use the actual label if one was not given
_releasePrefix = minVersion.Release;
OriginalReleasePrefix = minVersion.Release;
}
}

/// <summary>
/// True if a min range exists.
/// </summary>
public bool HasMinVersion => _minVersion != null;
public bool HasMinVersion => MinVersion != null;

/// <summary>
/// The minimum version of the float range. This is null for cases such as *
/// </summary>
public NuGetVersion MinVersion => _minVersion;
public NuGetVersion MinVersion { get; private set; }

/// <summary>
/// Defined float behavior
/// </summary>
public NuGetVersionFloatBehavior FloatBehavior => _floatBehavior;
public NuGetVersionFloatBehavior FloatBehavior { get; private set; }

/// <summary>
/// The original release label. Invalid labels are allowed here.
/// </summary>
public string OriginalReleasePrefix => _releasePrefix;
public string OriginalReleasePrefix { get; private set; }

/// <summary>
/// True if the given version falls into the floating range.
Expand All @@ -85,73 +83,73 @@ public bool Satisfies(NuGetVersion version)
throw new ArgumentNullException(nameof(version));
}

if (_floatBehavior == NuGetVersionFloatBehavior.AbsoluteLatest)
if (FloatBehavior == NuGetVersionFloatBehavior.AbsoluteLatest)
{
return true;
}

if (_floatBehavior == NuGetVersionFloatBehavior.Major
if (FloatBehavior == NuGetVersionFloatBehavior.Major
&& !version.IsPrerelease)
{
return true;
}

if (_minVersion != null)
if (MinVersion != null)
{
// everything beyond this point requires a version
if (_floatBehavior == NuGetVersionFloatBehavior.PrereleaseRevision)
if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseRevision)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& _minVersion.Patch == version.Patch
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
return MinVersion.Major == version.Major
&& MinVersion.Minor == version.Minor
&& MinVersion.Patch == version.Patch
&& ((version.IsPrerelease && version.Release.StartsWith(OriginalReleasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (_floatBehavior == NuGetVersionFloatBehavior.PrereleasePatch)
else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleasePatch)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
return MinVersion.Major == version.Major
&& MinVersion.Minor == version.Minor
&& ((version.IsPrerelease && version.Release.StartsWith(OriginalReleasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMinor)
{
// allow the stable version to match
return _minVersion.Major == version.Major
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
return MinVersion.Major == version.Major
&& ((version.IsPrerelease && version.Release.StartsWith(OriginalReleasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (FloatBehavior == NuGetVersionFloatBehavior.PrereleaseMajor)
{
// allow the stable version to match
return (version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
return (version.IsPrerelease && version.Release.StartsWith(OriginalReleasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Prerelease)
else if (FloatBehavior == NuGetVersionFloatBehavior.Prerelease)
{
// allow the stable version to match
return VersionComparer.Version.Equals(_minVersion, version)
&& ((version.IsPrerelease && version.Release.StartsWith(_releasePrefix, StringComparison.OrdinalIgnoreCase))
return VersionComparer.Version.Equals(MinVersion, version)
&& ((version.IsPrerelease && version.Release.StartsWith(OriginalReleasePrefix, StringComparison.OrdinalIgnoreCase))
|| !version.IsPrerelease);
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Revision)
else if (FloatBehavior == NuGetVersionFloatBehavior.Revision)
{
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
&& _minVersion.Patch == version.Patch
return MinVersion.Major == version.Major
&& MinVersion.Minor == version.Minor
&& MinVersion.Patch == version.Patch
&& !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Patch)
else if (FloatBehavior == NuGetVersionFloatBehavior.Patch)
{
return _minVersion.Major == version.Major
&& _minVersion.Minor == version.Minor
return MinVersion.Major == version.Major
&& MinVersion.Minor == version.Minor
&& !version.IsPrerelease;
}
else if (_floatBehavior == NuGetVersionFloatBehavior.Minor)
else if (FloatBehavior == NuGetVersionFloatBehavior.Minor)
{
return _minVersion.Major == version.Major
return MinVersion.Major == version.Major
&& !version.IsPrerelease;
}
}
Expand Down Expand Up @@ -321,13 +319,13 @@ public static bool TryParse(string versionString, out FloatRange range)
public override string ToString()
{
var result = string.Empty;
switch (_floatBehavior)
switch (FloatBehavior)
{
case NuGetVersionFloatBehavior.None:
result = MinVersion.ToNormalizedString();
break;
case NuGetVersionFloatBehavior.Prerelease:
result = string.Format(VersionFormatter.Instance, "{0:V}-{1}*", MinVersion, _releasePrefix);
result = string.Format(VersionFormatter.Instance, "{0:V}-{1}*", MinVersion, OriginalReleasePrefix);
break;
case NuGetVersionFloatBehavior.Revision:
result = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.*", MinVersion.Major, MinVersion.Minor, MinVersion.Patch);
Expand All @@ -342,16 +340,16 @@ public override string ToString()
result = "*";
break;
case NuGetVersionFloatBehavior.PrereleaseRevision:
result = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.*-{3}*", MinVersion.Major, MinVersion.Minor, MinVersion.Patch, _releasePrefix);
result = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.{2}.*-{3}*", MinVersion.Major, MinVersion.Minor, MinVersion.Patch, OriginalReleasePrefix);
break;
case NuGetVersionFloatBehavior.PrereleasePatch:
result = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.*-{2}*", MinVersion.Major, MinVersion.Minor, _releasePrefix);
result = string.Format(CultureInfo.InvariantCulture, "{0}.{1}.*-{2}*", MinVersion.Major, MinVersion.Minor, OriginalReleasePrefix);
break;
case NuGetVersionFloatBehavior.PrereleaseMinor:
result = string.Format(CultureInfo.InvariantCulture, "{0}.*-{1}*", MinVersion.Major, _releasePrefix);
result = string.Format(CultureInfo.InvariantCulture, "{0}.*-{1}*", MinVersion.Major, OriginalReleasePrefix);
break;
case NuGetVersionFloatBehavior.PrereleaseMajor:
result = string.Format(CultureInfo.InvariantCulture, "*-{1}*", MinVersion.Major, _releasePrefix);
result = string.Format(CultureInfo.InvariantCulture, "*-{1}*", MinVersion.Major, OriginalReleasePrefix);
break;
case NuGetVersionFloatBehavior.AbsoluteLatest:
result = "*-*";
Expand Down
11 changes: 0 additions & 11 deletions src/NuGet.Core/NuGet.Versioning/VersionRangeFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,6 @@ public static bool TryParse(string value, bool allowFloating, out VersionRange v
return false;
}

// Special case *-*
if (allowFloating
&& charArray.Length == 3
&& charArray[0] == '*'
&& charArray[0] == '-'
&& charArray[0] == '*')
{
versionRange = new VersionRange(new NuGetVersion("0.0.0-0"), true, null, true, FloatRange.Parse(trimmedValue), originalString: value);
return true;
}

string minVersionString = null;
string maxVersionString = null;
var isMinInclusive = false;
Expand Down

0 comments on commit dad63c9

Please sign in to comment.