@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 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
- if (updatedChangelog.includes('[Unreleased]:')) {
79
- updatedChangelog = updatedChangelog.replace(new RegExp('\\[Unreleased\\]\\:.*' + this.head), unreleasedLink);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@release-it/keep-a-changelog",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "Keep-a-changelog plugin for release-it",
5
5
  "main": "index.js",
6
6
  "scripts": {
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
- './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',
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 });
package/.prettierrc DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "printWidth": 120,
3
- "singleQuote": true,
4
- "proseWrap": "always",
5
- "trailingComma": "none",
6
- "arrowParens": "avoid"
7
- }