teamlead-dashboard/src/TUI/Domain/Version.cs

55 lines
1.4 KiB
C#
Raw Normal View History

2024-06-14 11:02:21 +00:00
using TUI.Controls.Components;
using TUI.Engine;
2024-06-14 11:02:21 +00:00
namespace TUI.Domain;
public class Version
{
public readonly int Major;
public readonly int Minor;
public readonly int Patch;
public readonly VersionType Type;
2024-06-14 11:02:21 +00:00
public Version(string version)
{
var parts = version.Split('.');
2024-12-10 13:54:29 +00:00
if (parts.Length == 0)
{
return;
}
Major = Convert.ToInt32(parts[0].RemoveVersionPrefix());
2024-12-10 13:54:29 +00:00
2024-12-10 14:10:17 +00:00
if (version.StartsWith("^"))
{
Type = VersionType.Unstable;
}
2024-12-10 13:54:29 +00:00
if (parts.Length == 1)
{
return;
}
2024-06-14 11:02:21 +00:00
Minor = Convert.ToInt32(parts[1]);
2024-12-10 13:54:29 +00:00
if (parts.Length == 2)
{
return;
}
2024-06-14 11:02:21 +00:00
Patch = Convert.ToInt32(string.Join("", parts[2].TakeWhile(char.IsDigit)));
2024-06-14 11:02:21 +00:00
var extension = parts[2].Replace(Patch.ToString(), "");
2024-06-14 11:02:21 +00:00
Type = extension switch
{
not null when extension.Contains("rc") => VersionType.Candidate,
not null when extension.Contains("beta") => VersionType.Beta,
not null when extension.Contains("alpha") => VersionType.Alpha,
not null when extension.Contains("canary") => VersionType.Canary,
not null when extension.Contains("next") => VersionType.Next,
2024-12-10 14:10:17 +00:00
_ => version.StartsWith("^") ? VersionType.Unstable : VersionType.Release
2024-06-14 11:02:21 +00:00
};
}
}