Update version info file with latest changelog version entry
Project description
Changelog2version
Update version info file with latest changelog version entry
General
Create version info files based on the latest changelog entry.
Installation
pip install changelog2version
Usage
This example shows you how to parse the repo's changelog and update the package version file with that version.
changelog2version \
--changelog_file changelog.md \
--version_file examples/version.py \
--debug
Available default template files
By default a Python version file is generated. Check the table below and the example usage for further details and supported template files
Type | Parameter | Description |
---|---|---|
Python | py |
See example package version |
C/CPP | c |
Header file with available version info |
C header file
changelog2version \
--changelog_file changelog.md \
--version_file examples/version_info.h \
--version_file_type c \
--debug
//
// version_info.h
//
// Created automatically by script
//
#ifndef version_info_h
#define version_info_h
#define MAJOR_VERSION 0 //< major software version
#define MINOR_VERSION 4 //< minor software version
#define PATCH_VERSION 0 //< patch software version
#endif
Python package file
changelog2version \
--changelog_file changelog.md \
--version_file examples/version.py \
--version_file_type py \
--debug
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
__version_info__ = ("0", "4", "0")
__version__ = '.'.join(__version_info__)
JSON output
The additional, optional argument --pretty
will output the JSON data with an
indentation of 4 in order to provide the data in an easy to read format.
Console
changelog2version \
--changelog_file changelog.md \
--print \
--debug
{"info": {"version": "0.6.0"}, "releases": {"0.6.0": [{"upload_time": "2022-10-26"}], "0.5.0": [{"upload_time": "2022-10-20"}], "0.4.0": [{"upload_time": "2022-08-07"}], "0.3.0": [{"upload_time": "2022-08-05"}], "0.2.0": [{"upload_time": "2022-08-03"}], "0.1.1": [{"upload_time": "2022-07-31"}], "0.1.0": [{"upload_time": "2022-07-31"}]}}
File
changelog2version \
--changelog_file changelog.md \
--output changelog.json \
--pretty \
--debug
Advanced
Custom regular expressions
To extract a version line from a given changelog file with an alternative
regex, the version_line_regex
argument can be used as shown below. The
expression is validated during the CLI argument parsing
changelog2version \
--changelog_file changelog.md \
--version_file src/changelog2version/version.py \
--version_line_regex "^\#\# \[\d{1,}[.]\d{1,}[.]\d{1,}\]" \
--debug
Same applies for a custom semver line regex in order to extract the semantic
version part from a full version line, use the semver_line_regex
argument to
adjust the regular expression to your needs.
Custom template file
Beside the default supported template files users can also provide custom template files.
This is the list of currently available variables
Name | Description |
---|---|
major_version |
Major version, incompatible API changes |
minor_version |
Minor version, add functionality (backwards-compatible) |
patch_version |
Patch version, bug fixes (backwards-compatible) |
prerelease_data |
pre-release data, if available |
build_data |
Build metadata, if available |
file_name |
User specified name of rendered file |
file_name_without_suffix |
User specified name of rendered file without suffix |
template_name |
Name of rendered template file |
template_name_without_suffix |
Name of rendered template file without suffix |
Custom keyword | Provided by the user via --additional_template_data |
additional_data="{\"creation_datetime\": \"$(date +"%Y-%m-%dT%H:%M:%S")\", \"machine_name\": \"$(whoami)\"}"
changelog2version \
--changelog_file changelog.md \
--version_file examples/version_info.c \
--template_file examples/version_info.c.template \
--additional_template_data "${additional_data}" \
--debug
# or less fancy
changelog2version \
--changelog_file changelog.md \
--version_file examples/version_info.c \
--template_file examples/version_info.c.template \
--additional_template_data '{"creation_datetime": "2022-08-05T21:11:12", "machine_name": "Death Star"}' \
--debug
Executing the created example file examples/version_info.c
will print the
following content (datetime and creator might be different)
Script version is (major.minor.patch): 0.4.0
Prerelease data: None
Prerelease data: None
Creation datetime: 2022-08-05T21:11:12
Created by Death Star
Additional version info content
To create custom release candidate packages the python version file variable
__version__
can be exended with a custom string.
Choose the additional version info content carefully as not everything is supported by PyPi, see the Python Core metadata specifications and PEP440
changelog2version \
--changelog_file changelog.md \
--version_file examples/version.py \
--version_file_type py \
--additional_version_info="rc1234" \
--debug
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
__version_info__ = ("0", "5", "0")
__version__ = '.'.join(__version_info__) + '-rc1234'
Contributing
Unittests
Run the unittests locally with the following command after installing this
package in a virtual environment or by using tox
to create one on each run.
# install the package with all its development dependencies
pip install .[dev]
# run all tests
nose2 --config tests/unittest.cfg
# run only one specific tests
nose2 tests.test_extract_version.TestExtractVersion.test_version_line_regex
Generate the coverage files with
python create_report_dirs.py
coverage html
The coverage report is placed at reports/coverage/html/index.html
Credits
Based on the PyPa sample project. Also a big thank you to the creators and maintainers of SemVer.org for their documentation and regex example
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file changelog2version-0.6.0.tar.gz
.
File metadata
- Download URL: changelog2version-0.6.0.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d29de4740ffb889fddf89c0b1a2dc71fc57d7f12257fddffc7f95d8a967c922e |
|
MD5 | 24e1d5cde3815397510667d7e7d632ec |
|
BLAKE2b-256 | f88d291bfa894e32b65afea0621aae51184e2e99978265ad2d90e8b53e0623a9 |
File details
Details for the file changelog2version-0.6.0-py3-none-any.whl
.
File metadata
- Download URL: changelog2version-0.6.0-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65bff2a56c4681f11e62137a541f08d3dea0f14926115ce969daa68fb660075f |
|
MD5 | cf1fcebcdac168a9a3bd3c6f03f0c5dd |
|
BLAKE2b-256 | 2b73539dd873385a17160e4f413bd7b232be72aef8e33df9ee27731b7e8a7611 |