From dbd07d55e35377e41c96ff33f60bab728d43eea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Astori?= Date: Wed, 27 Dec 2017 19:18:07 -0500 Subject: [PATCH] Allow keywords as changelog script version argument, e.g. `node scripts/changelog pre` --- scripts/changelog.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/scripts/changelog.js b/scripts/changelog.js index b43102b6..32c95ab6 100644 --- a/scripts/changelog.js +++ b/scripts/changelog.js @@ -28,10 +28,12 @@ it is very likely you will have to run all those each time: node scripts/changelog ``` -`` must *not* be prefixed with `v`. It is formatted either: +`` must be either: -- `MAJOR.MINOR.PATCH` for a stable release, for example `2.5.0` -- `MAJOR.MINOR.PATCH-(pre|rc).N` for a pre-release, for example `2.5.0-rc.1` +- A keyword among: major, minor, patch, prerelease, pre +- An explicit version of either format: + - `MAJOR.MINOR.PATCH` for a stable release, for example `2.5.0` + - `MAJOR.MINOR.PATCH-(pre|rc).N` for a pre-release, for example `2.5.0-rc.1` ## TODOs: @@ -48,6 +50,7 @@ const colors = require("colors/safe"); const fs = require("fs"); const GraphQLClient = require("graphql-request").GraphQLClient; const moment = require("moment"); +const semver = require("semver"); const util = require("util"); const log = require("../src/log"); const packageJson = require("../package.json"); @@ -68,11 +71,17 @@ if (process.argv[2] === undefined) { process.exit(1); } -const version = process.argv[2]; +// If version is not a valid X.Y.Z, it may be something like "pre". +let version = semver.valid(process.argv[2]); + +if (!version) { + version = semver.inc(packageJson.version, process.argv[2]); +} if (!/^[0-9]+\.[0-9]+\.[0-9]+(-(pre|rc)+\.[0-9]+)?$/.test(version)) { - log.error(`Argument ${colors.bold("version")} is incorrect.`); - log.error(`It must match format ${colors.green("x.y.z")} (stable) or ${colors.green("x.y.z-(pre|rc).n")} (pre-release).`); + log.error(`Argument ${colors.bold("version")} is incorrect It must be either:`); + log.error(`- A keyword among: ${colors.green("major")}, ${colors.green("minor")}, ${colors.green("patch")}, ${colors.green("prerelease")}, ${colors.green("pre")}`); + log.error(`- An explicit version of format ${colors.green("x.y.z")} (stable) or ${colors.green("x.y.z-(pre|rc).n")} (pre-release).`); process.exit(1); }