Module: Hubeye::Server::Strategies

Defined in:
lib/hubeye/server/strategies/exit.rb,
lib/hubeye/server/strategies/next.rb,
lib/hubeye/server/strategies/rm_repo.rb,
lib/hubeye/server/strategies/add_hook.rb,
lib/hubeye/server/strategies/add_repo.rb,
lib/hubeye/server/strategies/decision.rb,
lib/hubeye/server/strategies/shutdown.rb,
lib/hubeye/server/strategies/load_hook.rb,
lib/hubeye/server/strategies/load_repo.rb,
lib/hubeye/server/strategies/save_hook.rb,
lib/hubeye/server/strategies/save_repo.rb,
lib/hubeye/server/strategies/list_hooks.rb,
lib/hubeye/server/strategies/list_tracking.rb

Defined Under Namespace

Classes: AddHook, AddRepo, Decision, Exit, ListHooks, ListTracking, LoadHook, LoadRepo, Next, RmRepo, SaveHook, SaveRepo, Shutdown

Constant Summary collapse

STRATEGIES =

STRATEGIES hash

keys: input matches OR lambda {|input| input.something?} => SomeStrategy.new(decision)

values: lambda {|decision, matches| SomeStrategy.new(decision, matches)}

{
  %r{\Ashutdown\Z} => lambda {|d, m| Shutdown.new(d, m)},
  %r{\Aquit|exit\Z} => lambda {|d, m| Exit.new(d, m)},
  %r{\Atracking\s*\Z} => lambda {|d, m| ListTracking.new(d, m)},
  %r{\Atracking\s*-d\Z} => lambda {|d, m| ListTracking.new(d, m, :details => true)},
  %r{\Aadd (.*)} => lambda {|d, m| AddRepo.new(d, m)},
  %r{\A\s*save hook(s?) as (.+)\Z} => lambda {|d, m| SaveHook.new(d, m)},
  %r{\A\s*save repo(s?) as (.+)\Z} => lambda {|d, m| SaveRepo.new(d, m)},
  %r{\A\s*load hook(s?) (.+)\Z} => lambda {|d, m| LoadHook.new(d, m)},
  %r{\A\s*load repo(s?) (.+)\Z} => lambda {|d, m| LoadRepo.new(d, m)},
  %r{\A\s*internal load hook(s?) (.+)\Z} => lambda {|d, m| LoadHook.new(d, m, :internal => true)},
  %r{\A\s*internal load repo(s?) (.+)\Z} => lambda {|d, m| LoadRepo.new(d, m, :internal => true)},
  %r{\Ahook add ([-\w]+/[-\w]+) (dir:\s?(.*))?\s*cmd:\s?(.*)\Z} => lambda {|d, m| AddHook.new(d, m)},
  %r{\Ahook list\Z} => lambda {|d, m| ListHooks.new(d, m)},
  %r{^\s*$} => lambda {|d, m| Next.new(d, m)},
  %r{\Arm\s*-a\Z} => lambda {|d, m| RmRepo.new(d, m, :all => true)},
  %r{\Arm ([-\w]+/?[-\w]*)\Z} => lambda {|d, m| RmRepo.new(d, m)},
  # if all else fails, try to add the input as a repo
  %r{\A(.*)} => lambda {|d, m| AddRepo.new(d, m)},
}