55 lines
1.2 KiB
Ruby
55 lines
1.2 KiB
Ruby
module Feature
|
|
|
|
class Base
|
|
attr_reader :argv
|
|
|
|
def initialize (argv)
|
|
@argv = argv
|
|
end
|
|
|
|
def run_cmd ( cmd, fallback_branch = current_branch )
|
|
puts
|
|
puts cmd
|
|
success = system cmd
|
|
unless success
|
|
system "git checkout #{fallback_branch}"
|
|
error "(see above)"
|
|
end
|
|
puts
|
|
end
|
|
|
|
def current_branch
|
|
@current_branch ||= `git branch|grep '\*'|sed 's/\*\s*//'`.strip
|
|
end
|
|
|
|
def remote_branch (branch)
|
|
@remote_branch ||= `git branch -r|grep origin|grep -v 'HEAD'|grep #{branch}`.strip
|
|
end
|
|
|
|
def standard_branches
|
|
['master','develop','integration']
|
|
end
|
|
|
|
def parse_branch (branch)
|
|
parts = branch.split('-')
|
|
error "invalid branch: user-standard-feature" unless parts.size > 2
|
|
|
|
user = parts.shift
|
|
standard = parts.shift
|
|
error "invalid user: #{user}" unless ENV['USER'] == user
|
|
error "invalid branch: #{standard}" unless standard_branches.include? standard
|
|
feature = parts.join('-')
|
|
{ user: user, standard: standard, feature: feature }
|
|
end
|
|
|
|
def error ( msg )
|
|
puts
|
|
puts "ERROR: #{msg}"
|
|
puts
|
|
exit
|
|
end
|
|
|
|
end
|
|
|
|
end
|