Skip to content

Instantly share code, notes, and snippets.

@itsprdp
Last active January 29, 2017 05:32
Show Gist options
  • Save itsprdp/a017c6f56fbc823076e5 to your computer and use it in GitHub Desktop.
Save itsprdp/a017c6f56fbc823076e5 to your computer and use it in GitHub Desktop.
Rails release_version bumper
#######################################
# Author: Pradeep ([email protected]) #
# Reference: http://semver.org #
#######################################
namespace :release_version do
@tags = %x[ git tag --sort version:refname ].split("\n")
def current_tag
@tags.last
end
def bump_version release_type, metadata
current_version = current_tag.gsub("v","")
major, minor, patch = current_version.split(".").map(&:to_i)
case release_type
when "major"
major += 1
minor = patch = 0
when "minor"
minor += 1
patch = 0
when "patch"
patch += 1
else # Default case
patch += 1
end
"v#{major}.#{minor}.#{patch}"
end
def next_tag release_type="patch",metadata=nil
bump_version(release_type,metadata)
end
desc 'Current release version'
task current: [] do
puts current_tag
end
desc 'Next major release version'
task major: [] do
puts next_tag "major"
end
desc 'Next minor release version'
task minor: [] do
puts next_tag "minor"
end
desc 'Next patch release version'
task patch: [] do
puts next_tag "patch"
end
end
@itsprdp
Copy link
Author

itsprdp commented Feb 3, 2016

➜ Project git:(master) rake release_version:current
v2.8.3
➜ Project git:(master) rake release_version:patch
v2.8.4
➜ Project git:(master) rake release_version:minor
v2.9.0
➜ Project git:(master) rake release_version:major
v3.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment