- Make sure you are using Python 3.4 or later
- Intall
tbump
withpip
as usual.
Here's what a typical usage of tbump
looks like:
Create a tbump.toml
file looking like:
[version]
current = "1.2.41"
regex = '''
(?P<major>\d+)
\.
(?P<minor>\d+)
\.
(?P<patch>\d+)
'''
[git]
message_template = "Bump to {new_version}"
tag_template = "v{new_version}"
[[file]]
src = "setup.py"
Note
- The file uses toml syntax.
- Strings should be templated using curly brackets, to be used with Python's built-in
.format()
method. - The version regular expression will be used in verbose mode and must contain named groups.
Then run:
$ tbump 1.2.42
tbump
will:
- Replace the string
1.2.41
by1.2.42
in every file listed in the configuration - Make a commit based on the
message_template
. (Using - Make a tag based on the
tag_template
- Ask wether to push the current branch and the tag (unless
--no-interactive
is used)
Sometimes you want to make sure only the line matching a given pattern is replaced. For instance, with the folliwing package.json
:
/* in package.json */
{
"name": "foo",
"version": "0.42",
"dependencies": {
"some-dep": "0.42",
"other-dep": "1.3",
}
}
you'll want to make sure that when you bump from 0.42
to 0.43
that the line containing some-dep
does not change.
In this case, you can set a search
option in the file
section:
# In tbump.toml
[[file]]
src = "package.json"
search = '"version": "{current_version}"'
If you are using a version schema like 1.2.3-alpha-4
, you may want to expose a variable that only contains the "public" part of the version string. (1.2.3
in this case).
To do so, add a version_template
option in te file
section. The names used in the format string should match the group names in the regular expression.
/* in version.js */
export FULL_VERSION = '1.2.3-alpha-4';
export PUBLIC_VERSION = '1.2.3';
[[file]]
src = "version.js"
version_template = "{major}.{minor}.{patch}"
search = "export PUBLIC_VERSION = '{current_version}'"
[[file]]
src = "version.js"
search = "export FULL_VERSION = '{current_version}'"