diff --git a/lib/feature/commander.rb b/lib/feature/commander.rb index 5d2d6f8..5ab5f4b 100644 --- a/lib/feature/commander.rb +++ b/lib/feature/commander.rb @@ -3,6 +3,7 @@ require_relative './end' require_relative './trash' require_relative './rebase' require_relative './merge_to' +require_relative './tab' require_relative './branch' module Feature @@ -17,6 +18,7 @@ module Feature 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) else Feature::Branch.new(argv) end end @@ -32,6 +34,11 @@ module Feature def execute subcommand.execute end + + def self.tab_completion + [:start, :end, :trash, :rebase, :merge].map(&:to_s).sort + end + end end diff --git a/lib/feature/tab.rb b/lib/feature/tab.rb new file mode 100644 index 0000000..30d0a96 --- /dev/null +++ b/lib/feature/tab.rb @@ -0,0 +1,32 @@ +require_relative './base' + +module Feature + + class Tab < Feature::Base + def valid? + argv.size > 0 + end + + def help + puts + puts "USAGE: feature tab [pattern]" + puts + exit + end + + def execute + if argv.size == 1 + pattern = '.+' + else + pattern = "^#{argv[1]}" + end + + regexp = Regexp.new(pattern) + cmds = Feature::Commander.tab_completion + cmds = cmds.select { |x| regexp.match(x) } + + puts cmds.join("\n") + end + end + +end