Last active
January 29, 2017 05:32
-
-
Save itsprdp/a017c6f56fbc823076e5 to your computer and use it in GitHub Desktop.
Rails release_version bumper
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
####################################### | |
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
➜ 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