82 lines
2.4 KiB
C#
82 lines
2.4 KiB
C#
using System;
|
|
using System.Reflection;
|
|
|
|
namespace DiscordBotCore.Interfaces.Updater
|
|
{
|
|
public class AppVersion : IVersion
|
|
{
|
|
public static readonly AppVersion CurrentAppVersion = new AppVersion(Assembly.GetEntryAssembly().GetName().Version.ToString());
|
|
|
|
public int Major { get; set; }
|
|
public int Minor { get; set; }
|
|
public int Patch { get; set; }
|
|
public int PatchVersion { get; set; }
|
|
|
|
private readonly char _Separator = '.';
|
|
|
|
public AppVersion(string versionAsString)
|
|
{
|
|
string[] versionParts = versionAsString.Split(_Separator);
|
|
|
|
if (versionParts.Length != 4)
|
|
{
|
|
throw new ArgumentException("Invalid version string");
|
|
}
|
|
|
|
Major = int.Parse(versionParts[0]);
|
|
Minor = int.Parse(versionParts[1]);
|
|
Patch = int.Parse(versionParts[2]);
|
|
PatchVersion = int.Parse(versionParts[3]);
|
|
}
|
|
|
|
public bool IsNewerThan(IVersion version)
|
|
{
|
|
if (Major > version.Major)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor > version.Minor)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor == version.Minor && Patch > version.Patch)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor == version.Minor && Patch == version.Patch && PatchVersion > version.PatchVersion)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public bool IsOlderThan(IVersion version)
|
|
{
|
|
if (Major < version.Major)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor < version.Minor)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor == version.Minor && Patch < version.Patch)
|
|
return true;
|
|
|
|
if (Major == version.Major && Minor == version.Minor && Patch == version.Patch && PatchVersion < version.PatchVersion)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public bool IsEqualTo(IVersion version)
|
|
{
|
|
return Major == version.Major && Minor == version.Minor && Patch == version.Patch && PatchVersion == version.PatchVersion;
|
|
}
|
|
|
|
public string ToShortString()
|
|
{
|
|
return $"{Major}.{Minor}.{Patch}.{PatchVersion}";
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return ToShortString();
|
|
}
|
|
}
|
|
}
|