Home

Awesome

bump

bump bumps versions.

It accepts a version from standard input and prints the bumped version to standard output.

bump is:

Installation

curl

curl -L lesiw.io/bump | sh

go install

go install lesiw.io/bump@latest

Usage

Usage of bump:
  -s string
        index of segment to bump

Examples

# default
echo "1.0.0" | bump      # => 1.0.1
echo "v1.2" | bump       # => v1.3
echo "version 42" | bump # => version 43

# by index
echo "1.2.3" | bump -s 0 # => 2.0.0
echo "1.2.3" | bump -s 1 # => 1.3.0
echo "1.2.3" | bump -s 2 # => 1.2.4, same as default
echo "1.2.3" | bump -s 3 # => 1.2.4-rc.1

# semver aliases
echo "1.2.3" | bump -s major # => 2.0.0
echo "1.2.3" | bump -s minor # => 1.3.0
echo "1.2.3" | bump -s patch # => 1.2.4, same as default
echo "1.2.3" | bump -s pre   # => 1.2.4-rc.1

Cookbook

Change default segment to bump

By default, bump will bump the rightmost segment. The idiomatic way to override this behavior is with an alias.

alias bump='bump -s 1' # bump the minor segment by default

Bump git tag

git tag "$(git describe --abbrev=0 --tags | bump)"
git push origin --tags

Bump tag based on latest commit keyword

If +major, +minor, +patch, or +pre are in the most recent commit, bump the version according to the keyword, otherwise bump the patch segment.

SEGMENT=$(git show -s --format=%s | awk -F'+' 'BEGIN{RS=" "} /\+/ {print $2}')
git tag "$(git describe --abbrev=0 --tags | bump -s "${SEGMENT:-patch}")"