diff options
author | Fabio Berger <me@fabioberger.com> | 2018-06-18 22:55:59 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-06-19 05:06:32 +0800 |
commit | 8633fa702436cceeafa52ec39a7fabb5b2650c38 (patch) | |
tree | 0702ff5b590396e86f71508a16a87b7440ffe0c0 /packages/monorepo-scripts/src/utils/semver_utils.ts | |
parent | 19668b9b48eb08645f500dd8453b8cb2f7abc400 (diff) | |
download | dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.gz dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.bz2 dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.lz dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.xz dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.zst dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.zip |
Add more prepublish checks
Diffstat (limited to 'packages/monorepo-scripts/src/utils/semver_utils.ts')
-rw-r--r-- | packages/monorepo-scripts/src/utils/semver_utils.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/monorepo-scripts/src/utils/semver_utils.ts b/packages/monorepo-scripts/src/utils/semver_utils.ts new file mode 100644 index 000000000..d5c6b2d17 --- /dev/null +++ b/packages/monorepo-scripts/src/utils/semver_utils.ts @@ -0,0 +1,56 @@ +import * as _ from 'lodash'; +import semverSort = require('semver-sort'); + +// Regex that matches semantic versions only including digits and dots. +const SEM_VER_REGEX = /^(\d+\.){1}(\d+\.){1}(\d+){1}$/gm; + +export const semverUtils = { + /** + * Checks whether version a is lessThan version b. Supplied versions must be + * Semantic Versions containing only numbers and dots (e.g 1.4.0). + * @param a version of interest + * @param b version to compare a against + * @return Whether version a is lessThan version b + */ + lessThan(a: string, b: string): boolean { + this.assertValidSemVer('a', a); + this.assertValidSemVer('b', b); + if (a === b) { + return false; + } + const sortedVersions = semverSort.desc([a, b]); + const isALessThanB = sortedVersions[0] === b; + return isALessThanB; + }, + /** + * Checks whether version a is greaterThan version b. Supplied versions must be + * Semantic Versions containing only numbers and dots (e.g 1.4.0). + * @param a version of interest + * @param b version to compare a against + * @return Whether version a is greaterThan version b + */ + greaterThan(a: string, b: string): boolean { + this.assertValidSemVer('a', a); + this.assertValidSemVer('b', b); + if (a === b) { + return false; + } + const sortedVersions = semverSort.desc([a, b]); + const isAGreaterThanB = sortedVersions[0] === a; + return isAGreaterThanB; + }, + assertValidSemVer(variableName: string, version: string): void { + if (!version.match(SEM_VER_REGEX)) { + throw new Error( + `SemVer versions should only contain numbers and dots. Encountered: ${variableName} = ${version}`, + ); + } + }, + getLatestVersion(versions: string[]): string { + _.each(versions, version => { + this.assertValidSemVer('version', version); + }); + const sortedVersions = semverSort.desc(versions); + return sortedVersions[0]; + }, +}; |