Do you like when projects use semantic versioning a keep a maintained changelog? I bet you do. Yet it is not rare that a patch version change breaks your app. Versions of a random maintained project are a mess. Most of the time, developers use version, because they are forced to, not because they want to.
Here is why:
- Some people don't know or understand the benefits, for those there are projects like semver, keep-a-changelog etc.
- The others are lazy. It is hard. The routine is boring, menial and frustrating if you make a mistake, since you cannot usually republish with the same version tag. For those, I made vump.
Vump do I do?
I try to understand you project. You decide which semver update best describes the unreleased changes and I will snoop your project, do all the file writes in the current directory and then stage them, commit and tag.
If it sounds simple, it's because it is. You might argue that there are many CLI tools doing just the same (find them bellow), even more. That might be true. But very few have ambition to handle different platforms under one hood, and hang on fast to existing standards!
📦Modular and generic approach 🎓Opinionated, based on standards 📒Changelog management 👮Synced, controlled version ✔️Solid test coverage ℹ️User documentation 💬Helpful output 🔧Handful of options
gem install vump
cd my-project vump patch
vump [<major|minor|patch|<semver-string>>] [...options]
||-||Output Vump's version|
||-||Print this help|
||-||Skip staging, commit and tag|
||Modify version string prefix for git tag (default "v")|
||Set semver's build tag (default none)|
||Set semver's pre release tag (default none)|
||Modify date of committing release. Used by changelog. (default now)|
||-||Dry run (no writes or CSV manipulation)|
||Path to the repo (default pwd)|
- Bump minor version (
miis a prefix that cannot be confused with semver or other bumps)
- Bump patch version of project in
~/Projects/foo. Ommit all git operations.
vump patch -p=~/Projects/foo --no-git
- Set version of the projet on
1.1.1-beta-3(use semver's pre-release)
vump 1.1.1 --pre=beta-3
How to use for your project
Vump finds which modules are relevant for your project, asks them for version and if all relevent modules align, it bumps each of them. There are some modules, you can use no matter the project:
Changelog module manipulates with
CHANGELOG.md file according to keep-a-changelog standard. Using Vump you get changelog maintanance for free, all you need to do is to track your changes in Unreleased section.
Version file is probably the simplest module of all. It keeps just the version string followed by a newline in
VERSION text file. You can use it along with other modules, or if you have no other place to keep your version.
This module also comes handy, when your metadata are stored in a non-static file (meaning, it is interpreted via any runtime). This is the case for ruby for instance. Vump cannot parse interpret the complexity of ruby runtime. But you can read version from the
VERSION file in your gemspec.
☀️rubygems - Dynamic specification, you can use
🌈composer - Native module for
☀️PyPI - Dynamic specification, you can use
Are you missing something? Please let me know and I will gladly implement new module!
Are there any other good alternatives? Please let me know and I will update the list!
Licensed under MIT