diff --git a/README.md b/README.md index 6cd2bee2..60142afb 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,7 @@ $ semver 1.2.4-beta.0 -i prerelease The method `.inc` takes an optional parameter 'identifierBase' string that will let you let your prerelease number as zero-based or one-based. +If you provide false zero will be omitted. If you do not specify this parameter, it will default to zero-based. ```javascript @@ -246,6 +247,11 @@ semver.inc('1.2.3', 'prerelease', 'beta', '1') // '1.2.4-beta.1' ``` +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', false) +// '1.2.4-beta' +``` + command-line example: ```bash @@ -253,18 +259,9 @@ $ semver 1.2.3 -i prerelease --preid beta -n 1 1.2.4-beta.1 ``` -#### Disable Prerelease Identifier Base -when this flag is set to true initial prerelease identifier base is disabled. - -```javascript -semver.inc('1.2.3', 'prerelease', { disableIdentifierBase: true } , 'beta') -// '1.2.4-beta' -``` - -command-line example: ```bash -$ semver 1.2.3 -i prerelease --preid beta -noidbase -# 1.2.4-beta +$ semver 1.2.3 -i prerelease --preid beta -n false +1.2.4-beta ``` diff --git a/bin/semver.js b/bin/semver.js index 4e2514b0..1f6657f2 100755 --- a/bin/semver.js +++ b/bin/semver.js @@ -25,8 +25,6 @@ let identifier let identifierBase -let disableIdentifierBase - const semver = require('../') const parseOptions = require('../internal/parse-options') @@ -79,9 +77,6 @@ const main = () => { case '-n': identifierBase = argv.shift() break - case '--noidbase': - disableIdentifierBase = true - break case '-c': case '--coerce': coerce = true break @@ -99,7 +94,7 @@ const main = () => { } } - options = parseOptions({ loose, includePrerelease, rtl, disableIdentifierBase }) + options = parseOptions({ loose, includePrerelease, rtl }) versions = versions.map((v) => { return coerce ? (semver.coerce(v, options) || { version: v }).version : v @@ -186,15 +181,9 @@ Options: -n Prerelease Identifier Base that will let you let your prerelease number as - zero-based or one-based.If you do not specify + zero-based or one-based. If you provide false + zero will be omitted. If you do not specify this parameter, it will default to zero-based. - ---noidbase - Disable Identifier Base - when this flag is set to true initial prerelease - identifier base is disabled, if another version - is created with same identifier then the prerelease - number is used based on Prerelease Identifier Base Program exits successfully if any valid version satisfies all supplied ranges, and prints all satisfying versions. diff --git a/classes/semver.js b/classes/semver.js index 526c4edc..446baca3 100644 --- a/classes/semver.js +++ b/classes/semver.js @@ -247,7 +247,10 @@ class SemVer { // This probably shouldn't be used publicly. // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. case 'pre': { - const base = Number(identifierBase) ? 1 : 0 + const base = identifierBase === false || + identifierBase === 'false' || + Number(identifierBase) ? 1 : 0 + if (this.prerelease.length === 0) { this.prerelease = [base] } else { @@ -266,21 +269,16 @@ class SemVer { if (identifier) { // 1.2.0-beta.1 bumps to 1.2.0-beta.2, // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + let prerelease = [identifier, base] + if (identifierBase === false || identifierBase === 'false') { + prerelease = [identifier] + } if (compareIdentifiers(this.prerelease[0], identifier) === 0) { if (isNaN(this.prerelease[1])) { - if (this.options.disableIdentifierBase) { - this.prerelease = [identifier] - } else { - this.prerelease = [identifier, base] - } + this.prerelease = prerelease } } else { - this.prerelease = [identifier, base] - if (this.options.disableIdentifierBase) { - this.prerelease = [identifier] - } else { - this.prerelease = [identifier, base] - } + this.prerelease = prerelease } } break diff --git a/tap-snapshots/test/bin/semver.js.test.cjs b/tap-snapshots/test/bin/semver.js.test.cjs index 870b9fc6..b8965e2f 100644 --- a/tap-snapshots/test/bin/semver.js.test.cjs +++ b/tap-snapshots/test/bin/semver.js.test.cjs @@ -96,15 +96,9 @@ Object { -n Prerelease Identifier Base that will let you let your prerelease number as - zero-based or one-based.If you do not specify + zero-based or one-based. If you provide false + zero will be omitted. If you do not specify this parameter, it will default to zero-based. - - --noidbase - Disable Identifier Base - when this flag is set to true initial prerelease - identifier base is disabled, if another version - is created with same identifier then the prerelease - number is used based on Prerelease Identifier Base Program exits successfully if any valid version satisfies all supplied ranges, and prints all satisfying versions. @@ -165,15 +159,9 @@ Object { -n Prerelease Identifier Base that will let you let your prerelease number as - zero-based or one-based.If you do not specify + zero-based or one-based. If you provide false + zero will be omitted. If you do not specify this parameter, it will default to zero-based. - - --noidbase - Disable Identifier Base - when this flag is set to true initial prerelease - identifier base is disabled, if another version - is created with same identifier then the prerelease - number is used based on Prerelease Identifier Base Program exits successfully if any valid version satisfies all supplied ranges, and prints all satisfying versions. @@ -234,15 +222,9 @@ Object { -n Prerelease Identifier Base that will let you let your prerelease number as - zero-based or one-based.If you do not specify + zero-based or one-based. If you provide false + zero will be omitted. If you do not specify this parameter, it will default to zero-based. - - --noidbase - Disable Identifier Base - when this flag is set to true initial prerelease - identifier base is disabled, if another version - is created with same identifier then the prerelease - number is used based on Prerelease Identifier Base Program exits successfully if any valid version satisfies all supplied ranges, and prints all satisfying versions. @@ -303,15 +285,9 @@ Object { -n Prerelease Identifier Base that will let you let your prerelease number as - zero-based or one-based.If you do not specify + zero-based or one-based. If you provide false + zero will be omitted. If you do not specify this parameter, it will default to zero-based. - - --noidbase - Disable Identifier Base - when this flag is set to true initial prerelease - identifier base is disabled, if another version - is created with same identifier then the prerelease - number is used based on Prerelease Identifier Base Program exits successfully if any valid version satisfies all supplied ranges, and prints all satisfying versions. @@ -362,7 +338,7 @@ Object { } ` -exports[`test/bin/semver.js TAP inc tests > -i premajor 1.0.0 --preid=beta --noidbase 1`] = ` +exports[`test/bin/semver.js TAP inc tests > -i premajor 1.0.0 --preid=beta -n false 1`] = ` Object { "code": 0, "err": "", diff --git a/test/bin/semver.js b/test/bin/semver.js index bd6d5991..12fcbbe0 100644 --- a/test/bin/semver.js +++ b/test/bin/semver.js @@ -29,7 +29,7 @@ t.test('inc tests', t => Promise.all([ ['-i', 'major', '1.0.0'], ['-i', 'major', '1.0.0', '1.0.1'], ['-i', 'premajor', '1.0.0', '--preid=beta', '-n', '1'], - ['-i', 'premajor', '1.0.0', '--preid=beta', '--noidbase'], + ['-i', 'premajor', '1.0.0', '--preid=beta', '-n', 'false'], ['-i', '1.2.3'], ].map(args => t.resolveMatchSnapshot(run(args), args.join(' '))))) diff --git a/test/fixtures/increments.js b/test/fixtures/increments.js index c7b1e7ba..cb99b4e5 100644 --- a/test/fixtures/increments.js +++ b/test/fixtures/increments.js @@ -102,20 +102,18 @@ module.exports = [ ['1.2.0', 'preminor', '1.3.0-dev.1', false, 'dev', '1'], ['1.2.3-1', 'preminor', '1.3.0-dev.0', false, 'dev'], - // disableIdentifierBase - ['1.2.0-1', 'prerelease', '1.2.0-alpha', { disableIdentifierBase: true }, 'alpha', '0'], - ['1.2.1', 'prerelease', '1.2.2-alpha', { disableIdentifierBase: true }, 'alpha', '0'], - ['1.2.2', 'prerelease', '1.2.3-alpha', { disableIdentifierBase: true }, 'alpha', '1'], - ['1.2.0', 'prepatch', '1.2.1-dev', { disableIdentifierBase: true }, 'dev', '1'], - ['1.2.0-1', 'prepatch', '1.2.1-dev', { disableIdentifierBase: true }, 'dev', '1'], - ['1.2.0', 'premajor', '2.0.0-dev', { disableIdentifierBase: true }, 'dev', '0'], - ['1.2.3-1', 'premajor', '2.0.0-dev', { disableIdentifierBase: true }, 'dev', '0'], - ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev', { disableIdentifierBase: true }, 'dev', '0'], - ['1.2.0', 'preminor', '1.3.0-dev', { disableIdentifierBase: true }, 'dev', '1'], - ['1.2.3-1', 'preminor', '1.3.0-dev', { disableIdentifierBase: true }, 'dev'], - ['1.2.3-dev', 'prerelease', '1.2.3-dev.0', { disableIdentifierBase: true }, 'dev', '0'], - ['1.2.3-dev', 'prerelease', '1.2.3-dev.1', { disableIdentifierBase: true }, 'dev', '1'], - ['1.2.0-dev', 'premajor', '2.0.0-dev', { disableIdentifierBase: true }, 'dev', '0'], - ['1.2.0-dev', 'preminor', '1.3.0-beta', { disableIdentifierBase: true }, 'beta', '1'], - ['1.2.0-dev', 'prepatch', '1.2.1-dev', { disableIdentifierBase: true }, 'dev', '1'], + ['1.2.0-1', 'prerelease', '1.2.0-alpha', false, 'alpha', false], + ['1.2.1', 'prerelease', '1.2.2-alpha', false, 'alpha', false], + ['1.2.2', 'prerelease', '1.2.3-alpha', false, 'alpha', false], + ['1.2.0', 'prepatch', '1.2.1-dev', false, 'dev', false], + ['1.2.0-1', 'prepatch', '1.2.1-dev', false, 'dev', false], + ['1.2.0', 'premajor', '2.0.0-dev', false, 'dev', false], + ['1.2.3-1', 'premajor', '2.0.0-dev', false, 'dev', false], + ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev', false, 'dev', false], + ['1.2.0', 'preminor', '1.3.0-dev', false, 'dev', false], + ['1.2.3-1', 'preminor', '1.3.0-dev', false, 'dev', false], + ['1.2.3-dev', 'prerelease', '1.2.3-dev.1', false, 'dev', false], + ['1.2.0-dev', 'premajor', '2.0.0-dev', false, 'dev', false], + ['1.2.0-dev', 'preminor', '1.3.0-beta', false, 'beta', false], + ['1.2.0-dev', 'prepatch', '1.2.1-dev', false, 'dev', false], ] diff --git a/test/internal/parse-options.js b/test/internal/parse-options.js index 304aa03d..2400537d 100644 --- a/test/internal/parse-options.js +++ b/test/internal/parse-options.js @@ -35,13 +35,9 @@ t.test('any object passed is returned', t => { loose: true, includePrerelease: true, }) - t.strictSame(parseOptions({ disableIdentifierBase: true }), { - disableIdentifierBase: true, - }) - t.strictSame(parseOptions({ rtl: true, includePrerelease: true, disableIdentifierBase: true }), { + t.strictSame(parseOptions({ rtl: true, includePrerelease: true }), { rtl: true, includePrerelease: true, - disableIdentifierBase: true, }) t.end() })