├── .gitignore ├── .release-notes ├── 2.0.5 │ ├── release.md │ └── release.html ├── 2.4.2 │ ├── release.md │ └── release.html ├── 2.0.7 │ ├── release.md │ └── release.html ├── 2.5.1 │ ├── release.md │ └── release.html ├── 2.5.2 │ ├── release.md │ └── release.html ├── 2.5.3 │ ├── release.md │ └── release.html ├── 2.5.4 │ ├── release.md │ └── release.html ├── 2.5.0 │ ├── release.md │ └── release.html ├── 2.6.1 │ ├── release.md │ └── release.html ├── 2.7.3 │ ├── release.md │ └── release.html ├── 1.0.2 │ ├── release.md │ └── release.html ├── 2.4.3 │ ├── release.md │ └── release.html ├── 2.0.6 │ ├── release.md │ └── release.html ├── 2.2.8 │ ├── release.md │ └── release.html ├── 2.6.2 │ ├── release.md │ └── release.html ├── 2.7.2 │ ├── release.md │ └── release.html ├── 2.2.7 │ └── release.md ├── 2.7.1 │ ├── release.md │ └── release.html ├── 2.7.0 │ ├── release.md │ └── release.html ├── 2.4.0 │ ├── release.md │ └── release.html ├── 1.0.3 │ └── release.md ├── 2.2.10 │ └── release.md ├── 2.0.4 │ └── release.md ├── 2.5.5 │ └── release.md ├── 2.2.9 │ └── release.md ├── 2.8.0 │ └── release.md ├── 2.9.0 │ └── release.md ├── 2.4.1 │ └── release.md ├── 2.3.0 │ └── release.md ├── 2.6.0 │ └── release.md ├── 2.9.1 │ └── release.md ├── 2.1.7 │ └── release.md └── 1.0.4 │ └── release.md ├── assets └── logo.png ├── light-release.config.json ├── .github └── workflows │ └── stale.yml ├── LICENSE.md ├── package.json ├── lib ├── git-extractor.js ├── versioning.js ├── badge-utils.js ├── config.js └── git-utils.js ├── code_of_conduct.md ├── bin └── release.js ├── tests └── test.js └── CHANGELOG.md /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /package-lock.json 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /.release-notes/2.0.5/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.0.5 - October 20, 2024 2 | 3 | 4 | -------------------------------------------------------------------------------- /.release-notes/2.4.2/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.4.2 - December 5, 2024 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VincenzoManto/light-release/HEAD/assets/logo.png -------------------------------------------------------------------------------- /.release-notes/2.0.7/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.0.7 - October 20, 2024 2 | 3 | 4 | ### fix: fix the avatar image size in release-notes.js. ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Sun Oct 20 15:31:46 2024 +0200 7 | - **Files Modified:** 2 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.5.1/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.1 - December 5, 2024 2 | 3 | 4 | ### fix: escape newlines in release notes for tagging command ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:35:45 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.5.2/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.2 - December 5, 2024 2 | 3 | 4 | ### fix: escape newlines in release notes for tagging command ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:36:21 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.5.3/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.3 - December 5, 2024 2 | 3 | 4 | ### fix: update release notes formatting and improve tag creation command ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:42:27 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.5.4/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.4 - December 5, 2024 2 | 3 | 4 | ### fix: simplify release note handling and improve tag creation command ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:43:22 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.5.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.0 - December 5, 2024 2 | 3 | 4 | ### feat: add console logging for release notes and git commands in release script ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:35:12 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | -------------------------------------------------------------------------------- /.release-notes/2.6.1/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.6.1 - February 7, 2025 2 | 3 | 4 | ### issue #10 - update commit log command to use custom section delimiter for parsing 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Fri Feb 7 14:48:45 2025 +0100 9 | - **Files Modified:** 3 10 | 11 | -------------------------------------------------------------------------------- /.release-notes/2.7.3/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.7.3 - February 24, 2025 2 | 3 | 4 | ### Merge pull request #14 from VincenzoManto/bug-fix/minor-wordsBug fix/minor words 5 | 6 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 7 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 8 | - **Date:** Mon Feb 24 19:36:23 2025 +0100 9 | - **Files Modified:** 0 10 | 11 | -------------------------------------------------------------------------------- /light-release.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "generateMarkdown": true, 3 | "generateHTML": true, 4 | "releaseNotesDir": ".release-notes", 5 | "badgeStyle": "flat-square", 6 | "dateFormat": "YYYY-MM-DD", 7 | "showCommitImpact": true, 8 | "blockIfChangesExist": false, 9 | "autoCommit": false, 10 | "aiComment": { 11 | "enabled": true, 12 | "openAIKey": "", 13 | "additionalPrompt": "Be funny" 14 | }, 15 | "versionFileName": "package.json", 16 | "squashIntoSingleVersioning": true, 17 | "showAuthorLinks": true, 18 | "defaultImpactThresholds": { 19 | "low": 1, 20 | "medium": 5, 21 | "high": 10 22 | } 23 | } -------------------------------------------------------------------------------- /.release-notes/1.0.2/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v1.0.2 - October 20, 2024 2 | 3 | 4 | ### feature added readme ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 6 | - **Date:** Sun Oct 20 14:30:08 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### first commit ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 10 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 11 | - **Date:** Sun Oct 20 14:26:05 2024 +0200 12 | - **Files Modified:** 9 13 | 14 | -------------------------------------------------------------------------------- /.release-notes/2.4.3/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.4.3 - December 5, 2024 2 | 3 | 4 | ### fix: enhance release notes generation to return content for tagging ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Thu Dec 5 08:33:08 2024 +0100 7 | - **Files Modified:** 2 8 | 9 | ### chore: release v2.4.2 ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Thu Dec 5 08:24:25 2024 +0100 12 | - **Files Modified:** 3 13 | 14 | -------------------------------------------------------------------------------- /.release-notes/2.0.6/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.0.6 - October 20, 2024 2 | 3 | 4 | ### fix: Update git-utils.js to handle missing lastCommitHash ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 6 | - **Date:** Sun Oct 20 15:29:56 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### docs: Update README.md with instructions for including Light Release in package scripts ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 11 | - **Date:** Sun Oct 20 15:09:08 2024 +0200 12 | - **Files Modified:** 1 13 | 14 | -------------------------------------------------------------------------------- /.release-notes/2.2.8/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.2.8 - October 23, 2024 2 | 3 | 4 | ### Refactor release-notes.js to conditionally show impact badges ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Wed Oct 23 13:34:56 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### Refactor release-notes.js to conditionally generate HTML and Markdown release notes ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Wed Oct 23 13:33:33 2024 +0200 12 | - **Files Modified:** 1 13 | 14 | -------------------------------------------------------------------------------- /.release-notes/2.6.2/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.6.2 - February 7, 2025 2 | 3 | 4 | ### chore: update release notes and changelog for version 2.6.1 5 | 6 | ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Fri Feb 7 14:49:53 2025 +0100 9 | - **Files Modified:** 6 10 | 11 | ### issue #10 - update commit log command to use custom section delimiter for parsing 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Fri Feb 7 14:48:45 2025 +0100 16 | - **Files Modified:** 3 17 | 18 | -------------------------------------------------------------------------------- /.release-notes/2.7.2/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.7.2 - February 18, 2025 2 | 3 | 4 | ### fix: update delimiter in commit log parsing for consistency (#10) 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Tue Feb 18 10:29:15 2025 +0100 9 | - **Files Modified:** 5 10 | 11 | ### test: added rapid test function for git logs and implement commit log parser to extract commit details and modified files 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Thu Feb 13 20:55:42 2025 +0100 16 | - **Files Modified:** 3 17 | 18 | -------------------------------------------------------------------------------- /.release-notes/2.2.7/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.2.7 - October 23, 2024 2 | 3 | 4 | ### feat(versioning): Update versioning logic in release.js and versioning.jsIf something went wrong, it doesn't update package.json ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [](#) ![Author Image](https://github.com/github.png?size=40) 6 | - **Date:** undefined 7 | - **Files Modified:** 0 8 | 9 | ### vincmanto@gmail.com ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 10 | - **Author:** [VincenzoManto](https://github.com/VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 11 | - **Date:** undefined 12 | - **Files Modified:** 2 13 | 14 | ### chore: colorful messages ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 16 | - **Date:** Wed Oct 23 11:39:01 2024 +0200 17 | - **Files Modified:** 1 18 | 19 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. 2 | # 3 | # You can adjust the behavior by modifying this file. 4 | # For more information, see: 5 | # https://github.com/actions/stale 6 | name: Mark stale issues and pull requests 7 | 8 | on: 9 | workflow_dispatch: 10 | schedule: 11 | - cron: '34 0 * * *' 12 | 13 | jobs: 14 | stale: 15 | 16 | runs-on: ubuntu-latest 17 | permissions: 18 | issues: write 19 | pull-requests: write 20 | 21 | steps: 22 | - uses: actions/stale@v5 23 | with: 24 | days-before-issue-stale: 12 25 | days-before-issue-close: 2 26 | stale-issue-label: "stale" 27 | stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." 28 | close-issue-message: "This issue was closed because it has been inactive for 2 days since being marked as stale." 29 | days-before-pr-stale: -1 30 | days-before-pr-close: -1 31 | repo-token: ${{ secrets.GITHUB_TOKEN }} 32 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [2024] [Vincenzo Manto] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /.release-notes/2.7.1/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.7.1 - February 12, 2025 2 | 3 | 4 | ### Merge branch 'main' of https://github.com/VincenzoManto/light-release 5 | 6 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Wed Feb 12 18:53:47 2025 +0100 9 | - **Files Modified:** 0 10 | 11 | ### fix: correct formatting in git log command for consistent output 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Wed Feb 12 18:53:45 2025 +0100 16 | - **Files Modified:** 4 17 | 18 | ### Update README.md 19 | 20 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 21 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 22 | - **Date:** Tue Feb 11 13:33:44 2025 +0100 23 | - **Files Modified:** 3 24 | 25 | -------------------------------------------------------------------------------- /.release-notes/2.7.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.7.0 - February 9, 2025 2 | 3 | 4 | ### refactor: enhance committer info function to include author parameter 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Sun Feb 9 12:51:13 2025 +0100 9 | - **Files Modified:** 4 10 | 11 | ### refactor: enhance committer info retrieval to include author parameter 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Sun Feb 9 12:50:19 2025 +0100 16 | - **Files Modified:** 5 17 | 18 | ### docs: update README to link npm version and downloads badges 19 | 20 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 21 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 22 | - **Date:** Fri Feb 7 14:51:37 2025 +0100 23 | - **Files Modified:** 3 24 | 25 | -------------------------------------------------------------------------------- /.release-notes/2.4.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.4.0 - November 17, 2024 2 | 3 | 4 | ### Merge pull request #8 from VincenzoManto/feat/prereleasesFeat/prereleases ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 6 | - **Date:** Sun Nov 3 11:16:47 2024 +0100 7 | - **Files Modified:** 0 8 | 9 | ### Merge branch 'main' into feat/prereleases ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 11 | - **Date:** Sun Nov 3 11:14:45 2024 +0100 12 | - **Files Modified:** 0 13 | 14 | ### Merge pull request #7 from VincenzoManto/feat/testingtest: Update getNewVersion function to accept an optional passed version ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 16 | - **Date:** Thu Oct 31 12:42:33 2024 +0100 17 | - **Files Modified:** 0 18 | 19 | -------------------------------------------------------------------------------- /.release-notes/1.0.3/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v1.0.3 - October 20, 2024 2 | 3 | 4 | ### fix(md notes): release notes in md ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 6 | - **Date:** Sun Oct 20 14:33:26 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### added release notes ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 10 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 11 | - **Date:** Sun Oct 20 14:32:41 2024 +0200 12 | - **Files Modified:** 7 13 | 14 | ### feature added readme ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 16 | - **Date:** Sun Oct 20 14:30:08 2024 +0200 17 | - **Files Modified:** 1 18 | 19 | ### first commit ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 20 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 21 | - **Date:** Sun Oct 20 14:26:05 2024 +0200 22 | - **Files Modified:** 9 23 | 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "light-release", 3 | "version": "2.9.1", 4 | "description": "A lightweight tool to automate your release process, compatible with conventional commit messages. It reads your commit history, determines the release type, and generates release notes without unnecessary dependencies.", 5 | "bin": { 6 | "light-release": "./bin/release.js" 7 | }, 8 | "scripts": { 9 | "release": "light-release", 10 | "publish:npm": "light-release && npm publish", 11 | "test": "mocha tests/test.js", 12 | "run": "node bin/release.js" 13 | }, 14 | "keywords": [ 15 | "release", 16 | "automation", 17 | "conventional-commits", 18 | "changelog", 19 | "release-notes", 20 | "config", 21 | "npm", 22 | "js", 23 | "simple", 24 | "version-control", 25 | "versioning", 26 | "package-json", 27 | "version", 28 | "release", 29 | "semantic-release", 30 | "versioning-semantics" 31 | ], 32 | "repository": { 33 | "type": "git", 34 | "url": "https://github.com/VincenzoManto/light-release.git" 35 | }, 36 | "bugs": { 37 | "url": "https://github.com/VincenzoManto/light-release/issues" 38 | }, 39 | "homepage": "https://github.com/VincenzoManto/light-release#readme", 40 | "dependencies": { 41 | "fs-extra": "^10.0.0" 42 | }, 43 | "author": "Vincenzo Manto", 44 | "license": "MIT", 45 | "devDependencies": { 46 | "expect.js": "^0.3.1" 47 | } 48 | } -------------------------------------------------------------------------------- /.release-notes/2.2.10/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.2.10 - October 28, 2024 2 | 3 | 4 | ### Merge branch 'main' of https://github.com/VincenzoManto/light-release ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Mon Oct 28 10:45:43 2024 +0100 7 | - **Files Modified:** 0 8 | 9 | ### fix release.js to handle existing tags ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Mon Oct 28 10:45:40 2024 +0100 12 | - **Files Modified:** 1 13 | 14 | ### Update README.md ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 16 | - **Date:** Mon Oct 28 09:36:52 2024 +0100 17 | - **Files Modified:** 1 18 | 19 | ### Update README.md ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 21 | - **Date:** Mon Oct 28 09:36:01 2024 +0100 22 | - **Files Modified:** 1 23 | 24 | -------------------------------------------------------------------------------- /.release-notes/2.0.4/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.0.4 - October 20, 2024 2 | 3 | 4 | ### minor: added autocommit in this repo ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 6 | - **Date:** Sun Oct 20 14:59:40 2024 +0200 7 | - **Files Modified:** 2 8 | 9 | ### feat(heading)!: added commit.head by blaming package.json ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 11 | - **Date:** Sun Oct 20 14:58:19 2024 +0200 12 | - **Files Modified:** 1 13 | 14 | ### minor: added keywords in commits ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 15 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 16 | - **Date:** Sun Oct 20 14:53:23 2024 +0200 17 | - **Files Modified:** 2 18 | 19 | ### BREAKING CHANGE: added autocommit that allows user to commit versioning changes all in one ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 20 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 21 | - **Date:** Sun Oct 20 14:49:08 2024 +0200 22 | - **Files Modified:** 2 23 | 24 | -------------------------------------------------------------------------------- /.release-notes/2.5.5/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.5.5 - January 5, 2025 2 | 3 | 4 | ### Merge branch 'main' of https://github.com/VincenzoManto/light-release ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Sun Jan 5 17:14:10 2025 +0100 7 | - **Files Modified:** 0 8 | 9 | ### close #9 - update patchWords array for improved keyword handling ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Sun Jan 5 17:14:06 2025 +0100 12 | - **Files Modified:** 1 13 | 14 | ### Create stale.yml ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 16 | - **Date:** Sun Dec 22 11:30:36 2024 +0100 17 | - **Files Modified:** 1 18 | 19 | ### Update README.md ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 21 | - **Date:** Thu Dec 5 12:33:01 2024 +0100 22 | - **Files Modified:** 1 23 | 24 | -------------------------------------------------------------------------------- /.release-notes/2.2.9/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.2.9 - October 23, 2024 2 | 3 | 4 | ### fixes tag creation when it already exists ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Wed Oct 23 13:38:32 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### chore: release v2.2.8 ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Wed Oct 23 13:35:30 2024 +0200 12 | - **Files Modified:** 3 13 | 14 | ### Refactor release-notes.js to conditionally show impact badges ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 16 | - **Date:** Wed Oct 23 13:34:56 2024 +0200 17 | - **Files Modified:** 1 18 | 19 | ### Refactor release-notes.js to conditionally generate HTML and Markdown release notes ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 21 | - **Date:** Wed Oct 23 13:33:33 2024 +0200 22 | - **Files Modified:** 1 23 | 24 | -------------------------------------------------------------------------------- /lib/git-extractor.js: -------------------------------------------------------------------------------- 1 | function getCommits(commitLog) { 2 | try { 3 | const commits = []; 4 | let currentCommit = null; 5 | 6 | commitLog.split('££££').forEach((line) => { 7 | if (line.includes('§§§§')) { 8 | const [hash, message, email, author, date] = line.split('|'); 9 | currentCommit = { hash: hash.replace('§§§§', ''), message: message.replace(/\n/g, ' '), email, author, date, modifiedFiles: 0 }; 10 | commits.push(currentCommit); 11 | } else if (line.trim() !== '') { 12 | line.split('\n').forEach((l) => { 13 | // const [added, deleted, file] = l.split(/\s+/); 14 | currentCommit.modifiedFiles++; 15 | }); 16 | } 17 | }); 18 | 19 | return commits; 20 | } catch (error) { 21 | console.error('Error: Git is not installed or not accessible in this environment.'); 22 | process.exit(1); 23 | } 24 | } 25 | console.log(getCommits( 26 | `\$\$\$\$§§§§af6c5b0bd91786fd0009cbb897c216318995603c|chore: release v2.0.1|vincmanto@gmail.com|VincenzoManto|Thu Feb 13 20:46:19 2025 +0100\$\$\$\$ 27 | 5 63 .release-notes/2.0.1/release.html 28 | 1 15 .release-notes/2.0.1/release.md 29 | 5 0 CHANGELOG.md 30 | 31 | \$\$\$\$§§§§871a2f8b86af9a90eafb93960591695d12e20ae6|chore: update light-release dependency to version 2.7.1|vincmanto@gmail.com|VincenzoManto|Thu Feb 13 20:46:14 2025 +0100\$\$\$\$ 32 | 1 1 package.json 33 | 4 4 pnpm-lock.yaml 34 | ` 35 | 36 | )) -------------------------------------------------------------------------------- /.release-notes/2.8.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.8.0 - February 28, 2025 2 | 3 | 4 | ### fix: correct release notes path in changelog entry 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Fri Feb 28 09:40:48 2025 +0100 9 | - **Files Modified:** 4 10 | 11 | ### docs: update README to include baseUrl configuration option 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Fri Feb 28 09:39:56 2025 +0100 16 | - **Files Modified:** 4 17 | 18 | ### feat: add baseUrl configuration option and update release notes path generation - #15 19 | 20 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 21 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 22 | - **Date:** Fri Feb 28 09:38:40 2025 +0100 23 | - **Files Modified:** 5 24 | 25 | ### fix: enhance config creation check to prevent blocking on uncommitted changes - closes #12 26 | 27 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 28 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 29 | - **Date:** Mon Feb 24 19:46:13 2025 +0100 30 | - **Files Modified:** 4 31 | 32 | -------------------------------------------------------------------------------- /.release-notes/2.9.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.9.0 - March 30, 2025 2 | 3 | 4 | ### feat: add AI comment generation feature to release notes in README 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Sun Mar 30 13:11:36 2025 +0200 9 | - **Files Modified:** 4 10 | 11 | ### feat: improve error handling for AI comment generation in release notes 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Sun Mar 30 13:09:03 2025 +0200 16 | - **Files Modified:** 4 17 | 18 | ### fix: handle errors in AI comment generation for release notes 19 | 20 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 21 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 22 | - **Date:** Sun Mar 30 13:01:37 2025 +0200 23 | - **Files Modified:** 3 24 | 25 | 26 | ### Summary 27 | "Release Note Commentary: 28 | - We've added a fancy new AI comment generation feature to our release notes! Watch out, Shakespeare! 29 | - Our AI now handles errors like a pro when generating comments for release notes. It's like having a personal assistant, but cooler. 30 | - We fixed the bugs in our AI comment generation. No more rogue comments causing chaos! Our AI is now on its best behavior. Or is it...? 🤖🔧 #ReleaseNoteDrama" 31 | 32 | 33 | -------------------------------------------------------------------------------- /.release-notes/2.4.1/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.4.1 - November 18, 2024 2 | 3 | 4 | ### fix: change committer declaration to let for consistency in release notes generation ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Mon Nov 18 12:52:48 2024 +0100 7 | - **Files Modified:** 1 8 | 9 | ### chore: release v2.4.0 ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Sun Nov 17 18:44:50 2024 +0100 12 | - **Files Modified:** 3 13 | 14 | ### Merge pull request #8 from VincenzoManto/feat/prereleasesFeat/prereleases ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 16 | - **Date:** Sun Nov 3 11:16:47 2024 +0100 17 | - **Files Modified:** 0 18 | 19 | ### Merge branch 'main' into feat/prereleases ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 21 | - **Date:** Sun Nov 3 11:14:45 2024 +0100 22 | - **Files Modified:** 0 23 | 24 | ### Merge pull request #7 from VincenzoManto/feat/testingtest: Update getNewVersion function to accept an optional passed version ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 25 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 26 | - **Date:** Thu Oct 31 12:42:33 2024 +0100 27 | - **Files Modified:** 0 28 | 29 | -------------------------------------------------------------------------------- /lib/versioning.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | /** 5 | * Update the version in the package.json file. Uses package.json unless there is an override in the `versionFileName` config field. 6 | * @param {*} version new version changes (major, minor, patch) 7 | * @param {*} config 8 | * @returns 9 | */ 10 | function updateVersion(version, config) { 11 | const packageJsonPath = path.resolve(process.cwd(), config.versionFileName); 12 | const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); 13 | 14 | packageJson.version = version; 15 | fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8'); 16 | return packageJson.version; 17 | } 18 | 19 | /** 20 | * Get the new version based on the current version and the changes. Uses package.json unless there is an override in the `versionFileName` config field. 21 | * @param {*} newVersion 22 | * @param {*} config 23 | * @param {*} _passedVersion external version to use instead of the one in the package.json 24 | * @returns 25 | */ 26 | function getNewVersion(newVersion, config, _passedVersion = null) { 27 | const packageJsonPath = path.resolve(process.cwd(), config.versionFileName); 28 | const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); 29 | 30 | let [major, minor, patch, prerelease] = _passedVersion || packageJson.version.split(/[\.\-]/).map(Number); 31 | if (config.squashIntoSingleVersioning) { 32 | if (newVersion.major > 0) { 33 | major++; 34 | minor = 0; 35 | patch = 0; 36 | } else if (newVersion.minor > 0) { 37 | minor++; 38 | patch = 0; 39 | } else if (newVersion.patch > 0) { 40 | patch++; 41 | } 42 | if (newVersion.prerelease) { 43 | prerelease++; 44 | } 45 | } else { 46 | major += newVersion.major; 47 | minor += newVersion.minor; 48 | patch += newVersion.patch; 49 | prerelease += newVersion.prerelease; 50 | } 51 | 52 | return prerelease ? `${major}.${minor}.${patch}-${prerelease}` : `${major}.${minor}.${patch}`; 53 | } 54 | 55 | module.exports = { updateVersion, getNewVersion }; 56 | -------------------------------------------------------------------------------- /.release-notes/2.3.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.3.0 - October 29, 2024 2 | 3 | 4 | ### Merge pull request #3 from eturino/feature/non-package-json-supportfeat: config.versionFileName to support Deno and other non package.json scenarios ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 6 | - **Date:** Tue Oct 29 10:14:33 2024 +0100 7 | - **Files Modified:** 0 8 | 9 | ### Merge branch 'main' into feature/non-package-json-support ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 11 | - **Date:** Tue Oct 29 08:30:05 2024 +0100 12 | - **Files Modified:** 0 13 | 14 | ### fix: prevent multiple jumps of version when `squashIntoSingleVersioning` is enabled.fixes #4 ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [](#) ![Author Image](https://github.com/github.png?size=40) 16 | - **Date:** undefined 17 | - **Files Modified:** 0 18 | 19 | ### eturino@eturino.com ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [Eduardo Turiño](https://github.com/Eduardo Turiño) ![Author Image](https://avatars.githubusercontent.com/Eduardo Turiño?size=40) 21 | - **Date:** undefined 22 | - **Files Modified:** 1 23 | 24 | ### fix: release.json executable ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 25 | - **Author:** [eturino](https://github.com/eturino) ![Author Image](https://avatars.githubusercontent.com/eturino?size=40) 26 | - **Date:** Sun Oct 27 22:10:01 2024 +0000 27 | - **Files Modified:** 1 28 | 29 | ### feat: config.versionFileName to support Deno and other non package.json scenarios ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 30 | - **Author:** [eturino](https://github.com/eturino) ![Author Image](https://avatars.githubusercontent.com/eturino?size=40) 31 | - **Date:** Sun Oct 27 21:58:54 2024 +0000 32 | - **Files Modified:** 8 33 | 34 | -------------------------------------------------------------------------------- /.release-notes/2.6.0/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.6.0 - February 3, 2025 2 | 3 | 4 | ### Merge pull request #11 from VincenzoManto/bug-fix/omitAuthor-fixingBug fix/omit author fixing 5 | 6 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 7 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 8 | - **Date:** Mon Feb 3 17:20:48 2025 +0100 9 | - **Files Modified:** 0 10 | 11 | ### refactor: clean up code formatting and improve readability in release notes generation 12 | 13 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Mon Feb 3 17:17:37 2025 +0100 16 | - **Files Modified:** 1 17 | 18 | ### fix: issue #10 - conditionally display author information in release notes 19 | 20 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 21 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 22 | - **Date:** Mon Feb 3 17:16:02 2025 +0100 23 | - **Files Modified:** 1 24 | 25 | ### Update README.md 26 | 27 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 28 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 29 | - **Date:** Mon Jan 13 12:23:33 2025 +0100 30 | - **Files Modified:** 1 31 | 32 | ### Update stale.yml 33 | 34 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 35 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 36 | - **Date:** Thu Jan 9 10:32:58 2025 +0100 37 | - **Files Modified:** 1 38 | 39 | ### Update stale.yml 40 | 41 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 42 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 43 | - **Date:** Mon Jan 6 16:49:44 2025 +0100 44 | - **Files Modified:** 1 45 | 46 | -------------------------------------------------------------------------------- /lib/badge-utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Create a badge with the given label, value, and color 3 | * @param {*} label label for the badge 4 | * @param {*} value value for the badge 5 | * @param {*} color color of the badge 6 | * @param {*} style style of the badge (flat, flat-square, plastic) 7 | * @param {*} type type of the badge (html, md) 8 | * @returns 9 | */ 10 | function generateBadge(label, value, color, style = 'flat-square', type = 'md') { 11 | if (type === 'html') { 12 | return `${label} badge`; 13 | } else if (type === 'md') { 14 | return `![${label}](https://img.shields.io/badge/${label}-${value}-${color}?style=${style})`; 15 | } 16 | } 17 | 18 | /** 19 | * Generate a badge based on the number of modified files 20 | * @param {*} modifiedFiles modified files in the commit 21 | * @param {*} config configuration object 22 | * @param {*} type type of the badge (html, md) 23 | * @returns 24 | */ 25 | function getImpactBadge(modifiedFiles, config, type = 'md') { 26 | const thresholds = config.defaultImpactThresholds || { low: 1, medium: 5, high: 10 }; 27 | 28 | if (modifiedFiles <= thresholds.low) { 29 | return generateBadge('impact', 'low', 'green', config.badgeStyle, type); 30 | } else if (modifiedFiles <= thresholds.medium) { 31 | return generateBadge('impact', 'medium', 'yellow', config.badgeStyle, type); 32 | } else { 33 | return generateBadge('impact', 'high', 'red', config.badgeStyle, type); 34 | } 35 | } 36 | 37 | /** 38 | * Get committer information from the email 39 | * @param {string} email email of the committer 40 | * @param {string?} author author of the committer 41 | * @returns 42 | */ 43 | function getCommitterInfo(email, author) { 44 | const emailParts = email?.split('@') || ['']; 45 | const username = author || emailParts[0]; 46 | 47 | let profileLink = `https://github.com/${author || username}`; 48 | 49 | if (!username) { 50 | profileLink = '#'; 51 | } 52 | 53 | return { 54 | name: username, 55 | profileLink: profileLink, 56 | image: getCommitterImage(username), 57 | }; 58 | } 59 | 60 | /** 61 | * Get the committer image from the username 62 | * @deprecated 63 | * @param {*} username username of the committer 64 | * @returns 65 | */ 66 | function getCommitterImage(username) { 67 | return `https://cdn-icons-png.flaticon.com/512/25/25231.png`; 68 | } 69 | 70 | module.exports = { generateBadge, getImpactBadge, getCommitterInfo, getCommitterImage }; 71 | -------------------------------------------------------------------------------- /lib/config.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | /** 5 | * Check if the configuration file exists, if not create it 6 | * @returns true if the configuration file was created 7 | */ 8 | function checkAndCreateConfig() { 9 | const configPath = path.join(process.cwd(), 'light-release.config.json'); 10 | if (!fs.existsSync(configPath)) { 11 | createDefaultConfig(); 12 | console.log('Default configuration file created: light-release.config.json'); 13 | return true; 14 | } 15 | return false; 16 | } 17 | 18 | /** 19 | * Load the configuration from the configuration 20 | * @returns 21 | */ 22 | function loadConfig() { 23 | const configPath = path.join(process.cwd(), 'light-release.config.json'); 24 | if (fs.existsSync(configPath)) { 25 | const found = JSON.parse(fs.readFileSync(configPath, 'utf8')); 26 | return _validateConfig(found); 27 | } else { 28 | return _buildDefaultConfig(); 29 | } 30 | } 31 | 32 | /** 33 | * Create a default configuration file 34 | * @returns default configuration object 35 | */ 36 | function createDefaultConfig() { 37 | const defaultConfig = _buildDefaultConfig(); 38 | 39 | const configPath = path.join(process.cwd(), 'light-release.config.json'); 40 | fs.writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2), 'utf8'); 41 | return defaultConfig; 42 | } 43 | 44 | // PRIVATE HELPERS 45 | 46 | function _validateConfig(config) { 47 | config.versionFileName = _validateVersionFileName(config.versionFileName); 48 | return config; 49 | } 50 | 51 | const DEFAULT_VERSION_FILENAME = "package.json"; 52 | const VALID_VERSION_FILENAMES = [DEFAULT_VERSION_FILENAME, "deno.json", "jsr.json"]; 53 | 54 | function _validateVersionFileName(given) { 55 | if (!given) return DEFAULT_VERSION_FILENAME; 56 | 57 | if (VALID_VERSION_FILENAMES.includes(given)) { 58 | return given; 59 | } 60 | 61 | const errorMessage = `The versionFileName is invalid. Choose one of the following: ${JSON.stringify(VALID_VERSION_FILENAMES)}`; 62 | console.error(errorMessage); 63 | throw new Error(errorMessage); 64 | } 65 | 66 | function _buildDefaultConfig() { 67 | return { 68 | generateMarkdown: true, 69 | generateHTML: true, 70 | releaseNotesDir: '.release-notes', 71 | badgeStyle: 'flat-square', 72 | dateFormat: 'YYYY-MM-DD', 73 | autoCommit: false, 74 | baseUrl: '.', 75 | omitAuthor: false, 76 | blockIfChangesExist: true, 77 | aiComment: { 78 | enabled: false, 79 | openAIKey: null, 80 | prompt: 'Generate a release note for the following changes:', 81 | }, 82 | squashIntoSingleVersioning: true, 83 | showCommitImpact: true, 84 | showAuthorLinks: true, 85 | versionFileName: DEFAULT_VERSION_FILENAME, 86 | defaultImpactThresholds: { 87 | low: 1, 88 | medium: 5, 89 | high: 10, 90 | }, 91 | }; 92 | } 93 | 94 | module.exports = { loadConfig, createDefaultConfig, checkAndCreateConfig }; 95 | -------------------------------------------------------------------------------- /code_of_conduct.md: -------------------------------------------------------------------------------- 1 | # Light Release Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | - Using welcoming and inclusive language 12 | - Being respectful of differing viewpoints and experiences 13 | - Gracefully accepting constructive criticism 14 | - Focusing on what is best for the community 15 | - Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | - The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | - Trolling, insulting/derogatory comments, and personal or political attacks 21 | - Public or private harassment 22 | - Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | - Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]. 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ -------------------------------------------------------------------------------- /bin/release.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const { loadConfig, checkAndCreateConfig } = require('../lib/config'); 3 | const { getCommits, classifyVersion, checkIfChangesExist } = require('../lib/git-utils'); 4 | const { generateReleaseNotes } = require('../lib/release-notes'); 5 | const { updateVersion, getNewVersion } = require('../lib/versioning'); 6 | 7 | /** 8 | * @file release.js 9 | * @description This script automates the release process by loading configuration, 10 | * retrieving commits, classifying the version type, updating the version, 11 | * and generating release notes. 12 | * @module release 13 | */ 14 | 15 | /** 16 | * Loads the configuration file and checks if it needs to be created. 17 | * @function checkAndCreateConfig 18 | */ 19 | 20 | /** 21 | * Loads the configuration settings. 22 | * @function loadConfig 23 | * @returns {Object} The configuration settings. 24 | */ 25 | 26 | /** 27 | * Retrieves the list of commits. 28 | * @function getCommits 29 | * @returns {Array} The list of commits. 30 | */ 31 | 32 | /** 33 | * Classifies the version type based on the commits. 34 | * @function classifyVersion 35 | * @param {Array} commits - The list of commits. 36 | * @returns {string} The type of the new version (e.g., 'major', 'minor', 'patch'). 37 | */ 38 | 39 | /** 40 | * Updates the version based on the version type. 41 | * @function updateVersion 42 | * @param {string} versionType - The type of the new version. 43 | * @returns {string} The new version number. 44 | */ 45 | 46 | /** 47 | * Generates release notes for the new version. 48 | * @function generateReleaseNotes 49 | * @param {string} newVersion - The new version number. 50 | * @param {Object} config - The configuration settings. 51 | */ 52 | 53 | const created = checkAndCreateConfig(); 54 | 55 | const config = loadConfig(); 56 | 57 | if ((config.blockIfChangesExist && !created) && checkIfChangesExist()) { 58 | console.log('\x1b[31m%s\x1b[0m', 'Error: There are uncommitted changes in the repository. Please commit or stash them before proceeding or change blockIfChangesExist config'); 59 | process.exit(1); 60 | } 61 | 62 | const commits = getCommits(config); 63 | 64 | const newVersionType = classifyVersion(commits, config); 65 | 66 | const newVersion = getNewVersion(newVersionType, config); 67 | 68 | const releaseNotes = generateReleaseNotes(newVersion, config); 69 | 70 | updateVersion(newVersion, config); 71 | 72 | console.log(`New release version: ${newVersion} of type ${newVersionType.type}`); 73 | 74 | if (config.autoCommit) { 75 | console.log('\x1b[36m%s\x1b[0m', '\nAuto commit is enabled. Committing the changes to the repository...\n'); 76 | const execSync = require('child_process').execSync; 77 | 78 | // Verifica se il tag esiste controllando l'output di `git tag -l` 79 | const tagExists = execSync(`git tag -l v${newVersion}`).toString().trim() === `v${newVersion}`; 80 | 81 | try { 82 | if (tagExists) { 83 | console.warn(`\n\x1b[33mWarning: Tag v${newVersion} already exists. Skipping tag creation.\x1b[0m\n`); 84 | execSync(`git add . && git commit -m "chore: release v${newVersion}" && git push`, { stdio: 'inherit' }); 85 | } else { 86 | execSync(`git add . && git commit -m "chore: release v${newVersion}" && git tag -a v${newVersion} -m "Release note v${newVersion}" && git push --follow-tags`, { stdio: 'inherit' }); 87 | } 88 | } catch (err) { 89 | console.error('\x1b[31m%s\x1b[0m', 'Error: Unable to commit the changes to the repository.'); 90 | process.exit(0); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /.release-notes/2.9.1/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.9.1 - May 16, 2025 2 | 3 | 4 | ### fix: enhance getLastCommit function to accurately identify the last commit that modified the package.json version - #19 5 | 6 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 7 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 8 | - **Date:** Thu May 8 13:37:01 2025 +0200 9 | - **Files Modified:** 4 10 | 11 | ### test: update getLastCommit tests and fix expected version in lightRelease tests 12 | 13 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 14 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 15 | - **Date:** Thu May 8 13:36:52 2025 +0200 16 | - **Files Modified:** 4 17 | 18 | ### fix: update devDependencies to replace chai with expect.js in package.json 19 | 20 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 21 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 22 | - **Date:** Thu May 8 13:36:32 2025 +0200 23 | - **Files Modified:** 4 24 | 25 | ### fix: add devDependencies section for chai in package.json 26 | 27 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 28 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 29 | - **Date:** Thu May 8 13:18:13 2025 +0200 30 | - **Files Modified:** 4 31 | 32 | ### fix: improve getLastCommit function to accurately retrieve the last commit affecting package.json version 33 | 34 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 35 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 36 | - **Date:** Thu May 8 12:51:41 2025 +0200 37 | - **Files Modified:** 4 38 | 39 | ### fix: enhance getLastCommit function to retrieve commit hash based on version changes in package.json - #19 40 | 41 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 42 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 43 | - **Date:** Thu May 8 12:39:41 2025 +0200 44 | - **Files Modified:** 4 45 | 46 | ### Merge pull request #18 from VincenzoManto/feature/2025-03-30Feature/2025 03 30 47 | 48 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 49 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 50 | - **Date:** Tue Apr 1 11:26:00 2025 +0200 51 | - **Files Modified:** 0 52 | 53 | ### docs: add instructions for setting OpenAI API key as an environment variable in README 54 | 55 | ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 56 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 57 | - **Date:** Sun Mar 30 13:15:25 2025 +0200 58 | - **Files Modified:** 4 59 | 60 | ### Merge pull request #16 from VincenzoManto/feature/2025-02-28Feature/2025 02 28 61 | 62 | ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 63 | - **Author:** [VincenzoManto](https://github.com/64726971+VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 64 | - **Date:** Mon Mar 3 09:56:15 2025 +0100 65 | - **Files Modified:** 0 66 | 67 | -------------------------------------------------------------------------------- /.release-notes/2.1.7/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v2.1.7 - October 23, 2024 2 | 3 | 4 | ### chore(versions): enable squashIntoSingleVersioning option in light-release.config.json ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 6 | - **Date:** Wed Oct 23 11:37:04 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### fix(badge-utils): handle null email in getCommitterInfo function ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 11 | - **Date:** Wed Oct 23 11:36:49 2024 +0200 12 | - **Files Modified:** 2 13 | 14 | ### fix(git-utils): update minorWords regex pattern ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 16 | - **Date:** Wed Oct 23 11:33:03 2024 +0200 17 | - **Files Modified:** 1 18 | 19 | ### feat(git-utils): add support for additional commit message keywordsAdded support for additional commit message keywords in the git-utils.js file. The patchWords array now includes the keywords "style", "docs", "test", and "chore" in addition to the existing keywords for fixing and closing issues. This change enhances the classification of commit messages in the versioning logic. ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [](#) ![Author Image](https://github.com/github.png?size=40) 21 | - **Date:** undefined 22 | - **Files Modified:** 1 23 | 24 | ### vincmanto@gmail.com ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 25 | - **Author:** [VincenzoManto](https://github.com/VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 26 | - **Date:** undefined 27 | - **Files Modified:** 1 28 | 29 | ### feat(versioning): update versioning logic to support squashIntoSingleVersioning option ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 30 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 31 | - **Date:** Wed Oct 23 11:29:48 2024 +0200 32 | - **Files Modified:** 4 33 | 34 | ### fix(git-utils): add support for multi-line commit messagesThe code changes in this commit modify the `commitLogCommand` in the `getCommits` function of `git-utils.js`. The changes include adding support for multi-line commit messages by appending `%b` to the format string. This allows the commit messages to include line breaks and additional information. ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 35 | - **Author:** [](#) ![Author Image](https://github.com/github.png?size=40) 36 | - **Date:** undefined 37 | - **Files Modified:** 1 38 | 39 | ### vincmanto@gmail.com ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 40 | - **Author:** [VincenzoManto](https://github.com/VincenzoManto) ![Author Image](https://avatars.githubusercontent.com/VincenzoManto?size=40) 41 | - **Date:** undefined 42 | - **Files Modified:** 1 43 | 44 | ### feat(added refactor keywords): added case insensitivity to keywords introduced github-colpilot keyword "refactor" ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 45 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto?size=40) 46 | - **Date:** Wed Oct 23 11:09:18 2024 +0200 47 | - **Files Modified:** 1 48 | 49 | -------------------------------------------------------------------------------- /.release-notes/1.0.4/release.md: -------------------------------------------------------------------------------- 1 | # Release Note v1.0.4 - October 20, 2024 2 | 3 | 4 | ### added code of conduct ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 5 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 6 | - **Date:** Sun Oct 20 14:41:32 2024 +0200 7 | - **Files Modified:** 1 8 | 9 | ### fix(readme): image size ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 10 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 11 | - **Date:** Sun Oct 20 14:40:13 2024 +0200 12 | - **Files Modified:** 1 13 | 14 | ### fix(readme): image size ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 15 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 16 | - **Date:** Sun Oct 20 14:38:45 2024 +0200 17 | - **Files Modified:** 1 18 | 19 | ### fix(readme): image size ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 20 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 21 | - **Date:** Sun Oct 20 14:37:31 2024 +0200 22 | - **Files Modified:** 1 23 | 24 | ### fix(readme): image size ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 25 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 26 | - **Date:** Sun Oct 20 14:36:03 2024 +0200 27 | - **Files Modified:** 1 28 | 29 | ### fix(readme) ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 30 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 31 | - **Date:** Sun Oct 20 14:35:35 2024 +0200 32 | - **Files Modified:** 1 33 | 34 | ### added license ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 35 | - **Author:** [vincmanto](https://github.com/vincmanto) ![Author Image](https://avatars.githubusercontent.com/vincmanto) 36 | - **Date:** Sun Oct 20 14:35:07 2024 +0200 37 | - **Files Modified:** 2 38 | 39 | ### new version ![impact](https://img.shields.io/badge/impact-medium-yellow?style=flat-square) 40 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 41 | - **Date:** Sun Oct 20 14:33:34 2024 +0200 42 | - **Files Modified:** 4 43 | 44 | ### fix(md notes): release notes in md ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 45 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 46 | - **Date:** Sun Oct 20 14:33:26 2024 +0200 47 | - **Files Modified:** 1 48 | 49 | ### added release notes ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 50 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 51 | - **Date:** Sun Oct 20 14:32:41 2024 +0200 52 | - **Files Modified:** 7 53 | 54 | ### feature added readme ![impact](https://img.shields.io/badge/impact-low-green?style=flat-square) 55 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 56 | - **Date:** Sun Oct 20 14:30:08 2024 +0200 57 | - **Files Modified:** 1 58 | 59 | ### first commit ![impact](https://img.shields.io/badge/impact-high-red?style=flat-square) 60 | - **Author:** [vincenzo.manto](https://github.com/vincenzo.manto) ![Author Image](https://avatars.githubusercontent.com/vincenzo.manto) 61 | - **Date:** Sun Oct 20 14:26:05 2024 +0200 62 | - **Files Modified:** 9 63 | 64 | -------------------------------------------------------------------------------- /.release-notes/2.0.5/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.0.5 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.0.5 30 |

31 |

Release note for version 2.0.5

32 |

October 20, 2024

33 |
34 | 35 |
36 | 37 | 38 |
39 |
40 |
41 | 42 | 43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |

52 | Sign up for updates 53 |

54 |

Get notified when we release new features.

55 |
56 |
57 |
58 |
59 | 64 |
65 |
66 | -------------------------------------------------------------------------------- /.release-notes/2.4.2/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.4.2 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.4.2 30 |

31 |

Release note for version 2.4.2

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 | 38 |
39 |
40 |
41 | 42 | 43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |

53 | Sign up for updates 54 |

55 |

Get notified when we release new features.

56 |
57 |
58 |
59 |
60 | 65 |
66 |
67 | -------------------------------------------------------------------------------- /tests/test.js: -------------------------------------------------------------------------------- 1 | const { getLastCommit, classifyVersion } = require('../lib/git-utils'); 2 | const { loadConfig } = require('../lib/config'); 3 | const { getNewVersion } = require('../lib/versioning'); 4 | const expect = require('expect.js'); 5 | const config = loadConfig(); 6 | 7 | 8 | describe('lightRelease', () => { 9 | const testCases = [ 10 | { version: { major: 0, minor: 1, patch: 0 }, commits: [{ message: 'BREAKING CHANGE: update API' }], expected: { major: 1, minor: 0, patch: 0 }, expectedVersion: '1.0.0' }, 11 | { version: { major: 1, minor: 0, patch: 0 }, commits: [{ message: 'BREAKING CHANGE: modify structure' }], expected: { major: 2, minor: 0, patch: 0 }, expectedVersion: '2.0.0' }, 12 | 13 | { version: { major: 0, minor: 1, patch: 0 }, commits: [{ message: 'feat: add login feature' }], expected: { major: 0, minor: 2, patch: 0 }, expectedVersion: '0.2.0' }, 14 | { version: { major: 1, minor: 2, patch: 3 }, commits: [{ message: 'feat: dashboard enhancement' }], expected: { major: 1, minor: 3, patch: 0 }, expectedVersion: '1.3.0' }, 15 | 16 | { version: { major: 1, minor: 2, patch: 3 }, commits: [{ message: 'fix: resolve navbar issue' }], expected: { major: 1, minor: 2, patch: 4 }, expectedVersion: '1.2.4' }, 17 | { version: { major: 1, minor: 3, patch: 9 }, commits: [{ message: 'fix: correct typo' }], expected: { major: 1, minor: 3, patch: 10 }, expectedVersion: '1.3.10' }, 18 | 19 | { version: { major: 1, minor: 0, patch: 0 }, commits: [{ message: 'feat: add analytics' }, { message: 'fix: handle null pointer' }], expected: { major: 1, minor: 1, patch: 0 }, expectedVersion: '1.1.0' }, 20 | { version: { major: 0, minor: 5, patch: 7 }, commits: [{ message: 'fix: align text' }, { message: 'feat: add dark mode' }], expected: { major: 0, minor: 6, patch: 0 }, expectedVersion: '0.6.0' }, 21 | 22 | { version: { major: 2, minor: 1, patch: 3 }, commits: [{ message: 'BREAKING CHANGE: restructure modules' }, { message: 'feat: add user profile' }, { message: 'fix: logout bug' }], expected: { major: 3, minor: 0, patch: 0 }, expectedVersion: '3.0.0' }, 23 | 24 | { version: { major: 1, minor: 1, patch: 1 }, commits: [], expected: { major: 1, minor: 1, patch: 1 }, expectedVersion: '1.1.1' }, 25 | 26 | { version: { major: 1, minor: 0, patch: 0 }, commits: [{ message: 'BREAKING CHANGE: revamp architecture' }, { message: 'BREAKING CHANGE: redesign core' }], expected: { major: 2, minor: 0, patch: 0 }, expectedVersion: '2.0.0' }, 27 | 28 | { version: { major: 1, minor: 1, patch: 0, prerelease: ['alpha', 1] }, commits: [{ message: 'fix: beta fix' }], expected: { major: 1, minor: 1, patch: 0, prerelease: ['alpha', 2] }, expectedVersion: '1.1.0-alpha.2' }, 29 | { version: { major: 1, minor: 1, patch: 1, prerelease: ['beta', 3] }, commits: [{ message: 'feat: add new beta feature' }], expected: { major: 1, minor: 2, patch: 0 }, expectedVersion: '1.2.0' }, 30 | 31 | { version: { major: 1, minor: 2, patch: 0, prerelease: ['rc', 1] }, commits: [{ message: 'fix: final adjustments' }], expected: { major: 1, minor: 2, patch: 0 }, expectedVersion: '1.2.0' }, 32 | 33 | { version: { major: 1, minor: 0, patch: 0 }, commits: [{ message: '' }, { message: 'feat: update design' }], expected: { major: 1, minor: 1, patch: 0 }, expectedVersion: '1.1.0' }, 34 | 35 | { version: { major: 1, minor: 4, patch: 8 }, commits: [{ message: 'fix: patch 1' }, { message: 'fix: patch 2' }], expected: { major: 1, minor: 4, patch: 9 }, expectedVersion: '1.4.9' }, 36 | { version: { major: 1, minor: 0, patch: 9 }, commits: [{ message: 'feat: add preview mode' }, { message: 'fix: toolbar bug' }], expected: { major: 1, minor: 1, patch: 0 }, expectedVersion: '1.1.0' }, 37 | 38 | ...Array(35) 39 | .fill(null) 40 | .map((_, i) => ({ 41 | version: { major: 1, minor: i % 10, patch: i % 3 }, 42 | commits: [{ message: 'fix: resolve issue #' + i }, { message: 'feat: feature #' + i }, { message: i % 5 === 0 ? 'BREAKING CHANGE: incompatible API changes' : '' }], 43 | expected: { 44 | major: i % 5 === 0 ? 2 : 1, 45 | minor: (i % 10) + 1, 46 | patch: i % 3 === 2 ? 0 : (i % 3) + 1, 47 | }, 48 | expectedVersion: `${i % 5 === 0 ? 2 : 1}.${(i % 10) + 1}.${i % 3 === 2 ? 0 : (i % 3) + 1}`, 49 | })), 50 | ]; 51 | 52 | testCases.forEach(({ version, commits, expected, expectedVersion }, index) => { 53 | it(`Test case #${index + 1}: should increment version to ${expectedVersion}`, () => { 54 | const newVersionType = classifyVersion(commits, config); 55 | 56 | const result = getNewVersion(newVersionType, config, [version.major, version.minor, version.patch]); 57 | expect(result).to.be(expectedVersion); 58 | }); 59 | }); 60 | }); 61 | 62 | 63 | describe('getLastCommit', () => { 64 | 65 | const commit = getLastCommit(config); 66 | console.log('Last commit:', commit); 67 | 68 | }); 69 | -------------------------------------------------------------------------------- /lib/git-utils.js: -------------------------------------------------------------------------------- 1 | const { execSync } = require('child_process'); 2 | 3 | /** 4 | * Get the last commit to edit package.json version (blaming package.json). Uses package.json unless there is an override in the `versionFileName` config field. 5 | * @param {*} config configuration object 6 | * @returns the last commit hash 7 | */ 8 | function getLastCommit(config) { 9 | const versionFileName = config.versionFileName; 10 | 11 | try { 12 | // Prende i commit che hanno modificato package.json con diff 13 | const log = execSync(`git log -p -- ${versionFileName}`, { encoding: 'utf8' }) 14 | .toString() 15 | .split(/^commit\s([a-f0-9]{40})$/gm) 16 | .filter(Boolean); 17 | 18 | for (let i = 0; i < log.length; i += 2) { 19 | const sha = log[i].trim(); 20 | const diff = log[i + 1]; 21 | 22 | // Here I am looking for the lines that start with - (old version) and + (new version) in the diff 23 | const versionChanged = /^[-+]\s*"version"\s*:\s*".*"/gm; 24 | const changes = [...diff.matchAll(versionChanged)]; 25 | 26 | const hasRemoval = changes.some((c) => c[0].startsWith('-')); 27 | const hasAddition = changes.some((c) => c[0].startsWith('+')); 28 | 29 | if (hasRemoval && hasAddition) { 30 | console.log(`Last commit with edited "version": ${sha}`); 31 | return sha; 32 | } 33 | } 34 | } catch (err) { 35 | console.error('Error:', err.message); 36 | process.exit(1); 37 | } 38 | } 39 | 40 | /** 41 | * Get the commit history from git 42 | * @throws Error if git is not installed or not accessible 43 | * @param {*} config configuration object 44 | * @returns 45 | */ 46 | function getCommits(config) { 47 | try { 48 | const lastCommitHash = getLastCommit(config); 49 | 50 | const commitLogCommand = lastCommitHash ? `git log ${lastCommitHash}..HEAD --pretty=format:"££££§§§§%H|%s%b|%ae|%an|%cd££££" --numstat` : 'git log --pretty=format:"££££§§§§%H|%s%b|%ae|%an|%cd££££" --numstat'; 51 | const commitLog = execSync(commitLogCommand, { encoding: 'utf8' }); 52 | const commits = []; 53 | let currentCommit = null; 54 | 55 | commitLog.split('££££').forEach((line) => { 56 | if (line.includes('§§§§')) { 57 | const [hash, message, email, author, date] = line.split('|'); 58 | currentCommit = { hash: hash.replace('§§§§', ''), message: message.replace(/\n/g, ' '), email, author, date, modifiedFiles: 0 }; 59 | commits.push(currentCommit); 60 | } else if (line.trim() !== '') { 61 | line.split('\n').forEach((l) => { 62 | currentCommit.modifiedFiles++; 63 | }); 64 | } 65 | }); 66 | 67 | return commits; 68 | } catch (error) { 69 | console.error('Error: Git is not installed or not accessible in this environment.'); 70 | process.exit(1); 71 | } 72 | } 73 | 74 | /** 75 | * Classify the version based on the commits 76 | * @param {*} commits commits from the git history 77 | * @param {*} config configuration object 78 | * @returns { major, minor, patch, prerelease, type } 79 | */ 80 | function classifyVersion(commits, config) { 81 | let major = 0, 82 | minor = 0, 83 | patch = 0, 84 | prerelease = null; 85 | 86 | let { majorWords, minorWords, patchWords, prereleaseWords } = config; 87 | 88 | if (!majorWords) { 89 | majorWords = [/^\s*feat(\(.*\))?\!:/i, /BREAKING CHANGE/i, /^\s*major|^\s*breaking/i, /^\s*\bperf\b/i, /^\s*\bfeat\b\!/i]; 90 | } else { 91 | majorWords = majorWords.map((word) => new RegExp(word)); 92 | } 93 | 94 | if (!minorWords) { 95 | minorWords = [/^\s*feat(\(.*\))?:/i, /^\s*\bminor\b/i, /^\s*\bfeature\b/i, /^\s*\brefactor\b\s*:/i]; 96 | } else { 97 | minorWords = minorWords.map((word) => new RegExp(word)); 98 | } 99 | 100 | if (!patchWords) { 101 | patchWords = [/^fix(\(.*\))?:/, /close|closes|fixes|resolves|fix|fixed|closed|resolve|resolved/i, /^\s*(style|docs|test|chore)/i]; 102 | } else { 103 | patchWords = patchWords.map((word) => new RegExp(word)); 104 | } 105 | 106 | // Define prerelease indicators 107 | if (!prereleaseWords) { 108 | prereleaseWords = [/alpha/i, /beta/i, /rc/i]; 109 | } else { 110 | prereleaseWords = prereleaseWords.map((word) => new RegExp(word)); 111 | } 112 | 113 | commits.forEach((commit) => { 114 | if (prereleaseWords.some((word) => word.test(commit.message))) { 115 | // Extract prerelease type from commit message 116 | prerelease = prereleaseWords 117 | .find((word) => word.test(commit.message)) 118 | .toString() 119 | .slice(1, -2); 120 | } else if (majorWords.some((word) => word.test(commit.message))) { 121 | major++; 122 | } else if (minorWords.some((word) => word.test(commit.message))) { 123 | minor++; 124 | } else if (patchWords.some((word) => word.test(commit.message))) { 125 | patch++; 126 | } 127 | }); 128 | 129 | return { 130 | major, 131 | minor, 132 | patch, 133 | prerelease, 134 | type: major > 0 ? 'major' : minor > 0 ? 'minor' : 'patch', 135 | }; 136 | } 137 | 138 | /** 139 | * Check if uncommitted changes are present in the repository 140 | * @returns true if changes exist, false otherwise 141 | */ 142 | function checkIfChangesExist() { 143 | try { 144 | const changes = execSync('git status --porcelain', { encoding: 'utf8' }); 145 | return changes.trim() !== ''; 146 | } catch (error) { 147 | console.error('Error: Git is not installed or not accessible in this environment.'); 148 | process.exit(1); 149 | } 150 | } 151 | 152 | module.exports = { getCommits, classifyVersion, checkIfChangesExist, getLastCommit }; 153 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [2.9.1] - May 16, 2025 2 | 3 | ### Changes 4 | - Release notes generated for version [2.9.1](./.release-notes/2.9.1/release.md) 5 | 6 | ## [2.9.0] - March 30, 2025 7 | 8 | ### Changes 9 | - Release notes generated for version [2.9.0](./.release-notes/2.9.0/release.md) 10 | 11 | ## [2.8.0] - February 28, 2025 12 | 13 | ### Changes 14 | - Release notes generated for version [2.8.0](./.release-notes/2.8.0/release.md) 15 | 16 | ## [2.7.3] - February 24, 2025 17 | 18 | ### Changes 19 | - Release notes generated for version [2.7.3](.release-notes/2.7.3/release.md) 20 | 21 | ## [2.7.2] - February 18, 2025 22 | 23 | ### Changes 24 | - Release notes generated for version [2.7.2](.release-notes/2.7.2/release.md) 25 | 26 | ## [2.7.1] - February 12, 2025 27 | 28 | ### Changes 29 | - Release notes generated for version [2.7.1](.release-notes/2.7.1/release.md) 30 | 31 | ## [2.7.0] - February 9, 2025 32 | 33 | ### Changes 34 | - Release notes generated for version [2.7.0](.release-notes/2.7.0/release.md) 35 | 36 | ## [2.6.2] - February 7, 2025 37 | 38 | ### Changes 39 | - Release notes generated for version [2.6.2](.release-notes/2.6.2/release.md) 40 | 41 | ## [2.6.1] - February 7, 2025 42 | 43 | ### Changes 44 | - Release notes generated for version [2.6.1](.release-notes/2.6.1/release.md) 45 | 46 | ## [2.6.1] - February 7, 2025 47 | 48 | ### Changes 49 | - Release notes generated for version [2.6.1](.release-notes/2.6.1/release.md) 50 | 51 | ## [2.6.1] - February 7, 2025 52 | 53 | ### Changes 54 | - Release notes generated for version [2.6.1](.release-notes/2.6.1/release.md) 55 | 56 | ## [2.6.1] - February 5, 2025 57 | 58 | ### Changes 59 | - Release notes generated for version [2.6.1](.release-notes/2.6.1/release.md) 60 | 61 | ## [2.6.0] - February 3, 2025 62 | 63 | ### Changes 64 | - Release notes generated for version [2.6.0](.release-notes/2.6.0/release.md) 65 | 66 | ## [2.5.5] - January 5, 2025 67 | 68 | ### Changes 69 | - Release notes generated for version [2.5.5](.release-notes/2.5.5/release.md) 70 | 71 | ## [2.5.4] - December 5, 2024 72 | 73 | ### Changes 74 | - Release notes generated for version [2.5.4](.release-notes/2.5.4/release.md) 75 | 76 | ## [2.5.3] - December 5, 2024 77 | 78 | ### Changes 79 | - Release notes generated for version [2.5.3](.release-notes/2.5.3/release.md) 80 | 81 | ## [2.5.2] - December 5, 2024 82 | 83 | ### Changes 84 | - Release notes generated for version [2.5.2](.release-notes/2.5.2/release.md) 85 | 86 | ## [2.5.1] - December 5, 2024 87 | 88 | ### Changes 89 | - Release notes generated for version [2.5.1](.release-notes/2.5.1/release.md) 90 | 91 | ## [2.5.0] - December 5, 2024 92 | 93 | ### Changes 94 | - Release notes generated for version [2.5.0](.release-notes/2.5.0/release.md) 95 | 96 | ## [2.4.3] - December 5, 2024 97 | 98 | ### Changes 99 | - Release notes generated for version [2.4.3](.release-notes/2.4.3/release.md) 100 | 101 | ## [2.4.2] - December 5, 2024 102 | 103 | ### Changes 104 | - Release notes generated for version [2.4.2](.release-notes/2.4.2/release.md) 105 | 106 | ## [2.4.2] - December 5, 2024 107 | 108 | ### Changes 109 | - Release notes generated for version [2.4.2](.release-notes/2.4.2/release.md) 110 | 111 | ## [2.4.1] - November 18, 2024 112 | 113 | ### Changes 114 | - Release notes generated for version [2.4.1](.release-notes/2.4.1/release.md) 115 | 116 | ## [2.4.0] - November 17, 2024 117 | 118 | ### Changes 119 | - Release notes generated for version [2.4.0](.release-notes/2.4.0/release.md) 120 | 121 | ## [2.4.0] - November 3, 2024 122 | 123 | ### Changes 124 | - Release notes generated for version [2.4.0](.release-notes/2.4.0/release.md) 125 | 126 | ## [2.3.0] - October 29, 2024 127 | 128 | ### Changes 129 | - Release notes generated for version [2.3.0](.release-notes/2.3.0/release.md) 130 | 131 | ## [2.2.10] - October 28, 2024 132 | 133 | ### Changes 134 | - Release notes generated for version [2.2.10](.release-notes/2.2.10/release.md) 135 | 136 | ## [2.2.9] - October 23, 2024 137 | 138 | ### Changes 139 | - Release notes generated for version [2.2.9](.release-notes/2.2.9/release.md) 140 | 141 | ## [2.2.8] - October 23, 2024 142 | 143 | ### Changes 144 | - Release notes generated for version [2.2.8](.release-notes/2.2.8/release.md) 145 | 146 | ## [2.2.8] - October 23, 2024 147 | 148 | ### Changes 149 | - Release notes generated for version [2.2.8](.release-notes/2.2.8/release.md) 150 | 151 | ## [2.2.7] - October 23, 2024 152 | 153 | ### Changes 154 | - Release notes generated for version [2.2.7](.release-notes/2.2.7/release.md) 155 | 156 | ## [2.1.7] - October 23, 2024 157 | 158 | ### Changes 159 | - Release notes generated for version [2.1.7](.release-notes/2.1.7/release.md) 160 | 161 | ## [2.0.7] - October 20, 2024 162 | 163 | ### Changes 164 | - Release notes generated for version [2.0.7](.release-notes/2.0.7/release.md) 165 | 166 | ## [2.0.6] - October 20, 2024 167 | 168 | ### Changes 169 | - Release notes generated for version [2.0.6](.release-notes/2.0.6/release.md) 170 | 171 | ## [2.0.5] - October 20, 2024 172 | 173 | ### Changes 174 | - Release notes generated for version [2.0.5](.release-notes/2.0.5/release.md) 175 | 176 | ## [2.0.4] - October 20, 2024 177 | 178 | ### Changes 179 | - Release notes generated for version [2.0.4](.release-notes/2.0.4/release.md) 180 | 181 | ## [1.0.4] - October 20, 2024 182 | 183 | ### Changes 184 | - Release notes generated for version [1.0.4](.release-notes/1.0.4/release.md) 185 | 186 | ## [1.0.3] - October 20, 2024 187 | 188 | ### Changes 189 | - Release notes generated for version [1.0.3](.release-notes/1.0.3/release.md) 190 | 191 | ## [1.0.2] - October 20, 2024 192 | 193 | ### Changes 194 | - Release notes generated for version [1.0.2](.release-notes/1.0.2/release.md) 195 | 196 | -------------------------------------------------------------------------------- /.release-notes/2.0.7/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.0.7 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.0.7 30 |

31 |

Release note for version 2.0.7

32 |

October 20, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | October 20, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: fix the avatar image size in release-notes.js. 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |

83 | Sign up for updates 84 |

85 |

Get notified when we release new features.

86 |
87 |
88 |
89 |
90 | 95 |
96 |
97 | -------------------------------------------------------------------------------- /.release-notes/2.5.1/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.5.1 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.5.1 30 |

31 |

Release note for version 2.5.1

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: escape newlines in release notes for tagging command 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.5.2/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.5.2 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.5.2 30 |

31 |

Release note for version 2.5.2

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: escape newlines in release notes for tagging command 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.5.3/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.5.3 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.5.3 30 |

31 |

Release note for version 2.5.3

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: update release notes formatting and improve tag creation command 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.5.4/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.5.4 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.5.4 30 |

31 |

Release note for version 2.5.4

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: simplify release note handling and improve tag creation command 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.5.0/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.5.0 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.5.0 30 |

31 |

Release note for version 2.5.0

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | feat: add console logging for release notes and git commands in release script 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.6.1/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.6.1 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.6.1 30 |

31 |

Release note for version 2.6.1

32 |

February 7, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | February 7, 2025 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | issue #10 - update commit log command to use custom section delimiter for parsing 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/2.7.3/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.7.3 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.7.3 30 |

31 |

Release note for version 2.7.3

32 |

February 24, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | February 24, 2025 55 |

56 | @Vincenzo Manto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | Merge pull request #14 from VincenzoManto/bug-fix/minor-wordsBug fix/minor words 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |

84 | Sign up for updates 85 |

86 |

Get notified when we release new features.

87 |
88 |
89 |
90 |
91 | 96 |
97 |
98 | -------------------------------------------------------------------------------- /.release-notes/1.0.2/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 1.0.2 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 1.0.2 30 |

31 |

Release note for version 1.0.2

32 |

October 20, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | October 20, 2024 55 |

56 | @vincenzo.manto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | feature added readme 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | October 20, 2024 82 |

83 | @vincenzo.manto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | first commit 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |

110 | Sign up for updates 111 |

112 |

Get notified when we release new features.

113 |
114 |
115 |
116 |
117 | 122 |
123 |
124 | -------------------------------------------------------------------------------- /.release-notes/2.0.6/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.0.6 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.0.6 30 |

31 |

Release note for version 2.0.6

32 |

October 20, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | October 20, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: Update git-utils.js to handle missing lastCommitHash 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | October 20, 2024 82 |

83 | @vincmanto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | docs: Update README.md with instructions for including Light Release in package scripts 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |

110 | Sign up for updates 111 |

112 |

Get notified when we release new features.

113 |
114 |
115 |
116 |
117 | 122 |
123 |
124 | -------------------------------------------------------------------------------- /.release-notes/2.2.8/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.2.8 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.2.8 30 |

31 |

Release note for version 2.2.8

32 |

October 23, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | October 23, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | Refactor release-notes.js to conditionally show impact badges 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | October 23, 2024 82 |

83 | @vincmanto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | Refactor release-notes.js to conditionally generate HTML and Markdown release notes 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |

110 | Sign up for updates 111 |

112 |

Get notified when we release new features.

113 |
114 |
115 |
116 |
117 | 122 |
123 |
124 | -------------------------------------------------------------------------------- /.release-notes/2.4.3/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.4.3 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.4.3 30 |

31 |

Release note for version 2.4.3

32 |

December 5, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | December 5, 2024 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: enhance release notes generation to return content for tagging 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | December 5, 2024 82 |

83 | @vincmanto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | chore: release v2.4.2 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |

111 | Sign up for updates 112 |

113 |

Get notified when we release new features.

114 |
115 |
116 |
117 |
118 | 123 |
124 |
125 | -------------------------------------------------------------------------------- /.release-notes/2.6.2/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.6.2 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.6.2 30 |

31 |

Release note for version 2.6.2

32 |

February 7, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | February 7, 2025 55 |

56 | @vincmanto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | chore: update release notes and changelog for version 2.6.1 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | February 7, 2025 82 |

83 | @vincmanto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | issue #10 - update commit log command to use custom section delimiter for parsing 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |

111 | Sign up for updates 112 |

113 |

Get notified when we release new features.

114 |
115 |
116 |
117 |
118 | 123 |
124 |
125 | -------------------------------------------------------------------------------- /.release-notes/2.7.2/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.7.2 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.7.2 30 |

31 |

Release note for version 2.7.2

32 |

February 18, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | February 18, 2025 55 |

56 | @Vincenzo 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | fix: update delimiter in commit log parsing for consistency (#10) 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | February 13, 2025 82 |

83 | @Vincenzo 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | test: added rapid test function for git logs and implement commit log parser to extract commit details and modified files 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |

111 | Sign up for updates 112 |

113 |

Get notified when we release new features.

114 |
115 |
116 |
117 |
118 | 123 |
124 |
125 | -------------------------------------------------------------------------------- /.release-notes/2.7.0/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.7.0 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.7.0 30 |

31 |

Release note for version 2.7.0

32 |

February 9, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | February 9, 2025 55 |

56 | @Vincenzo 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | refactor: enhance committer info function to include author parameter 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | February 9, 2025 82 |

83 | @Vincenzo 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | refactor: enhance committer info retrieval to include author parameter 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | February 7, 2025 109 |

110 | @Vincenzo 111 |

112 |
113 | impact badge 114 |
115 |
116 |
117 |
118 |
119 |
120 | 121 |
122 |
123 |

124 | docs: update README to link npm version and downloads badges 125 |

126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |

138 | Sign up for updates 139 |

140 |

Get notified when we release new features.

141 |
142 |
143 |
144 |
145 | 150 |
151 |
152 | -------------------------------------------------------------------------------- /.release-notes/2.4.0/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.4.0 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.4.0 30 |

31 |

Release note for version 2.4.0

32 |

November 17, 2024

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | November 3, 2024 55 |

56 | @VincenzoManto 57 |

58 |
59 | impact badge 60 |
61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |
69 |

70 | Merge pull request #8 from VincenzoManto/feat/prereleasesFeat/prereleases 71 |

72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | November 3, 2024 82 |

83 | @VincenzoManto 84 |

85 |
86 | impact badge 87 |
88 |
89 |
90 |
91 |
92 |
93 | 94 |
95 |
96 |

97 | Merge branch 'main' into feat/prereleases 98 |

99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | October 31, 2024 109 |

110 | @VincenzoManto 111 |

112 |
113 | impact badge 114 |
115 |
116 |
117 |
118 |
119 |
120 | 121 |
122 |
123 |

124 | Merge pull request #7 from VincenzoManto/feat/testingtest: Update getNewVersion function to accept an optional passed version 125 |

126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |

137 | Sign up for updates 138 |

139 |

Get notified when we release new features.

140 |
141 |
142 |
143 |
144 | 149 |
150 |
151 | -------------------------------------------------------------------------------- /.release-notes/2.7.1/release.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | light-release Release Note 2.7.1 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 |

19 | light-release 20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |

29 | Release 2.7.1 30 |

31 |

Release note for version 2.7.1

32 |

February 12, 2025

33 |
34 | 35 |
36 | 37 |
38 | 39 |
40 | 41 |
42 | 43 |
44 | 45 | 46 |
47 |
48 |
49 | 50 | 51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | February 12, 2025 59 |

60 | @Vincenzo 61 |

62 |
63 | impact badge 64 |
65 |
66 |
67 |
68 |
69 |
70 | 71 |
72 |
73 |

74 | Merge branch 'main' of https://github.com/VincenzoManto/light-release 75 |

76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | February 12, 2025 86 |

87 | @Vincenzo 88 |

89 |
90 | impact badge 91 |
92 |
93 |
94 |
95 |
96 |
97 | 98 |
99 |
100 |

101 | fix: correct formatting in git log command for consistent output 102 |

103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 | February 11, 2025 113 |

114 | @Vincenzo Manto 115 |

116 |
117 | impact badge 118 |
119 |
120 |
121 |
122 |
123 |
124 | 125 |
126 |
127 |

128 | Update README.md 129 |

130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |

142 | Sign up for updates 143 |

144 |

Get notified when we release new features.

145 |
146 |
147 |
148 |
149 | 154 |
155 |
156 | --------------------------------------------------------------------------------