Generate and process semantic version numbers
Project description
VerNum
Configurable GitLab CI/CD-powered version numbering for project releases
(Similar to GitVersion)
Python module/CLI installation
The VerNum Python module is distributed as a PyPI module and can be installed like any other.
Install with system-level Python
pip3 install vernum
Install with pipx
to avoid dependency collisions
pipx install vernum
Install with a venv (depends on venv location)
.venv/bin/pip install vernum
... or install as a Poetry dev dependency
Commands
The vernum max
command
Takes a list of version numbers and based on the configued numbering scheme, returns the highest value in the list.
echo "1.4.0\n1.4.1\n1.5.0" | vernum max
The vernum next
command
Takes a single version number and, based on the configured numbering scheme and the selected increment, outputs the next version number.
echo "3.4.5" | vernum next patch
The vernum limit
command
Takes a single version number and, based on the onfigured numbering scheme and provided limits, triggers an error if the version number falls outside the limit. Only a minimum limit is currently supported (see configuration below).
Schemes
VerNum supports multiple "schemes" for version numbering.
Scheme | Description | Increments | Example |
---|---|---|---|
major |
Just a single version number | major |
4 |
minor |
Major, dot, minor | major minor |
4.2 |
patch |
Major, dot, minor, dot patch | major minor patch |
4.2.1 |
minor-alpha-beta |
Major, dot, minor, dot, and either a patch, alpha, or beta | major , minor , patch , alpha , beta |
4.3.alpha2 |
Schemes support an optional "v" before the version number for inputs, including from Git, but output the result without a "v".
The default scheme is patch
.
Schemes with prerelease versions
Some schemes have prerelease versions (alpha, beta) with varying syntax. The basic approach to incrementing is to assume a preference for starting with alpha, then going to beta. So, for example, if the current version is at 1.2.3
and the operator requests a patch
update, the version becomes, for example, 1.2.4-alpha
(depending on the scheme itself).
Increments only go forward, so avoid attempting to move from beta to alpha.
FOr the minor-alpha-beta
scheme:
major
changes e.g. 5.6.2 to 6.0.alpha1major-zero
changes e.g. 5.6.2 to 6.0.0minor
changes e.g. 5.6.2 to 5.7.alpha1minor-zero
changes e.g. 5.6.2 to 5.7.0beta
changes e.g. 5.7.beta3 to 5.7.beta4alpha
changes e.g. 5.7.alpha8 to 5.7.alpha9patch
changes e.g. 5.6.beta6 to 5.6.0patch
changes e.g. 5.6.2 to 5.6.3
For the patch-hyphen-al-be
scheme:
major
changes e.g. 5.6.2 to 6.0.0-alphamajor-zero
changes e.g. 5.6.2 to 6.0.0minor
changes e.g. 5.6.2 to 5.7.0-alphaminor-zero
changes e.g. 5.6.2 to 5.7.0patch
changes e.g. 5.6.2 to 5.6.3-alphapatch-zero
changes e.g. 5.6.2 to 5.6.3beta
changes e.g. 5.7.3-alpha to 5.7.3-betapatch
changes e.g. 5.7.3-alpha to 5.7.3patch-zero
changes e.g. 5.7.3-beta to 5.7.3- The
major
,major-zero
,minor
, andminor-zero
increments work as expected
Use with Git tags
We designed VerNum to use with Git tags, and recommend using the history of tags in the default branch as the source of truth for version numbers.
The example below demonstrates one way to use VerNum with Git tags.
git tag --list --merged HEAD | vernum max | vernum next patch > .version
git tag -a "$(cat .version)" -m "$(cat .version)"
Keep the following pointers in mind when using VerNum with Git.
- CD to the root of the project before running it
- Be on the branch that you use for releases (i.e.
master
) - Be fully up-to-date in git (i.e. merged, committed, and pushed)
Configuration and input
VerNum uses the WizLib framework for configuration and input control.
- Input to commands can come through stdin
- Alternatively, use the
vernum --input <filename>
to pull input from a file - The scheme can be selected with an environment variable
$VERNUM_SCHEME
- Alternatively, the scheme can be set in a YAML configuration file; the application will try, in order:
- A config file location designated with
vernum --config <filename>
- A config file location designated with a
$VERNUM_CONFIG
environment variable .vernum.yml
in the local directory.vernum.yml
in the user's home directory
- A config file location designated with
We recommend placing a .vernum.yml
file in the project directory and committing it to the project's Git repository, so different environments use the same scheme.
The format for the YAML file is simple (allowing for other forms of configuration in the future):
vernum:
scheme: minor
limit:
min: '4.2'
Usage (GitLab CICD)
See the ProCICD documentation for usage within GitLab CICD.
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 vernum-7.3.1.tar.gz
.
File metadata
- Download URL: vernum-7.3.1.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.11.11 Linux/5.15.154+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3aa85abdc64b10bb440a8d9bbe13ab28ee49f05bf5a39aa69910a93ac30ac878 |
|
MD5 | bc5a77b4c0988fc26762b8c6cb91f3cf |
|
BLAKE2b-256 | 57698852f80a6d788cab4cb82648122497e2774dab62e13a8e459f470e0698fb |
File details
Details for the file vernum-7.3.1-py3-none-any.whl
.
File metadata
- Download URL: vernum-7.3.1-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.11.11 Linux/5.15.154+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d83a6649e125a5f563ad62f50f2b100aa0810ec3179854c7a130fc0b3f64256 |
|
MD5 | 1607a5cdb67f81d348b0722d9c99d385 |
|
BLAKE2b-256 | 9d05c07be823e5a7873d0dd6dbb28e863cd4b7a7aa78567513d8cd9a825fa45f |