@npmcli/template-oss 4.23.5 → 4.23.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
const RP = require('release-please')
|
|
2
|
-
const { DefaultVersioningStrategy } = require('release-please/build/src/versioning-strategies/default.js')
|
|
3
|
-
const { PrereleaseVersioningStrategy } = require('release-please/build/src/versioning-strategies/prerelease.js')
|
|
4
2
|
const { ROOT_PROJECT_PATH } = require('release-please/build/src/manifest.js')
|
|
5
3
|
const { CheckpointLogger, logger } = require('release-please/build/src/util/logger.js')
|
|
6
4
|
const assert = require('assert')
|
|
@@ -9,6 +7,7 @@ const omit = require('just-omit')
|
|
|
9
7
|
const ChangelogNotes = require('./changelog.js')
|
|
10
8
|
const NodeWorkspaceFormat = require('./node-workspace-format.js')
|
|
11
9
|
const { getPublishTag, noop } = require('./util.js')
|
|
10
|
+
const { SemverVersioningStrategy } = require('./semver-versioning-strategy.js')
|
|
12
11
|
|
|
13
12
|
/* istanbul ignore next: TODO fix flaky tests and enable coverage */
|
|
14
13
|
class ReleasePlease {
|
|
@@ -52,9 +51,7 @@ class ReleasePlease {
|
|
|
52
51
|
|
|
53
52
|
async init() {
|
|
54
53
|
RP.registerChangelogNotes('default', ({ github, ...o }) => new ChangelogNotes(github, o))
|
|
55
|
-
RP.registerVersioningStrategy('default', o =>
|
|
56
|
-
o.prerelease ? new PrereleaseVersioningStrategy(o) : new DefaultVersioningStrategy(o),
|
|
57
|
-
)
|
|
54
|
+
RP.registerVersioningStrategy('default', o => new SemverVersioningStrategy(o))
|
|
58
55
|
RP.registerPlugin(
|
|
59
56
|
'node-workspace-format',
|
|
60
57
|
({ github, targetBranch, repositoryConfig, ...o }) =>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const semver = require('semver')
|
|
2
|
+
const { Version } = require('release-please/build/src/version.js')
|
|
3
|
+
|
|
4
|
+
const inc = (version, release, _preid) => {
|
|
5
|
+
const parsed = new semver.SemVer(version)
|
|
6
|
+
const implicitPreid = parsed.prerelease.length > 1 ? parsed.prerelease[0]?.toString() : undefined
|
|
7
|
+
const preid = _preid || implicitPreid
|
|
8
|
+
const next = new semver.SemVer(version).inc(release, preid)
|
|
9
|
+
if (!parsed.prerelease.length) {
|
|
10
|
+
return next.format()
|
|
11
|
+
}
|
|
12
|
+
const isFreshMajor = parsed.minor === 0 && parsed.patch === 0
|
|
13
|
+
const isFreshMinor = parsed.patch === 0
|
|
14
|
+
const shouldPrerelease =
|
|
15
|
+
(release === 'premajor' && isFreshMajor) || (release === 'preminor' && isFreshMinor) || release === 'prepatch'
|
|
16
|
+
if (shouldPrerelease) {
|
|
17
|
+
return semver.inc(version, 'prerelease', preid)
|
|
18
|
+
}
|
|
19
|
+
return next.format()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const parseCommits = commits => {
|
|
23
|
+
let release = 'patch'
|
|
24
|
+
for (const commit of commits) {
|
|
25
|
+
if (commit.breaking) {
|
|
26
|
+
release = 'major'
|
|
27
|
+
break
|
|
28
|
+
} else if (['feat', 'feature'].includes(commit.type)) {
|
|
29
|
+
release = 'minor'
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return release
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
class SemverVersioningStrategyNested {
|
|
36
|
+
constructor(options, version, commits) {
|
|
37
|
+
this.options = options
|
|
38
|
+
this.commits = commits
|
|
39
|
+
this.version = version
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
bump() {
|
|
43
|
+
return new SemverVersioningStrategy(this.options).bump(this.version, this.commits)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
class SemverVersioningStrategy {
|
|
48
|
+
constructor(options) {
|
|
49
|
+
this.options = options
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
determineReleaseType(version, commits) {
|
|
53
|
+
return new SemverVersioningStrategyNested(this.options, version, commits)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
bump(currentVersion, commits) {
|
|
57
|
+
const prerelease = this.options.prerelease
|
|
58
|
+
const tag = this.options.prereleaseType
|
|
59
|
+
const releaseType = parseCommits(commits)
|
|
60
|
+
const addPreIfNeeded = prerelease ? `pre${releaseType}` : releaseType
|
|
61
|
+
const version = inc(currentVersion.toString(), addPreIfNeeded, tag)
|
|
62
|
+
/* istanbul ignore next */
|
|
63
|
+
if (!version) {
|
|
64
|
+
throw new Error('Could not bump version')
|
|
65
|
+
}
|
|
66
|
+
return Version.parse(version)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
module.exports = { SemverVersioningStrategy }
|