grupoboticario / news-fragments

An easy way to create your changelog file

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Duplicate changelog content

rotavio opened this issue · comments

Hello! We are trying to install news-fragment, and, for some reason, the previous contents of the CHANGELOG file is being duplicate at the begining.

This is the changelog created after the first run:

[//]: # (s-0.8.0)


# 0.8.0 (2022-10-13)
## Features
* New feature A.

[//]: # (e-0.8.0)

On following runs, this content is duplicated before the new text:

[//]: # (s-0.8.0)


# 0.8.0 (2022-10-13)
## Features
* New feature A.

[//]: # (e-0.8.0)


[//]: # (s-0.9.0)


# 0.9.0 (2022-10-13)
## Features
* New feature B.

[//]: # (e-0.9.0)


[//]: # (s-0.8.0)


# 0.8.0 (2022-10-13)
## Features
* New feature A.

[//]: # (e-0.8.0)

This occurs using both release-it and as standalone using burn.
We are using Node 16.16.0, and here is our config file:

.release-it.js

module.exports = {
  "git": {
    "changelog": false,
    "requireCleanWorkingDir": false,
    "requireUpstream": false,
    "commit": true,
    "tag": false,
    "push": false,
  },
  "plugins": {
    "news-fragments": {
      "changelogFile": "CHANGELOG.md",
      "fragmentsFolder": ".changes",
    },
  },
  "npm": {
    "publish": false,
  },
  "github": {
    "release": false,
  },
  "gitlab": {
    "release": false,
  }
}```

Are we missing something here?

@jairhenrique, can you help, please?

@rotavio can you test this settings in package.json instead of .release-it.js?

+1

@rotavio @RayaneSlimani can you give more inputs about your environment, other configurations (package.json/os)?

Following this steps, I couldn't reproduce the problem.

 ⟩ nvm use 16.16.0
Now using Node v16.16.0 (npm 8.11.0) ~/.local/share/nvm/v16.16.0/bin/node
 ⟩ npm install --save news-fragments
# with the same content
 ⟩ touch .release-it.js
⟩ mkdir .changes
⟩ git init .
⟩ git commit -m "start" 
⟩ npx news-fragments create misc "Feature A"
⟩ git add .
⟩ git commit  -m "create feature a"
⟩ npx release-it

Empty changelog

? Select increment (next version): minor (0.1.0)

Changeset:
 D .changes/1675166809506.misc
 M package-lock.json
 M package.json

? Commit (Release 0.1.0)? Yes
🏁 Done (in 15s.)
 ⟩ cat CHANGELOG.md

[//]: # (s-0.1.0)

# [0.1.0] - (2023-01-31)

## Misc
* Feature A.

[//]: # (e-0.1.0)
# CHANGELOG.md was not in git yet
⟩ git add .
⟩ git commit  -m "create chagelog a"
⟩ npx news-fragments create misc "Feature B"
 ⟩ git add .
 ⟩ git commit  -m "create chagelog b"
 ⟩ npx release-it

🚀 Let's release undefined (currently at 0.1.0)


Empty changelog

? Select increment (next version): minor (0.2.0)

Changeset:
 D .changes/1675166884436.misc
 M CHANGELOG.md
 M package-lock.json
 M package.json

? Commit (Release 0.2.0)? Yes
🏁 Done (in 11s.)

all right

 ⟩ cat CHANGELOG.md

[//]: # (s-0.2.0)

# [0.2.0] - (2023-01-31)

## Misc
* Feature B.

[//]: # (e-0.2.0)


[//]: # (s-0.1.0)

# [0.1.0] - (2023-01-31)

## Misc
* Feature A.

[//]: # (e-0.1.0)

Thank's @jairhenrique, but i'm stuck :/
node : v18.13.0
yarn : 1.22.19
npm : 8.19.3

Ubuntu 22.10

npx news-fragments create removals 'Removals 1'
npx news-fragments create removals 'Removals 2'
npx news-fragments create removals 'Removals 3'

git add *
git commit -m ...

npx release-it
...

CHANGELOG.md is ok for now

[//]: # (s-2.0.2)

### 🪄 : 2.0.2 - [ 📅 : 2023-01-31]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.2)

Do the same for test for new release

npx news-fragments create removals 'Removals 1'
npx news-fragments create removals 'Removals 2'
npx news-fragments create removals 'Removals 3'

git add *
git commit -m ...

npx release-it
...

changelog update to

CHANGELOG.md

[//]: # (s-2.0.2)

### 🪄 : 2.0.2 - [ 📅 : 2023-01-31]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.2)


[//]: # (s-2.0.3)

### 🪄 : 2.0.3 - [ 📅 : 2023-01-31]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.3)


[//]: # (s-2.0.2)

### 🪄 : 2.0.2 - [ 📅 : 2023-01-31]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.2)

My package.json

"release-it": "@^15.6.0"
"news-fragments": "^2.0.10",

  "release-it": {
    "plugins": {
      "news-fragments": {
        "changelogFile": "CHANGELOG.md",
        "changelogTemplate": "### 🪄 : {{newVersion}} - [ 📅 : {{bumpDate}}]\n{{#fragments}}## {{title}}\n{{#each fragmentEntries}}* 📋 {{this}}\n{{/each}}{{/fragments}}",
        "fragmentsTypes": [
          {
            "title": "📢 New features",
            "extension": "feature"
          },
          {
            "title": "🐞 Bugfixes",
            "extension": "bugfix"
          },
          {
            "title": "😉 Improvements",
            "extension": "improvements"
          },
          {
            "title": "🧪 Tests & dependencies",
            "extension": "test"
          },
          {
            "title": "📄 Misc",
            "extension": "misc"
          },
          {
            "title": "❌ Removals",
            "extension": "removals"
          }
        ]
      }
    }
  },

@RayaneSlimani I really can't reproduce this error :(

Can you do a test for me?

On your .node_modules/news-fragments/src/build-template.js can you apply this diff and run release-it?

diff --git a/src/build-template.js b/src/build-template.js
index 766cd83..d5481f7 100644
--- a/src/build-template.js
+++ b/src/build-template.js
@@ -18,15 +18,11 @@ export const renderTemplate = function (changelogTemplate, data, version) {
 };

 export const saveChangelogToFile = function (filePath, renderedTemplate) {
-  const fileDescriptor = fs.openSync(filePath, "a+");
-
   const oldData = fs.readFileSync(filePath);
   const newData = new Buffer.from(renderedTemplate);

-  fs.writeSync(fileDescriptor, newData, 0, newData.length, 0);
-  fs.writeSync(fileDescriptor, oldData, 0, oldData.length, newData.length);
-
-  fs.closeSync(fileDescriptor);
+  fs.unlinkSync(filePath);
+  fs.appendFileSync(filePath, newData + oldData);
 };

Error when i npx news-fragments burn 2.0.0 , i got this error now,

Error: ENOENT: no such file or directory, open 'CHANGELOG.md'
    at Object.openSync (node:fs:600:3)
    at Object.readFileSync (node:fs:468:35)
    at saveChangelogToFile (.../node_modules/news-fragments/src/build-template.js:23:22)
    at burn ((.../node_modules/news-fragments/src/cli/burn.js:46:3)
    at .../node_modules/news-fragments/src/cli/index.js:46:5
export const saveChangelogToFile = function (filePath, renderedTemplate) {
  // const fileDescriptor = fs.openSync(filePath, "a+");

  const oldData = fs.readFileSync(filePath);
  const newData = new Buffer.from(renderedTemplate);

  // fs.writeSync(fileDescriptor, newData, 0, newData.length, 0);
  // fs.writeSync(fileDescriptor, oldData, 0, oldData.length, newData.length);

  // fs.closeSync(fileDescriptor);
  fs.unlinkSync(filePath);
  fs.appendFileSync(filePath, newData + oldData);
};

update :
It's ok when i hav already CHANGELOG.md created. :D
maybe add a catch when the file does not exist ? and create it ?

export const saveChangelogToFile = function (filePath, renderedTemplate) {
  // const fileDescriptor = fs.openSync(filePath, "a+");
  if (!fs.existsSync(filePath)) {
    // asynchronously create a directory
    fs.writeFileSync(filePath, renderedTemplate)
   // first burn will be two fold so we return.
   return  
  
}



  const oldData = fs.readFileSync(filePath);
  const newData = new Buffer.from(renderedTemplate);

  // fs.writeSync(fileDescriptor, newData, 0, newData.length, 0);
  // fs.writeSync(fileDescriptor, oldData, 0, oldData.length, newData.length);

  // fs.closeSync(fileDescriptor);
  // Check if the file exists
  fs.unlinkSync(filePath);
  fs.appendFileSync(filePath, newData + oldData);
};

@rotavio @RayaneSlimani 2.0.11 has been released, please test it!

render after 4 test :D

[//]: # (s-2.0.3)

### 🪄 : 2.0.3 - [ 📅 : 2023-02-01]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.3)


[//]: # (s-2.0.2)

### 🪄 : 2.0.2 - [ 📅 : 2023-02-01]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.

[//]: # (e-2.0.2)


[//]: # (s-2.0.1)

### 🪄 : 2.0.1 - [ 📅 : 2023-02-01]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.

[//]: # (e-2.0.1)


[//]: # (s-2.0.0)

### 🪄 : 2.0.0 - [ 📅 : 2023-02-01]
## ❌ Removals
* 📋 Removals 1.
* 📋 Removals 2.
* 📋 Removals 3.

[//]: # (e-2.0.0)


➜ git:(master) ✗ npx news-fragments create removals 'Removals 1'          
Fragment fragments/1675254695016.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments create removals 'Removals 2'  
Fragment fragments/1675254702705.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments create removals 'Removals 3'
Fragment fragments/1675254705680.removals created with success!%                                   
➜  git:(master) ✗ npx news-fragments burn 2.0.0                  
1 fragments burned in CHANGELOG.md%                                                                
➜  git:(master) ✗ npx news-fragments create removals 'Removals 1'
Fragment fragments/1675254727381.removals created with success!%                                   
➜  git:(master) ✗ npx news-fragments create removals 'Removals 2'
Fragment fragments/1675254729772.removals created with success!%                                   
➜  git:(master) ✗ npx news-fragments burn 2.0.1                  
1 fragments burned in CHANGELOG.md%                                                                
➜  git:(master) ✗ npx news-fragments create removals 'Removals 1'
Fragment fragments/1675254736204.removals created with success!%                                   
➜  git:(master) ✗ npx news-fragments create removals 'Removals 2'
Fragment fragments/1675254738100.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments burn 2.0.2                  
1 fragments burned in CHANGELOG.md%                                                                
➜ git:(master) ✗ npx news-fragments create removals 'Removals 1'
Fragment fragments/1675254748767.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments create removals 'Removals 2'
Fragment fragments/1675254750437.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments create removals 'Removals 3'
Fragment fragments/1675254756444.removals created with success!%                                   
➜ git:(master) ✗ npx news-fragments burn 2.0.3                  
1 fragments burned in CHANGELOG.md%  

I will wait for @rotavio feedback before close this issue.

@jairhenrique For my part, issue is closed :)

@rotavio I will close this issue. If you have any problem, tell us.