From 863a641e260d11fb480fc7490894465c727ba46a Mon Sep 17 00:00:00 2001 From: rkiel Date: Sat, 6 Jun 2015 07:05:30 -0400 Subject: [PATCH] more breakout for feature --- bin/feature | 15 ++--------- lib/feature/base.rb | 50 ++++++------------------------------- lib/feature/commander.rb | 29 +++++++++++++++++++++ lib/shared/branchability.rb | 29 +++++++++++++++++++++ lib/shared/runnable.rb | 23 +++++++++++++++++ 5 files changed, 90 insertions(+), 56 deletions(-) create mode 100644 lib/feature/commander.rb create mode 100644 lib/shared/branchability.rb create mode 100644 lib/shared/runnable.rb diff --git a/bin/feature b/bin/feature index 429f2d3..5b3daca 100755 --- a/bin/feature +++ b/bin/feature @@ -1,17 +1,6 @@ #!/usr/bin/env ruby -require_relative '../lib/feature/start' -require_relative '../lib/feature/end' -require_relative '../lib/feature/rebase' -require_relative '../lib/feature/merge_to' -require_relative '../lib/feature/branch' - -command = case ARGV[0] - when "start" then Feature::Start.new(ARGV) - when "end" then Feature::End.new(ARGV) - when "rebase" then Feature::Rebase.new(ARGV) - when "merge" then Feature::MergeTo.new(ARGV) - else Feature::Branch.new(ARGV) - end +require_relative '../lib/feature/commander' +command = Feature::Commander.new(ARGV) command.execute diff --git a/lib/feature/base.rb b/lib/feature/base.rb index ceb6430..12f2640 100644 --- a/lib/feature/base.rb +++ b/lib/feature/base.rb @@ -1,54 +1,18 @@ +require_relative '../shared/branchability' +require_relative '../shared/runnable' + module Feature class Base + + include Shared::Branchability + include Shared::Runnable + 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 diff --git a/lib/feature/commander.rb b/lib/feature/commander.rb new file mode 100644 index 0000000..dc5d77f --- /dev/null +++ b/lib/feature/commander.rb @@ -0,0 +1,29 @@ +require_relative './start' +require_relative './end' +require_relative './rebase' +require_relative './merge_to' +require_relative './branch' + +module Feature + + class Commander + attr_reader :argv + + def initialize (argv) + @argv = argv + end + + def execute + command = case argv[0] + when "start" then Feature::Start.new(argv) + when "end" then Feature::End.new(argv) + when "rebase" then Feature::Rebase.new(argv) + when "merge" then Feature::MergeTo.new(argv) + else Feature::Branch.new(argv) + end + command.execute + end + + end + +end diff --git a/lib/shared/branchability.rb b/lib/shared/branchability.rb new file mode 100644 index 0000000..1c64498 --- /dev/null +++ b/lib/shared/branchability.rb @@ -0,0 +1,29 @@ +module Shared + + module Branchability + 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 + end + +end diff --git a/lib/shared/runnable.rb b/lib/shared/runnable.rb new file mode 100644 index 0000000..534c156 --- /dev/null +++ b/lib/shared/runnable.rb @@ -0,0 +1,23 @@ +module Shared + + module Runnable + 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 error ( msg ) + puts + puts "ERROR: #{msg}" + puts + exit + end + end + +end