Skip to main content

Generate a changelog from individual snippets

Project description

snippets2changelog

Downloads Release Python License: MIT codecov

Generate a changelog from individual snippets


General

Create version info files based on the latest changelog entry.

Installation

[<PYTHON> -m] pip[3] install [--user] [--upgrade] snippets2changelog

Usage

Info

Print informations about snippets2changelog

changelog-generator info

Create

Snippet

Create a new snippet with the given name at the specified snippets folder

changelog-generator create example_snippets/123.md
Short description: My example snippet
Choose from: ['bugfix', 'feature', 'breaking']
Type of change: feature
Choose from: ['internal', 'external', 'all']
Scope of change: external
Affected users (default all): testers
## My example snippet
<!--
type: feature
scope: external
affected: testers, users
-->

TBD

Changelog

Create or update a changelog with all snippets.

The generated changelog will be named <OLD_CHANGELOG_NAME.new> unless the --in-place flag is used. This flag is intended for CI usage with a clean checkout before a run.

Be aware to restore the changelog before another run as it might generate version entries and version bumps multiple times otherwise.

changelog-generator changelog changelog.md --snippets=.snippets [--in-place]

Parse

Parse an existing snippet file and return the data as JSON without indentation

changelog-generator parse example_snippets/123.md \
  --indent=4
{
    "type": "feature",
    "scope": [
        "external"
    ],
    "affected": [
        "testers",
        "users"
    ],
    "title": "My example snippet",
    "details": "\n\nTBD\n"
}

CI

To use this tool in a CI environment use the following commands, job configs or actions.

GitHub

Actions

See changelog-from-snippets action.

Custom workflow
---
name: Generate changelog

on:
  push:
    branches:
      - main

jobs:
  changelog:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          # all history is needed to crawl it properly
          fetch-depth: 0
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Install
        run: |
          pip install snippets2changelog
      - name: Update changelog with snippets
        run: |
          changelog-generator \
            changelog changelog.md \
            --snippets=.snippets \
            --in-place

Other

pip install snippets2changelog
changelog-generator \
  changelog changelog.md \
  --snippets=.snippets \
  --in-place

Contributing

Setup

For active development you need to have poetry and pre-commit installed

python3 -m pip install --upgrade --user poetry pre-commit
git clone https://github.com/brainelectronics/snippets2changelog.git
cd snippets2changelog
pre-commit install
poetry install

Testing

# run all tests
poetry run coverage run -m pytest -v

# run only one specific tests
poetry run coverage run -m pytest -v -k "test_read_save_json"

Generate the coverage files with

python create_report_dirs.py
coverage html

The coverage report is placed at reports/coverage/html/index.html

Changelog

The changelog format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Please add a changelog snippet, see above, for every PR you contribute. The changes are categorised into:

  • bugfixes fix an issue which can be used out of the box without any further changes required by the user. Be aware that in some cases bugfixes can be breaking changes.
  • features is used to indicate a backwards compatible change providing improved or extended functionalitiy. This does, as bugfixes, in any case not require any changes by the user to keep the system running after upgrading.
  • breaking creates a breaking, non backwards compatible change which requires the user to perform additional tasks, adopt his currently running code or in general can't be used as is anymore.

The changelog entry shall be short but meaningful and can of course contain links and references to other issues or PRs. New lines are only allowed for a new bulletpoint entry. Usage examples or other code snippets should be placed in the code documentation, README or the docs folder.

Credits

A big thank you to the creators and maintainers of SemVer.org for their documentation and regex example

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snippets2changelog-1.2.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

snippets2changelog-1.2.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file snippets2changelog-1.2.0.tar.gz.

File metadata

  • Download URL: snippets2changelog-1.2.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.20

File hashes

Hashes for snippets2changelog-1.2.0.tar.gz
Algorithm Hash digest
SHA256 7881b875b8b3c40e4c0ec958da32cc14cd784bdfc8111325ec92e80f3d2392e4
MD5 a473112d157680f2289dd24dfa04213c
BLAKE2b-256 42b0988f4e2e4a30416f59b22017dc2155c8f8d66d7f44db464f09eb62938eb1

See more details on using hashes here.

File details

Details for the file snippets2changelog-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for snippets2changelog-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fd59a7211129f6a80f6a51c5dde28e9c11da5a50da58a571a2d4a757b6f5750
MD5 a1150f6a3660d1bbfba9c65b55f95c3e
BLAKE2b-256 4088f228fa407e4999973e1428efc427b28eb893a526e757c520cd660a919afd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page