Files
git-utilities/lib/release/start.rb
2017-09-29 21:51:26 -04:00

61 lines
1.3 KiB
Ruby

require_relative './base'
module Release
class Start < Release::Base
def valid?
argv.size == 3 or argv.size == 4
end
def help
"release start (major|minor|patch) [from] version"
end
def execute
case argv.size
when 3
subcommand, level, version = *argv
when 4
subcommand, level, verb, version = *argv
end
validate_version_format version
validate_current_branch_master
git_pull current_branch
validate_version_exists version
numbers = version.split('.').map { |x| x.to_i }
case level
when 'major'
new_version = "#{numbers[0]+1}.0.0"
when 'minor'
new_version = "#{numbers[0]}.#{numbers[1]+1}.0"
when 'patch'
new_version = "#{numbers[0]}.#{numbers[1]}.#{numbers[2]+1}"
else
error "unknow release level: #{level}"
end
validate_version_does_not_exist new_version
validate_release_branch_does_not_exist(release_branch_from_version(new_version))
git_local_branch_create release_branch_from_version(new_version), release_tag_from_version(version)
git_push_upstream(release_branch_from_version(new_version))
end
private
def subcommand_name
error "override"
end
def increment_version (version)
error "override"
end
end
end