Module: Oxidized::Model::DSLSetup

Included in:
Oxidized::Model
Defined in:
lib/oxidized/model/dslsetup.rb

Overview

Domain Specific Language for model setup

Instance Method Summary collapse

Instance Method Details

#cfg(*methods, **args, &block) ⇒ Object



27
28
29
30
31
# File 'lib/oxidized/model/dslsetup.rb', line 27

def cfg(*methods, **args, &block)
  [methods].flatten.each do |method|
    process_args_block(@cfg[method.to_s], args, block)
  end
end

#cfgsObject



33
34
35
# File 'lib/oxidized/model/dslsetup.rb', line 33

def cfgs
  @cfg
end

#comment(str = "# ") ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/oxidized/model/dslsetup.rb', line 9

def comment(str = "# ")
  @comment = if block_given?
               yield
             elsif not @comment
               str
             else
               @comment
             end
end

#expect(regex, **args, &block) ⇒ Object



19
20
21
# File 'lib/oxidized/model/dslsetup.rb', line 19

def expect(regex, **args, &block)
  process_args_block(@expect, args, [regex, block])
end

#expectsObject



23
24
25
# File 'lib/oxidized/model/dslsetup.rb', line 23

def expects
  @expect
end

#input_sequence(input_classes) ⇒ Object

Returns the input sequence for the model as an array of arrays of input classes, filtered and ordered according to the provided input_classes (as specified in the oxidized configuration file).



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/oxidized/model/dslsetup.rb', line 50

def input_sequence(input_classes)
  model_inputs = inputs || [
    @cfg.filter_map do |input, block_list|
      input.to_sym unless block_list.empty?
    end
  ]

  model_inputs.map do |sequence|
    sequence = [sequence] unless sequence.is_a? Array
    selected = input_classes.select { |input| sequence.include?(input.to_sym) }
    logger.error "Needs one of #{sequence.inspect} to be configured" if selected.empty?

    selected
  end
end

#inputs(list = nil) ⇒ Object

Define multiple inputs as a sequence of equivalent options Example: use ssh or telnet, then scp or ftp:

:ssh, [:scp, :ftp]


40
41
42
43
44
45
# File 'lib/oxidized/model/dslsetup.rb', line 40

def inputs(list = nil)
  return @inputs if list.nil?

  validate_inputs(list)
  @inputs = list
end

#metadata(position, value = nil, &block) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/oxidized/model/dslsetup.rb', line 66

def (position, value = nil, &block)
  return unless %i[top bottom].include? position

  if block_given?
    @metadata[position] = block
  else
    @metadata[position] = value
  end
end

#prompt(regex = nil) ⇒ Object



5
6
7
# File 'lib/oxidized/model/dslsetup.rb', line 5

def prompt(regex = nil)
  @prompt = regex || @prompt
end