release: switch to use rc branches

This commit is contained in:
rkiel
2017-09-23 08:35:52 -04:00
parent 1a8a325eba
commit 0655354134
8 changed files with 73 additions and 16 deletions

View File

@@ -27,20 +27,28 @@ module Release
private private
def show_existing_tags
git_local_list_tags(release_tag_prefix).join("\n")
end
def validate_version_format (version) def validate_version_format (version)
error "Invalid version number format. Try using MAJOR.MINOR.PATCH." unless version =~ /\d+\.\d+\.\d+/ error "Invalid version number format. Try using MAJOR.MINOR.PATCH." unless version =~ version_pattern
end end
def validate_version_is_new (version) def validate_version_is_new (version)
error "Version already exists: #{git_local_list_tags.join(' ')}" if git_local_list_tags.include? "v#{version}" error "Version already exists: \n#{show_existing_tags}" if git_local_list_tags(release_tag_prefix).include? release_tag_from_version(version)
end end
def validate_version_exists (version) def validate_version_exists (version)
error "Version does not exist: #{git_local_list_tags.join(' ')}" unless git_local_list_tags.include? "v#{version}" error "Version does not exist: \n#{show_existing_tags}" unless git_local_list_tags(release_tag_prefix).include? release_tag_from_version(version)
end
def validate_version_does_not_exist (version)
error "Version already exists: \n#{show_existing_tags}" if git_local_list_tags(release_tag_prefix).include? release_tag_from_version(version)
end end
def validate_current_branch_is_release def validate_current_branch_is_release
error "Invalid release branch: #{current_branch}" unless current_branch =~ /\d+\.\d+\.\d+/ error "Invalid release branch: #{current_branch}" unless current_branch =~ release_branch_pattern
end end
def validate_current_branch_master def validate_current_branch_master
@@ -50,6 +58,8 @@ module Release
def validate_release_branch_does_not_exist (branch) def validate_release_branch_does_not_exist (branch)
error "Version branch already exists: #{branch}" if remote_branch(branch) != "" error "Version branch already exists: #{branch}" if remote_branch(branch) != ""
end end
end end
end end

View File

@@ -12,7 +12,8 @@ module Release
:minor, :minor,
:patch, :patch,
:tab, :tab,
:trash :trash,
:versions
].sort ].sort
DEFAULT = :help DEFAULT = :help

View File

@@ -18,7 +18,7 @@ module Release
git_pull release_branch git_pull release_branch
git_local_tag release_branch git_local_tag release_tag_from_version(version_from_release_branch(release_branch))
git_push release_branch git_push release_branch

View File

@@ -15,13 +15,13 @@ module Release
subcommand, version, *extras = *argv subcommand, version, *extras = *argv
validate_version_format version validate_version_format version
validate_current_branch_master validate_current_branch_master
git_pull current_branch git_pull current_branch
validate_version_is_new version validate_version_is_new version
git_local_tag version git_local_tag release_tag_from_version(version)
git_push_tags git_push_tags

View File

@@ -21,12 +21,13 @@ module Release
validate_version_exists version validate_version_exists version
new_branch = increment_version(version) new_version = increment_version(version)
validate_release_branch_does_not_exist(new_branch) validate_version_does_not_exist new_version
validate_release_branch_does_not_exist(release_branch_from_version(new_version))
git_local_branch_create new_branch, "v#{version}" git_local_branch_create release_branch_from_version(new_version), release_tag_from_version(version)
git_push new_branch git_push release_branch_from_version(new_version)
end end
private private

21
lib/release/versions.rb Normal file
View File

@@ -0,0 +1,21 @@
require_relative './base'
module Release
class Versions < Release::Base
def valid?
true
end
def help
"release versions"
end
def execute
puts
puts show_existing_tags
puts
end
end
end

View File

@@ -13,6 +13,30 @@ module Shared
['master'] ['master']
end end
def version_pattern
/\d+\.\d+\.\d+/
end
def release_branch_pattern
/rc\d+\.\d+\.\d+/
end
def release_branch_from_version (version)
"rc#{version}"
end
def release_tag_prefix
'v'
end
def release_tag_from_version (version)
"v#{version}"
end
def version_from_release_branch (branch)
branch.sub(/^rc/, '')
end
def parse_branch (branch) def parse_branch (branch)
parts = branch.split('-') parts = branch.split('-')
error "invalid branch: user-standard-feature" unless parts.size > 2 error "invalid branch: user-standard-feature" unless parts.size > 2
@@ -20,7 +44,7 @@ module Shared
user = parts.shift user = parts.shift
standard = parts.shift standard = parts.shift
error "invalid user: #{user}" unless [ENV['FEATURE_USER'],ENV['USER']].include? user error "invalid user: #{user}" unless [ENV['FEATURE_USER'],ENV['USER']].include? user
error "invalid branch: #{standard}" unless standard_branches.include? standard or standard =~ /\d+\.\d+\.\d+/ error "invalid branch: #{standard}" unless standard_branches.include? standard or standard =~ release_branch_pattern
feature = parts.join('-') feature = parts.join('-')
{ user: user, standard: standard, feature: feature } { user: user, standard: standard, feature: feature }
end end

View File

@@ -40,11 +40,11 @@ module Shared
end end
def git_local_tag ( tag ) def git_local_tag ( tag )
run_cmd "git tag -a 'v#{tag}' -m 'v#{tag}'" run_cmd "git tag -a '#{tag}' -m '#{tag}'"
end end
def git_local_list_tags def git_local_list_tags (release_tag_prefix)
`git tag -l 'v*'`.strip.split(/\s+/).sort `git tag -l '#{release_tag_prefix}*'`.strip.split(/\s+/).sort
end end
def git_prune def git_prune