diff --git a/lib/feature/base.rb b/lib/feature/base.rb index 2819407..95270fe 100644 --- a/lib/feature/base.rb +++ b/lib/feature/base.rb @@ -14,6 +14,16 @@ module Feature @argv = argv end + def help + "TBD" + end + + def usage + puts + puts "USAGE: #{help}" + puts + exit + end end end diff --git a/lib/feature/branch.rb b/lib/feature/branch.rb index f1b0ff9..ba82248 100644 --- a/lib/feature/branch.rb +++ b/lib/feature/branch.rb @@ -7,8 +7,8 @@ module Feature true end - def usage - exit + def help + "feature branch" end def execute diff --git a/lib/feature/commander.rb b/lib/feature/commander.rb index 10e57f8..5521cc3 100644 --- a/lib/feature/commander.rb +++ b/lib/feature/commander.rb @@ -11,21 +11,24 @@ require_relative './help' module Feature class Commander - attr_reader :subcommand + attr_reader :subcommands, :subcommand def initialize (argv) - @subcommand = case argv[0] - when "start" then Feature::Start.new(argv) - when "end" then Feature::End.new(argv) - when "trash" then Feature::Trash.new(argv) - when "rebase" then Feature::Rebase.new(argv) - when "merge" then Feature::MergeTo.new(argv) - when "tab" then Feature::Tab.new(argv) - when "commit" then Feature::Commit.new(argv) - when "help" then Feature::Help.new(argv) - when nil then Feature::Branch.new(argv) - else Feature::Help.new(argv) - end + @subcommands = { + branch: Feature::Branch.new(argv), + commit: Feature::Commit.new(argv), + help: Feature::Help.new(argv), + end: Feature::End.new(argv), + rebase: Feature::Rebase.new(argv), + merge: Feature::MergeTo.new(argv), + start: Feature::Start.new(argv), + tab: Feature::Tab.new(argv), + trash: Feature::Trash.new(argv) + } + + key = (argv[0] ? argv[0].to_sym : :branch) + + @subcommand = (subcommands[key] ? subcommands[key] : subcommands[:help]) end def valid? @@ -40,10 +43,6 @@ module Feature subcommand.execute end - def self.tab_completion - [:start, :end, :trash, :rebase, :merge, :commit].map(&:to_s).sort - end - end end diff --git a/lib/feature/commit.rb b/lib/feature/commit.rb index 7e96f39..f9c3f64 100644 --- a/lib/feature/commit.rb +++ b/lib/feature/commit.rb @@ -7,11 +7,8 @@ module Feature argv.size > 1 end - def usage - puts - puts "USAGE: feature commit [word....]" - puts - exit + def help + "feature commit [word....]" end def execute diff --git a/lib/feature/end.rb b/lib/feature/end.rb index 1f3c26a..251ca70 100644 --- a/lib/feature/end.rb +++ b/lib/feature/end.rb @@ -7,11 +7,8 @@ module Feature argv.size == 1 end - def usage - puts - puts "USAGE: feature end" - puts - exit + def help + "feature end" end def execute diff --git a/lib/feature/help.rb b/lib/feature/help.rb index 02ab7b7..438541e 100644 --- a/lib/feature/help.rb +++ b/lib/feature/help.rb @@ -7,11 +7,19 @@ module Feature true end - def usage - exit + def help + "feature help" end def execute + puts + # TODO: fix this + commander = Feature::Commander.new(argv) + commander.subcommands.keys.sort.each do |key| + cmd = commander.subcommands[key] + puts cmd.help + end + puts end end diff --git a/lib/feature/merge_to.rb b/lib/feature/merge_to.rb index 37007f5..393c9fe 100644 --- a/lib/feature/merge_to.rb +++ b/lib/feature/merge_to.rb @@ -7,11 +7,8 @@ module Feature [1,2].include? argv.size end - def usage - puts - puts "USAGE: feature merge [branch]" - puts - exit + def help + "feature merge [branch]" end def execute diff --git a/lib/feature/rebase.rb b/lib/feature/rebase.rb index 9304cbd..7a98461 100644 --- a/lib/feature/rebase.rb +++ b/lib/feature/rebase.rb @@ -7,11 +7,8 @@ module Feature argv.size == 1 end - def usage - puts - puts "USAGE: feature rebase" - puts - exit + def help + "feature rebase" end def execute diff --git a/lib/feature/start.rb b/lib/feature/start.rb index bf060be..fffdc49 100644 --- a/lib/feature/start.rb +++ b/lib/feature/start.rb @@ -7,11 +7,8 @@ module Feature argv.size > 1 end - def usage - puts - puts "USAGE: feature start feature-words" - puts - exit + def help + "feature start feature-words" end def execute diff --git a/lib/feature/tab.rb b/lib/feature/tab.rb index b7f7878..f3bbb0d 100644 --- a/lib/feature/tab.rb +++ b/lib/feature/tab.rb @@ -7,11 +7,8 @@ module Feature [1,2].include? argv.size end - def usage - puts - puts "USAGE: feature tab [pattern]" - puts - exit + def help + "feature tab [pattern]" end def execute @@ -22,8 +19,9 @@ module Feature end regexp = Regexp.new(pattern) - cmds = Feature::Commander.tab_completion - cmds = cmds.select { |x| regexp.match(x) } + + # TODO: fix this + cmds = Feature::Commander.new(argv).subcommands.keys.map(&:to_s).sort.select { |x| regexp.match(x) } puts cmds.join("\n") end diff --git a/lib/feature/trash.rb b/lib/feature/trash.rb index d8ec16a..dd956a8 100644 --- a/lib/feature/trash.rb +++ b/lib/feature/trash.rb @@ -7,11 +7,8 @@ module Feature argv.size == 1 end - def usage - puts - puts "USAGE: feature trash" - puts - exit + def help + "feature trash" end def execute