Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/src/git-version.ts
diff options
context:
space:
mode:
authoreric sciple <ericsciple@users.noreply.github.com>2019-12-03 10:28:59 -0500
committerGitHub <noreply@github.com>2019-12-03 10:28:59 -0500
commite404ba5989baa550f631fb1262539d1375a856b7 (patch)
tree4cc911589e7c9a4c976bc99eb4dcb886d2b2d8a8 /src/git-version.ts
parent6a11491f2eea6739d1296d604c5402cffa43a1f1 (diff)
Convert checkout to a regular action (#70)
Diffstat (limited to 'src/git-version.ts')
-rw-r--r--src/git-version.ts77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/git-version.ts b/src/git-version.ts
new file mode 100644
index 0000000..44bee1a
--- /dev/null
+++ b/src/git-version.ts
@@ -0,0 +1,77 @@
+export class GitVersion {
+ private readonly major: number = NaN
+ private readonly minor: number = NaN
+ private readonly patch: number = NaN
+
+ /**
+ * Used for comparing the version of git and git-lfs against the minimum required version
+ * @param version the version string, e.g. 1.2 or 1.2.3
+ */
+ constructor(version?: string) {
+ if (version) {
+ const match = version.match(/^(\d+)\.(\d+)(\.(\d+))?$/)
+ if (match) {
+ this.major = Number(match[1])
+ this.minor = Number(match[2])
+ if (match[4]) {
+ this.patch = Number(match[4])
+ }
+ }
+ }
+ }
+
+ /**
+ * Compares the instance against a minimum required version
+ * @param minimum Minimum version
+ */
+ checkMinimum(minimum: GitVersion): boolean {
+ if (!minimum.isValid()) {
+ throw new Error('Arg minimum is not a valid version')
+ }
+
+ // Major is insufficient
+ if (this.major < minimum.major) {
+ return false
+ }
+
+ // Major is equal
+ if (this.major === minimum.major) {
+ // Minor is insufficient
+ if (this.minor < minimum.minor) {
+ return false
+ }
+
+ // Minor is equal
+ if (this.minor === minimum.minor) {
+ // Patch is insufficient
+ if (this.patch && this.patch < (minimum.patch || 0)) {
+ return false
+ }
+ }
+ }
+
+ return true
+ }
+
+ /**
+ * Indicates whether the instance was constructed from a valid version string
+ */
+ isValid(): boolean {
+ return !isNaN(this.major)
+ }
+
+ /**
+ * Returns the version as a string, e.g. 1.2 or 1.2.3
+ */
+ toString(): string {
+ let result = ''
+ if (this.isValid()) {
+ result = `${this.major}.${this.minor}`
+ if (!isNaN(this.patch)) {
+ result += `.${this.patch}`
+ }
+ }
+
+ return result
+ }
+}