Module: DBRocket::Command

Defined in:
lib/db_rockets/cli/command.rb,
lib/db_rockets/cli/commands/app.rb,
lib/db_rockets/cli/commands/base.rb,
lib/db_rockets/cli/commands/help.rb,
lib/db_rockets/cli/commands/server.rb

Defined Under Namespace

Classes: App, Base, CommandFailed, Help, InvalidCommand, Server

Class Method Summary collapse

Class Method Details

.display(msg) ⇒ Object



21
22
23
# File 'lib/db_rockets/cli/command.rb', line 21

def display(msg)
  puts(msg)
end

.namespacesObject



42
43
44
45
46
# File 'lib/db_rockets/cli/command.rb', line 42

def namespaces
  @@namespaces ||= Dir["#{File.dirname(__FILE__)}/commands/*"].map do |namespace|
    namespace.gsub(/.*\//, '').gsub(/\.rb/, '')
  end
end

.parse(command) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/db_rockets/cli/command.rb', line 25

def parse(command)
  parts = command.split(':')
  case parts.size
    when 1
      if namespaces.include? command
        return command, 'index'
      else
        return 'app', command
      end
    when 2
      raise InvalidCommand unless namespaces.include? parts[0]
      return parts
    else
      raise InvalidCommand
  end
end

.run(command, args) ⇒ Object



7
8
9
10
11
# File 'lib/db_rockets/cli/command.rb', line 7

def run(command, args)
  run_internal(command, args)
rescue InvalidCommand
  display "Unknown command. Run 'db_rocket help' for usage information."
end

.run_internal(command, args) ⇒ Object

Raises:



13
14
15
16
17
18
19
# File 'lib/db_rockets/cli/command.rb', line 13

def run_internal(command, args)
  namespace, command = parse(command)
  require "#{namespace}"
  klass = DBRocket::Command.const_get(namespace.capitalize).new(args)
  raise InvalidCommand unless klass.respond_to?(command)
  klass.send(command)
end