@release-it/keep-a-changelog 2.3.0 → 2.4.0
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.
- package/index.js +12 -5
- package/package.json +1 -1
- package/test.js +9 -2
- package/.prettierrc +0 -7
package/index.js
CHANGED
|
@@ -20,7 +20,7 @@ class KeepAChangelog extends Plugin {
|
|
|
20
20
|
this.addUnreleased = addUnreleased === undefined ? false : Boolean(addUnreleased);
|
|
21
21
|
this.keepUnreleased = keepUnreleased === undefined ? false : Boolean(keepUnreleased);
|
|
22
22
|
this.addVersionUrl = addVersionUrl === undefined ? false : Boolean(addVersionUrl);
|
|
23
|
-
this.head = head || 'HEAD'
|
|
23
|
+
this.head = head || 'HEAD';
|
|
24
24
|
|
|
25
25
|
this.changelogPath = path.resolve(this.filename);
|
|
26
26
|
this.changelogContent = fs.readFileSync(this.changelogPath, 'utf-8');
|
|
@@ -35,6 +35,12 @@ class KeepAChangelog extends Plugin {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
getChangelog(latestVersion) {
|
|
38
|
+
const { isIncrement } = this.config;
|
|
39
|
+
// Return the unchanged changelog content when no increment is made
|
|
40
|
+
if (!isIncrement) {
|
|
41
|
+
return this.changelogContent;
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
const { changelog } = this.getContext();
|
|
39
45
|
if (changelog) return changelog;
|
|
40
46
|
|
|
@@ -75,8 +81,9 @@ class KeepAChangelog extends Plugin {
|
|
|
75
81
|
// Add or update the Unreleased link
|
|
76
82
|
const unreleasedUrl = `${repositoryUrl}/compare/${tagName}...${this.head}`;
|
|
77
83
|
const unreleasedLink = `[Unreleased]: ${unreleasedUrl}`;
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
const hasUnreleasedLink = /^\[(Unreleased)\]\: .*$/im;
|
|
85
|
+
if (hasUnreleasedLink.test(updatedChangelog)) {
|
|
86
|
+
updatedChangelog = updatedChangelog.replace(hasUnreleasedLink, '[$1]: ' + unreleasedUrl);
|
|
80
87
|
} else {
|
|
81
88
|
updatedChangelog = `${updatedChangelog}${this.EOL}${this.EOL}${unreleasedLink}`;
|
|
82
89
|
}
|
|
@@ -94,8 +101,8 @@ class KeepAChangelog extends Plugin {
|
|
|
94
101
|
|
|
95
102
|
beforeRelease() {
|
|
96
103
|
const { addUnreleased, keepUnreleased, addVersionUrl } = this;
|
|
97
|
-
const { isDryRun } = this.config;
|
|
98
|
-
if (isDryRun || keepUnreleased) return;
|
|
104
|
+
const { isDryRun, isIncrement } = this.config;
|
|
105
|
+
if (isDryRun || keepUnreleased || !isIncrement) return;
|
|
99
106
|
const { version } = this.getContext();
|
|
100
107
|
const formattedDate = getFormattedDate();
|
|
101
108
|
const unreleasedTitle = addUnreleased ? this.unreleasedTitle + this.EOL + this.EOL : '';
|
package/package.json
CHANGED
package/test.js
CHANGED
|
@@ -23,8 +23,8 @@ mock({
|
|
|
23
23
|
'./CHANGELOG-UNRELEASED.md': '## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D',
|
|
24
24
|
'./CHANGELOG-VERSION_URL.md':
|
|
25
25
|
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/release-it/release-it/compare/1.0.0..HEAD\n[1.0.0]: https://github.com/release-it/release-it/compare/0.0.0...1.0.0',
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
'./CHANGELOG-VERSION_URL_HEAD.md':
|
|
27
|
+
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/release-it/release-it/compare/1.0.0..main\n[1.0.0]: https://github.com/release-it/release-it/compare/0.0.0...1.0.0',
|
|
28
28
|
'./CHANGELOG-VERSION_URL_UNRELEASED.md':
|
|
29
29
|
'## [Unreleased]\n\n* Item A\n* Item B\n\n## [1.0.0] - 2020-05-02\n\n* Item C\n* Item D\n\n[Unreleased]: https://github.com/user/project/compare/1.0.0..HEAD\n[1.0.0]: https://github.com/user/project/compare/0.0.0...1.0.0',
|
|
30
30
|
'./CHANGELOG-VERSION_URL_NEW.md': '## [Unreleased]\n\n* Item A\n* Item B'
|
|
@@ -52,6 +52,13 @@ test('should throw for empty "unreleased" section', async t => {
|
|
|
52
52
|
await assert.rejects(runTasks(plugin), /There are no entries under "Unreleased" section in CHANGELOG-EMPTY\.md/);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
+
test('should not throw for empty "unreleased" section when no-increment flag is set', async t => {
|
|
56
|
+
const options = { increment: false, [namespace]: { filename: 'CHANGELOG-EMPTY.md' } };
|
|
57
|
+
const plugin = factory(Plugin, { namespace, options });
|
|
58
|
+
await runTasks(plugin);
|
|
59
|
+
assert.equal(plugin.getChangelog(), readFile('./CHANGELOG-EMPTY.md'));
|
|
60
|
+
});
|
|
61
|
+
|
|
55
62
|
test('should throw for missing section for previous release', async t => {
|
|
56
63
|
const options = { [namespace]: { filename: 'CHANGELOG-MISSING.md' } };
|
|
57
64
|
const plugin = factory(Plugin, { namespace, options });
|