|
|
- using System;
- using System.Linq;
- using HVersion = Hive.Versioning.Version;
-
- namespace SemVer
- {
- [Obsolete("Use Hive.Versioning.Version instead.")]
- public class Version : IComparable<Version>, IComparable<HVersion>, IComparable, IEquatable<Version>, IEquatable<HVersion>
- {
- public HVersion UnderlyingVersion { get; }
-
- private Version(HVersion real) => UnderlyingVersion = real;
-
- public static Version ForHiveVersion(HVersion real) => new(real);
-
- public Version(string input, bool loose = false) : this(new HVersion(input))
- => _ = loose; // specifically unused because Hive has no equivalent (by design)
- public Version(int major, int minor, int patch, string? preRelease = null, string? build = null)
- : this(new HVersion(major, minor, patch,
- preRelease is null ? Enumerable.Empty<string>() : preRelease.Split('.'),
- build is null ? Enumerable.Empty<string>() : build.Split('.')))
- {
- }
-
- public int Major => (int)UnderlyingVersion.Major;
- public int Minor => (int)UnderlyingVersion.Minor;
- public int Patch => (int)UnderlyingVersion.Patch;
- public string PreRelease => string.Join(".", UnderlyingVersion.PreReleaseIds);
- public string Build => string.Join(".", UnderlyingVersion.BuildIds);
-
- public Version BaseVersion() => new(new(UnderlyingVersion.Major, UnderlyingVersion.Minor, UnderlyingVersion.Patch));
- public override string ToString() => UnderlyingVersion.ToString();
- public string Clean() => ToString(); // normally this is the other way around kek
- public override int GetHashCode() => UnderlyingVersion.GetHashCode();
- public bool Equals(Version? other) => UnderlyingVersion.Equals(other?.UnderlyingVersion);
- public bool Equals(HVersion? other) => UnderlyingVersion.Equals(other);
- public override bool Equals(object? obj)
- => obj switch
- {
- Version v => Equals(v),
- HVersion h => Equals(h),
- _ => false
- };
-
- public int CompareTo(Version? other) => UnderlyingVersion.CompareTo(other?.UnderlyingVersion);
- public int CompareTo(HVersion? other) => UnderlyingVersion.CompareTo(other);
- public int CompareTo(object? obj)
- => obj switch
- {
- null => 1,
- Version v => CompareTo(v),
- HVersion h => CompareTo(h),
- _ => throw new ArgumentException("Object is not a Version")
- };
-
- public static bool operator ==(Version? a, Version? b)
- => a?.UnderlyingVersion == b?.UnderlyingVersion;
- public static bool operator !=(Version? a, Version? b)
- => a?.UnderlyingVersion != b?.UnderlyingVersion;
-
- public static bool operator >(Version? a, Version? b)
- => a is null ? b is not null && b.CompareTo(a) < 0 : a.CompareTo(b) > 0;
- public static bool operator >=(Version? a, Version? b)
- => !(a < b);
- public static bool operator <(Version? a, Version? b)
- => a is null ? b is not null && b.CompareTo(a) > 0 : a.CompareTo(b) < 0;
- public static bool operator <=(Version? a, Version? b)
- => !(a > b);
- }
- }
|