tgstation-server 6.17.0
The /tg/station 13 server suite
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Properties | Static Private Attributes | List of all members
Tgstation.Server.Api.Models.EngineVersion Class Referencesealed

Information about an engine installation. More...

Inheritance diagram for Tgstation.Server.Api.Models.EngineVersion:
Inheritance graph
[legend]
Collaboration diagram for Tgstation.Server.Api.Models.EngineVersion:
Collaboration graph
[legend]

Public Member Functions

 EngineVersion ()
 Initializes a new instance of the EngineVersion class.
 
 EngineVersion (EngineVersion other)
 Initializes a new instance of the EngineVersion class.
 
bool Equals (EngineVersion other)
 
override bool Equals (object obj)
 
override string ToString ()
 
override int GetHashCode ()
 

Static Public Member Functions

static bool TryParse (string input, out EngineVersion? engineVersion)
 Attempts to parse a stringified EngineVersion.
 
static EngineVersion Parse (string input)
 Parses a stringified EngineVersion.
 

Properties

EngineTypeEngine [get, set]
 The EngineType.
 
Version? Version [get, set]
 The System.Version of the engine. Currently only valid when Engine is EngineType.Byond.
 
string? SourceSHA [get, set]
 The git commit SHA of the engine. Currently only valid when Engine is EngineType.OpenDream.
 
int? CustomIteration [get, set]
 The revision of the custom build.
 

Static Private Attributes

static readonly char[] DashChar = ['-']
 An array of a single '-' char.
 

Detailed Description

Information about an engine installation.

Definition at line 13 of file EngineVersion.cs.

Constructor & Destructor Documentation

◆ EngineVersion() [1/2]

Tgstation.Server.Api.Models.EngineVersion.EngineVersion ( )

Initializes a new instance of the EngineVersion class.

Definition at line 140 of file EngineVersion.cs.

141 {
142 }

◆ EngineVersion() [2/2]

Tgstation.Server.Api.Models.EngineVersion.EngineVersion ( EngineVersion  other)

Initializes a new instance of the EngineVersion class.

Parameters
otherThe EngineVersion to copy.

Definition at line 148 of file EngineVersion.cs.

149 {
150 if (other == null)
151 throw new ArgumentNullException(nameof(other));
152
153 Version = other.Version;
154 Engine = other.Engine;
155 SourceSHA = other.SourceSHA;
156 CustomIteration = other.CustomIteration;
157 }
Version? Version
The System.Version of the engine. Currently only valid when Engine is EngineType.Byond.
string? SourceSHA
The git commit SHA of the engine. Currently only valid when Engine is EngineType.OpenDream.
int? CustomIteration
The revision of the custom build.

References Tgstation.Server.Api.Models.EngineVersion.CustomIteration, Tgstation.Server.Api.Models.EngineVersion.Engine, Tgstation.Server.Api.Models.EngineVersion.SourceSHA, and Tgstation.Server.Api.Models.EngineVersion.Version.

Member Function Documentation

◆ Equals() [1/2]

bool Tgstation.Server.Api.Models.EngineVersion.Equals ( EngineVersion  other)

Definition at line 160 of file EngineVersion.cs.

161 {
162 // https://github.com/dotnet/roslyn-analyzers/issues/2875
163#pragma warning disable CA1062 // Validate arguments of public methods
164 return other!.Version?.Semver() == Version?.Semver()
165 && other.Engine == Engine
166 && (other.SourceSHA == SourceSHA
167 || (other.SourceSHA != null
168 && SourceSHA != null
169 && other.SourceSHA.Equals(SourceSHA, StringComparison.OrdinalIgnoreCase)))
170 && other.CustomIteration == CustomIteration;
171#pragma warning restore CA1062 // Validate arguments of public methods
172 }

References Tgstation.Server.Api.Models.EngineVersion.CustomIteration, Tgstation.Server.Api.Models.EngineVersion.Engine, Tgstation.Server.Api.Models.EngineVersion.SourceSHA, and Tgstation.Server.Api.Models.EngineVersion.Version.

Referenced by Tgstation.Server.Host.Components.Engine.EngineManager.DeleteVersion().

Here is the caller graph for this function:

◆ Equals() [2/2]

override bool Tgstation.Server.Api.Models.EngineVersion.Equals ( object  obj)

◆ GetHashCode()

override int Tgstation.Server.Api.Models.EngineVersion.GetHashCode ( )

◆ Parse()

static EngineVersion Tgstation.Server.Api.Models.EngineVersion.Parse ( string  input)
static

Parses a stringified EngineVersion.

Parameters
inputThe input string.
Returns
The output EngineVersion.
Exceptions
InvalidOperationExceptionIf the input is not a valid stringified EngineVersion.

Definition at line 126 of file EngineVersion.cs.

127 {
128 if (input == null)
129 throw new ArgumentNullException(nameof(input));
130
131 if (TryParse(input, out var engineVersion))
132 return engineVersion!;
133
134 throw new InvalidOperationException($"Invalid engine version: {input}");
135 }
static bool TryParse(string input, out EngineVersion? engineVersion)
Attempts to parse a stringified EngineVersion.

References Tgstation.Server.Api.Models.EngineVersion.TryParse().

Referenced by Tgstation.Server.Host.Components.Chat.Commands.EngineCommand.Invoke().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToString()

override string Tgstation.Server.Api.Models.EngineVersion.ToString ( )

Definition at line 179 of file EngineVersion.cs.

180 {
181 var isByond = Engine == EngineType.Byond;
182
183 // BYOND encodes differently for backwards compatibility
184 var enginePrefix = !isByond
185 ? $"{Engine}-"
186 : String.Empty;
187 var displayedVersion = isByond
188 ? (CustomIteration.HasValue
189 ? new Version(Version!.Major, Version.Minor, CustomIteration.Value)
190 : Version!).ToString()
191 : SourceSHA;
192 var displayedCustomIteration = !isByond && CustomIteration.HasValue
193 ? $"-{CustomIteration}"
194 : String.Empty;
195 return $"{enginePrefix}{displayedVersion}{displayedCustomIteration}";
196 }
EngineType
The type of engine the codebase is using.
Definition EngineType.cs:7

References Tgstation.Server.Api.Models.EngineVersion.CustomIteration, Tgstation.Server.Api.Models.EngineVersion.Engine, Tgstation.Server.Api.Models.EngineVersion.SourceSHA, Tgstation.Server.Api.Models.EngineVersion.ToString(), and Tgstation.Server.Api.Models.EngineVersion.Version.

Referenced by Tgstation.Server.Host.Components.Engine.EngineManager.AssertAndLockVersion(), Tgstation.Server.Host.Components.Engine.EngineManager.ChangeVersion(), Tgstation.Server.Host.Components.Engine.EngineManager.DeleteVersion(), Tgstation.Server.Host.Components.Engine.EngineManager.InstallVersionFiles(), Tgstation.Server.Host.Components.Deployment.DreamMaker.RunCompileJob(), Tgstation.Server.Host.Components.Engine.EngineManager.StartAsync(), and Tgstation.Server.Api.Models.EngineVersion.ToString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TryParse()

static bool Tgstation.Server.Api.Models.EngineVersion.TryParse ( string  input,
out EngineVersion engineVersion 
)
static

Attempts to parse a stringified EngineVersion.

Parameters
inputThe input string.
engineVersionThe output EngineVersion.
Returns
true if parsing was successful, false otherwise.

Definition at line 53 of file EngineVersion.cs.

54 {
55 if (input == null)
56 throw new ArgumentNullException(nameof(input));
57
58 var splits = input.Split(DashChar, StringSplitOptions.RemoveEmptyEntries);
59 engineVersion = null;
60
61 if (splits.Length > 3)
62 return false;
63
64 EngineType engine;
65 var hasPrefix = splits.Length > 1;
66 if (hasPrefix)
67 {
68 if (!Enum.TryParse(splits[0], out engine))
69 return false;
70 }
71 else
72 engine = EngineType.Byond;
73
74 Version? version;
75 string? sha;
76 int? customRev = null;
77 if (engine == EngineType.Byond)
78 {
79 if (!Version.TryParse(splits.Last(), out version))
80 return false;
81
82 if (version.Build > 0)
83 {
84 customRev = version.Build;
85 version = new Version(version.Major, version.Minor);
86 }
87
88 sha = null;
89 }
90 else
91 {
92 Debug.Assert(engine == EngineType.OpenDream, "This does not support whatever ungodly new engine you've added");
93
94 var shaIndex = hasPrefix ? 1 : 0;
95 sha = splits[shaIndex];
96 if (sha.Length != Limits.MaximumCommitShaLength)
97 return false;
98
99 version = null;
100
101 if (splits.Length - 1 > shaIndex)
102 {
103 if (!Int32.TryParse(splits.Last(), out var customRevResult))
104 return false;
105
106 customRev = customRevResult;
107 }
108 }
109
110 engineVersion = new EngineVersion
111 {
112 Engine = engine,
113 Version = version,
114 SourceSHA = sha,
115 CustomIteration = customRev,
116 };
117 return true;
118 }
EngineVersion()
Initializes a new instance of the EngineVersion class.
static readonly char[] DashChar
An array of a single '-' char.

References Tgstation.Server.Api.Models.EngineVersion.CustomIteration, Tgstation.Server.Api.Models.EngineVersion.DashChar, Tgstation.Server.Api.Models.EngineVersion.Engine, Tgstation.Server.Api.Models.Limits.MaximumCommitShaLength, Tgstation.Server.Api.Models.EngineVersion.SourceSHA, and Tgstation.Server.Api.Models.EngineVersion.Version.

Referenced by Tgstation.Server.Host.Components.Deployment.DmbFactory.FromCompileJobInternal(), Tgstation.Server.Api.Models.EngineVersion.Parse(), and Tgstation.Server.Host.Components.Engine.EngineManager.StartAsync().

Here is the caller graph for this function:

Member Data Documentation

◆ DashChar

readonly char [] Tgstation.Server.Api.Models.EngineVersion.DashChar = ['-']
staticprivate

An array of a single '-' char.

Definition at line 18 of file EngineVersion.cs.

Referenced by Tgstation.Server.Api.Models.EngineVersion.TryParse().

Property Documentation

◆ CustomIteration

int? Tgstation.Server.Api.Models.EngineVersion.CustomIteration
getset

◆ Engine

EngineType? Tgstation.Server.Api.Models.EngineVersion.Engine
getset

◆ SourceSHA

string? Tgstation.Server.Api.Models.EngineVersion.SourceSHA
getset

The git commit SHA of the engine. Currently only valid when Engine is EngineType.OpenDream.

caa1e1f400c8b6a535e03cff28cf57f919e9378c

Definition at line 39 of file EngineVersion.cs.

39{ get; set; }

Referenced by Tgstation.Server.Api.Models.EngineVersion.EngineVersion(), Tgstation.Server.Api.Models.EngineVersion.Equals(), Tgstation.Server.Api.Models.EngineVersion.ToString(), and Tgstation.Server.Api.Models.EngineVersion.TryParse().

◆ Version

Version? Tgstation.Server.Api.Models.EngineVersion.Version
getset

The documentation for this class was generated from the following file: