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
- #cfg(*methods, **args, &block) ⇒ Object
- #cfgs ⇒ Object
- #comment(str = "# ") ⇒ Object
- #expect(regex, **args, &block) ⇒ Object
- #expects ⇒ Object
-
#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). -
#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]].
- #metadata(position, value = nil, &block) ⇒ Object
- #prompt(regex = nil) ⇒ Object
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 |
#cfgs ⇒ Object
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 |
#expects ⇒ Object
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 |