diff options
author | Fabio Berger <me@fabioberger.com> | 2018-06-19 01:00:39 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-06-19 05:08:33 +0800 |
commit | 3e64b3da398a90e6ddfc287ebf28ec780b64b56f (patch) | |
tree | c1788d98471b58f90d99fa8bedb1553725cec4b6 | |
parent | 9a748c8bf1dfd1a090e3d44a4cbebb59bcedd5e6 (diff) | |
download | dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar.gz dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar.bz2 dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar.lz dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar.xz dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.tar.zst dexon-sol-tools-3e64b3da398a90e6ddfc287ebf28ec780b64b56f.zip |
Use semver library instead of semverUtils
-rw-r--r-- | packages/monorepo-scripts/package.json | 2 | ||||
-rw-r--r-- | packages/monorepo-scripts/src/prepublish_checks.ts | 10 | ||||
-rw-r--r-- | packages/monorepo-scripts/src/publish.ts | 10 | ||||
-rw-r--r-- | packages/monorepo-scripts/src/utils/changelog_utils.ts | 5 | ||||
-rw-r--r-- | packages/monorepo-scripts/src/utils/semver_utils.ts | 56 | ||||
-rw-r--r-- | packages/monorepo-scripts/src/utils/utils.ts | 7 |
6 files changed, 17 insertions, 73 deletions
diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index 6ce889907..5fbf7dbdf 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -38,6 +38,7 @@ "make-promises-safe": "^1.1.0", "npm-run-all": "^4.1.2", "shx": "^0.2.2", + "@types/semver": "5.5.0", "tslint": "5.8.0", "typescript": "2.7.1" }, @@ -56,6 +57,7 @@ "publish-release": "0xproject/publish-release", "rimraf": "^2.6.2", "semver-diff": "^2.1.0", + "semver": "5.5.0", "semver-sort": "0.0.4" }, "publishConfig": { diff --git a/packages/monorepo-scripts/src/prepublish_checks.ts b/packages/monorepo-scripts/src/prepublish_checks.ts index 0bd3bb0c1..5848cea8d 100644 --- a/packages/monorepo-scripts/src/prepublish_checks.ts +++ b/packages/monorepo-scripts/src/prepublish_checks.ts @@ -2,12 +2,13 @@ import * as fs from 'fs'; import * as _ from 'lodash'; import * as path from 'path'; import { exec as execAsync } from 'promisify-child-process'; +import semver = require('semver'); +import semverSort = require('semver-sort'); import { constants } from './constants'; import { Changelog, PackageRegistryJson } from './types'; import { changelogUtils } from './utils/changelog_utils'; import { npmUtils } from './utils/npm_utils'; -import { semverUtils } from './utils/semver_utils'; import { utils } from './utils/utils'; async function prepublishChecksAsync(): Promise<void> { @@ -63,7 +64,8 @@ async function checkCurrentVersionMatchesLatestPublishedNPMPackageAsync( continue; // noop for packages not yet published to NPM } const allVersionsIncludingUnpublished = npmUtils.getPreviouslyPublishedVersions(packageRegistryJsonIfExists); - const latestNPMVersion = semverUtils.getLatestVersion(allVersionsIncludingUnpublished); + const sortedVersions = semverSort.desc(allVersionsIncludingUnpublished); + const latestNPMVersion = sortedVersions[0]; if (packageVersion !== latestNPMVersion) { versionMismatches.push({ packageJsonVersion: packageVersion, @@ -96,13 +98,13 @@ async function checkChangelogFormatAsync(updatedPublicLernaPackages: LernaPackag if (!_.isEmpty(changelog)) { const lastEntry = changelog[0]; const doesLastEntryHaveTimestamp = !_.isUndefined(lastEntry.timestamp); - if (semverUtils.lessThan(lastEntry.version, currentVersion)) { + if (semver.lt(lastEntry.version, currentVersion)) { changeLogInconsistencies.push({ packageJsonVersion: currentVersion, changelogVersion: lastEntry.version, packageName, }); - } else if (semverUtils.greaterThan(lastEntry.version, currentVersion) && doesLastEntryHaveTimestamp) { + } else if (semver.gt(lastEntry.version, currentVersion) && doesLastEntryHaveTimestamp) { // Remove incorrectly added timestamp delete changelog[0].timestamp; // Save updated CHANGELOG.json diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index 637512a5a..cdd250ec3 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -8,6 +8,7 @@ import opn = require('opn'); import * as path from 'path'; import { exec as execAsync, spawn } from 'promisify-child-process'; import * as prompt from 'prompt'; +import semver = require('semver'); import semverDiff = require('semver-diff'); import semverSort = require('semver-sort'); @@ -129,10 +130,13 @@ async function updateChangeLogsAsync(updatedPublicLernaPackages: LernaPackage[]) ); if (shouldAddNewEntry) { // Create a new entry for a patch version with generic changelog entry. - const nextPatchVersion = utils.getNextPatchVersion(currentVersion); + const nextPatchVersionIfValid = semver.inc(currentVersion, 'patch'); + if (_.isNull(nextPatchVersionIfValid)) { + throw new Error(`Encountered invalid semver version: ${currentVersion} for package: ${packageName}`); + } const newChangelogEntry: VersionChangelog = { timestamp: TODAYS_TIMESTAMP, - version: nextPatchVersion, + version: nextPatchVersionIfValid, changes: [ { note: 'Dependencies updated', @@ -140,7 +144,7 @@ async function updateChangeLogsAsync(updatedPublicLernaPackages: LernaPackage[]) ], }; changelog = [newChangelogEntry, ...changelog]; - packageToVersionChange[packageName] = semverDiff(currentVersion, nextPatchVersion); + packageToVersionChange[packageName] = semverDiff(currentVersion, nextPatchVersionIfValid); } else { // Update existing entry with timestamp const lastEntry = changelog[0]; diff --git a/packages/monorepo-scripts/src/utils/changelog_utils.ts b/packages/monorepo-scripts/src/utils/changelog_utils.ts index 4e09fc842..a589fe985 100644 --- a/packages/monorepo-scripts/src/utils/changelog_utils.ts +++ b/packages/monorepo-scripts/src/utils/changelog_utils.ts @@ -3,13 +3,12 @@ import * as _ from 'lodash'; import * as moment from 'moment'; import * as path from 'path'; import { exec as execAsync } from 'promisify-child-process'; +import semver = require('semver'); import semverSort = require('semver-sort'); import { constants } from '../constants'; import { Change, Changelog, VersionChangelog } from '../types'; -import { semverUtils } from './semver_utils'; - const CHANGELOG_MD_HEADER = ` <!-- This file is auto-generated using the monorepo-scripts package. Don't edit directly. @@ -56,7 +55,7 @@ export const changelogUtils = { return true; } const lastEntry = changelog[0]; - if (semverUtils.lessThan(lastEntry.version, currentVersion)) { + if (semver.lt(lastEntry.version, currentVersion)) { throw new Error( `Found CHANGELOG version lower then current package version. ${packageName} current: ${currentVersion}, Changelog: ${ lastEntry.version diff --git a/packages/monorepo-scripts/src/utils/semver_utils.ts b/packages/monorepo-scripts/src/utils/semver_utils.ts deleted file mode 100644 index d5c6b2d17..000000000 --- a/packages/monorepo-scripts/src/utils/semver_utils.ts +++ /dev/null @@ -1,56 +0,0 @@ -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]; - }, -}; diff --git a/packages/monorepo-scripts/src/utils/utils.ts b/packages/monorepo-scripts/src/utils/utils.ts index 93de0d940..16a84b869 100644 --- a/packages/monorepo-scripts/src/utils/utils.ts +++ b/packages/monorepo-scripts/src/utils/utils.ts @@ -11,13 +11,6 @@ export const utils = { log(...args: any[]): void { console.log(...args); // tslint:disable-line:no-console }, - getNextPatchVersion(currentVersion: string): string { - const versionSegments = currentVersion.split('.'); - const patch = _.parseInt(_.last(versionSegments) as string); - const newPatch = patch + 1; - const newPatchVersion = `${versionSegments[0]}.${versionSegments[1]}.${newPatch}`; - return newPatchVersion; - }, async getUpdatedLernaPackagesAsync(shouldIncludePrivate: boolean): Promise<LernaPackage[]> { const updatedPublicPackages = await this.getLernaUpdatedPackagesAsync(shouldIncludePrivate); const updatedPackageNames = _.map(updatedPublicPackages, pkg => pkg.name); |