Class: Dandelion::Application

Inherits:
Object
  • Object
show all
Defined in:
lib/dandelion/application.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Application

Returns a new instance of Application.



11
12
13
14
15
# File 'lib/dandelion/application.rb', line 11

def initialize(args)
  @args = args
  @options = {}
  @parser = OptionParser.new
end

Class Method Details

.execute(args) ⇒ Object



6
7
8
# File 'lib/dandelion/application.rb', line 6

def execute(args)
  new(args).execute
end

Instance Method Details

#executeObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/dandelion/application.rb', line 17

def execute
  global = Command::Base.parser(@options)
  parse(global)

  begin
    name = @args.shift
    command = Command::Base.create(name)
    parse(command.parser(@options))
  rescue Command::InvalidCommandError
    log.fatal("Invalid command: #{name}")
    log.fatal(global.help)
    log.fatal("Available commands:")
    log.fatal(Command::Base.commands.map { |name| "    #{name}" }.join("\n"))
    exit 1
  end
  
  prepare
  validate
  
  command.new(@options) do |cmd|
    cmd.setup(@args) if cmd.respond_to?(:setup)
    cmd.execute
  end
end

#logObject



42
43
44
# File 'lib/dandelion/application.rb', line 42

def log
  Dandelion.logger
end