Add VersionType class for SOSVS
This commit is contained in:
parent
9b264ca6cc
commit
70e81a7a2c
2 changed files with 175 additions and 0 deletions
|
@ -0,0 +1,148 @@
|
||||||
|
/*
|
||||||
|
* STAROPENSOURCE ENGINE SOURCE FILE
|
||||||
|
* Copyright (c) 2024 The StarOpenSource Engine Authors
|
||||||
|
* Licensed under the GNU Affero General Public License v3
|
||||||
|
* with an exception allowing classpath linking.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.staropensource.engine.base.type.versioning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains all version types of all
|
||||||
|
* [SOSVS](z.staropensource.de/spec-versioning)
|
||||||
|
* specifications.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
class VersionType {
|
||||||
|
/**
|
||||||
|
* Represents the version types
|
||||||
|
* found in the [second iteration](z.staropensource.de/spec-versioning-v2)
|
||||||
|
* of the [SOSVS specification](z.staropensource.de/spec-versioning).
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
enum class V2 {
|
||||||
|
/**
|
||||||
|
* Identifies the work as experimental.
|
||||||
|
*
|
||||||
|
* The work may have many unresolved
|
||||||
|
* issues and may change significantly
|
||||||
|
* during further development.
|
||||||
|
*
|
||||||
|
* Usage is not recommended.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
ALPHA,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Identifies the work as unstable.
|
||||||
|
*
|
||||||
|
* The work may have a few unresolved
|
||||||
|
* issues and may change from time to
|
||||||
|
* time during further development.
|
||||||
|
*
|
||||||
|
* Usage is not recommended.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
BETA,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Identifies the work as potentially
|
||||||
|
* stable. The work may have a few
|
||||||
|
* smaller issues but it's shape is
|
||||||
|
* final. No new features may be
|
||||||
|
* added anymore unless required.
|
||||||
|
*
|
||||||
|
* Usage only recommended for testers
|
||||||
|
* and early birds.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
RELEASECANDIDATE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Identifies the work as tested and
|
||||||
|
* stable.
|
||||||
|
*
|
||||||
|
* The work is finished and can be
|
||||||
|
* used without any problems.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
RELEASE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Companion object of [V2].
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
companion object {
|
||||||
|
/**
|
||||||
|
* Converts the specified string into
|
||||||
|
* the correct version type.
|
||||||
|
*
|
||||||
|
* @return matching version type or `null`
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun of(string: String): V2? {
|
||||||
|
return when (string) {
|
||||||
|
"alpha" -> ALPHA
|
||||||
|
"beta" -> BETA
|
||||||
|
"releasecandidate" -> RELEASECANDIDATE
|
||||||
|
"release" -> RELEASE
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns this version type
|
||||||
|
* as it's proper string
|
||||||
|
* representation.
|
||||||
|
*
|
||||||
|
* @return string representation
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
override fun toString(): String {
|
||||||
|
return when (this) {
|
||||||
|
ALPHA -> "alpha"
|
||||||
|
BETA -> "beta"
|
||||||
|
RELEASECANDIDATE -> "releasecandidate"
|
||||||
|
RELEASE -> "release"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns this version type
|
||||||
|
* as it's proper byte
|
||||||
|
* representation.
|
||||||
|
*
|
||||||
|
* @return byte representation
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
fun toUByte(): UByte {
|
||||||
|
return when (this) {
|
||||||
|
ALPHA -> 0u
|
||||||
|
BETA -> 1u
|
||||||
|
RELEASECANDIDATE -> 2u
|
||||||
|
RELEASE -> 3u
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* STAROPENSOURCE ENGINE SOURCE FILE
|
||||||
|
* Copyright (c) 2024 The StarOpenSource Engine Authors
|
||||||
|
* Licensed under the GNU Affero General Public License v3
|
||||||
|
* with an exception allowing classpath linking.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data types used for representing
|
||||||
|
* versioning information.
|
||||||
|
*
|
||||||
|
* @since v1-alpha10
|
||||||
|
*/
|
||||||
|
package de.staropensource.engine.base.type.versioning;
|
Loading…
Reference in a new issue