summaryrefslogtreecommitdiff
path: root/packages/taler-util/src/libtool-version.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/libtool-version.ts')
-rw-r--r--packages/taler-util/src/libtool-version.ts79
1 files changed, 41 insertions, 38 deletions
diff --git a/packages/taler-util/src/libtool-version.ts b/packages/taler-util/src/libtool-version.ts
index 5e9d0b74e..ed11a4e95 100644
--- a/packages/taler-util/src/libtool-version.ts
+++ b/packages/taler-util/src/libtool-version.ts
@@ -27,62 +27,65 @@ export interface VersionMatchResult {
* Is the first version compatible with the second?
*/
compatible: boolean;
+
/**
- * Is the first version older (-1), newser (+1) or
+ * Is the first version older (-1), newer (+1) or
* identical (0)?
*/
currentCmp: number;
}
-interface Version {
+export interface Version {
current: number;
revision: number;
age: number;
}
-/**
- * Compare two libtool-style version strings.
- */
-export function compare(
- me: string,
- other: string,
-): VersionMatchResult | undefined {
- const meVer = parseVersion(me);
- const otherVer = parseVersion(other);
-
- if (!(meVer && otherVer)) {
- return undefined;
- }
+export namespace LibtoolVersion {
+ /**
+ * Compare two libtool-style version strings.
+ */
+ export function compare(
+ me: string,
+ other: string,
+ ): VersionMatchResult | undefined {
+ const meVer = parseVersion(me);
+ const otherVer = parseVersion(other);
- const compatible =
- meVer.current - meVer.age <= otherVer.current &&
- meVer.current >= otherVer.current - otherVer.age;
+ if (!(meVer && otherVer)) {
+ return undefined;
+ }
- const currentCmp = Math.sign(meVer.current - otherVer.current);
+ const compatible =
+ meVer.current - meVer.age <= otherVer.current &&
+ meVer.current >= otherVer.current - otherVer.age;
- return { compatible, currentCmp };
-}
+ const currentCmp = Math.sign(meVer.current - otherVer.current);
-function parseVersion(v: string): Version | undefined {
- const [currentStr, revisionStr, ageStr, ...rest] = v.split(":");
- if (rest.length !== 0) {
- return undefined;
+ return { compatible, currentCmp };
}
- const current = Number.parseInt(currentStr);
- const revision = Number.parseInt(revisionStr);
- const age = Number.parseInt(ageStr);
- if (Number.isNaN(current)) {
- return undefined;
- }
+ export function parseVersion(v: string): Version | undefined {
+ const [currentStr, revisionStr, ageStr, ...rest] = v.split(":");
+ if (rest.length !== 0) {
+ return undefined;
+ }
+ const current = Number.parseInt(currentStr);
+ const revision = Number.parseInt(revisionStr);
+ const age = Number.parseInt(ageStr);
- if (Number.isNaN(revision)) {
- return undefined;
- }
+ if (Number.isNaN(current)) {
+ return undefined;
+ }
- if (Number.isNaN(age)) {
- return undefined;
- }
+ if (Number.isNaN(revision)) {
+ return undefined;
+ }
+
+ if (Number.isNaN(age)) {
+ return undefined;
+ }
- return { current, revision, age };
+ return { current, revision, age };
+ }
}