Module: WIP::Runner::Commands

Defined in:
lib/wip/runner/commands.rb

Class Method Summary collapse

Class Method Details

.explicitObject



32
33
34
35
36
# File 'lib/wip/runner/commands.rb', line 32

def explicit
  @explicit ||= begin
    namespace.const_get(:Commands) if namespace.const_defined?(:Commands)
  end
end

.implicitObject



28
29
30
# File 'lib/wip/runner/commands.rb', line 28

def implicit
  WIP::Runner::CLI
end

.locate(name, namespace = nil) ⇒ Object

Raises:



5
6
7
8
9
10
11
12
13
14
# File 'lib/wip/runner/commands.rb', line 5

def locate(name, namespace = nil)
  return nil if name.nil? || name.match(/^-/)

  command    = name.split('-').map(&:capitalize).join
  namespaces = namespace ? [namespace] : [explicit, implicit]
  namespaces.each do |ns|
    return ns.const_get(command) if ns && ns.const_defined?(command)
  end
  raise InvalidCommand, name
end

.namespaceObject



38
39
40
# File 'lib/wip/runner/commands.rb', line 38

def namespace
  WIP::Runner::CLI.namespace
end

.within(namespace) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/wip/runner/commands.rb', line 16

def within(namespace)
  return [] if namespace.nil?

  namespace.constants
    .collect { |const|
      namespace.const_get(const)
    }
    .select { |command|
      command < Command # is a subclass of
    }
end