Class: Anvil::Parser

Inherits:
OptionParser
  • Object
show all
Defined in:
lib/anvil/parser.rb

Overview

Parser for anvil command line arguments and options

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



9
10
11
# File 'lib/anvil/parser.rb', line 9

def options
  @options
end

#taskObject

Returns the value of attribute task.



10
11
12
# File 'lib/anvil/parser.rb', line 10

def task
  @task
end

Instance Method Details

#arguments(args = nil) ⇒ Object



16
17
18
19
# File 'lib/anvil/parser.rb', line 16

def arguments(args = nil)
  return @arguments if @arguments
  @arguments = [args.presence].compact.flatten
end


21
22
23
24
25
26
27
28
# File 'lib/anvil/parser.rb', line 21

def banner
  unless @banner
    @banner = banner_string
    visit(:add_banner, @banner)
  end

  @banner
end


30
31
32
33
34
35
36
37
# File 'lib/anvil/parser.rb', line 30

def banner_string
  args = arguments.map(&:upcase).join(' ')
  message = "Usage: anvil #{task.task_name}"
  message += " #{args}" unless args.empty?
  message += ' [options]'

  message
end

#detect_options(&block) ⇒ Object



44
45
46
# File 'lib/anvil/parser.rb', line 44

def detect_options(&block)
  OptionsDetector.new.detect_options(&block)
end

#from(name) ⇒ Object



39
40
41
42
# File 'lib/anvil/parser.rb', line 39

def from(name)
  task_klass = Anvil::Task.from_name(name)
  instance_eval(&task_klass.parser_block) if task_klass.parser_block
end