From 218fa5a29c0f5c5300fcc41050a30fd14a53638e Mon Sep 17 00:00:00 2001 From: rkiel Date: Sun, 7 Jun 2015 21:38:20 -0400 Subject: [PATCH] adding-help: commit optimized tab completion and help --- lib/feature/commander.rb | 51 ++++++++++++++------------- lib/feature/help.rb | 5 +-- lib/feature/{merge_to.rb => merge.rb} | 2 +- lib/feature/tab.rb | 5 +-- 4 files changed, 29 insertions(+), 34 deletions(-) rename lib/feature/{merge_to.rb => merge.rb} (95%) diff --git a/lib/feature/commander.rb b/lib/feature/commander.rb index 5521cc3..a9b4518 100644 --- a/lib/feature/commander.rb +++ b/lib/feature/commander.rb @@ -1,34 +1,11 @@ -require_relative './start' -require_relative './end' -require_relative './trash' -require_relative './rebase' -require_relative './merge_to' -require_relative './tab' -require_relative './branch' -require_relative './commit' -require_relative './help' - module Feature class Commander - attr_reader :subcommands, :subcommand + attr_reader :subcommand def initialize (argv) - @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]) + @subcommand = Commander.create(key,argv) end def valid? @@ -43,6 +20,30 @@ module Feature subcommand.execute end + def self.commands + [ + :branch, + :commit, + :help, + :end, + :rebase, + :merge, + :start, + :tab, + :trash + ].sort + end + + def self.create key, argv + key = "help" unless Commander.commands.include? key + require_relative "./#{key}" + klass = Module.const_get "Feature::#{key.capitalize}" + klass.new(argv) + end + + def self.create_all argv + commands.map { |x| create(x,argv) } + end end end diff --git a/lib/feature/help.rb b/lib/feature/help.rb index 438541e..bbaf03d 100644 --- a/lib/feature/help.rb +++ b/lib/feature/help.rb @@ -13,10 +13,7 @@ module Feature def execute puts - # TODO: fix this - commander = Feature::Commander.new(argv) - commander.subcommands.keys.sort.each do |key| - cmd = commander.subcommands[key] + Feature::Commander.create_all(argv).each do |cmd| puts cmd.help end puts diff --git a/lib/feature/merge_to.rb b/lib/feature/merge.rb similarity index 95% rename from lib/feature/merge_to.rb rename to lib/feature/merge.rb index 393c9fe..5f39dd6 100644 --- a/lib/feature/merge_to.rb +++ b/lib/feature/merge.rb @@ -2,7 +2,7 @@ require_relative './base' module Feature - class MergeTo < Feature::Base + class Merge < Feature::Base def valid? [1,2].include? argv.size end diff --git a/lib/feature/tab.rb b/lib/feature/tab.rb index f3bbb0d..f9a5adf 100644 --- a/lib/feature/tab.rb +++ b/lib/feature/tab.rb @@ -20,10 +20,7 @@ module Feature regexp = Regexp.new(pattern) - # TODO: fix this - cmds = Feature::Commander.new(argv).subcommands.keys.map(&:to_s).sort.select { |x| regexp.match(x) } - - puts cmds.join("\n") + puts Feature::Commander.commands.select { |x| regexp.match(x.to_s) }.join("\n") end end