Class: JenkinsPipelineBuilder::Compiler

Inherits:
Object
  • Object
show all
Defined in:
lib/jenkins_pipeline_builder/compiler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(generator) ⇒ Compiler

Returns a new instance of Compiler.



27
28
29
30
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 27

def initialize(generator)
  @generator = generator
  @job_collection = generator.job_collection.collection
end

Instance Attribute Details

#generatorObject (readonly)

Returns the value of attribute generator.



25
26
27
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 25

def generator
  @generator
end

#job_collectionObject (readonly)

Returns the value of attribute job_collection.



25
26
27
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 25

def job_collection
  @job_collection
end

Instance Method Details

#compile(item, settings = {}) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 54

def compile(item, settings = {})
  item = handle_enable(item, settings)

  case item
  when String
    return compile_string item, settings
  when Hash
    return compile_hash item, settings
  when Array
    return compile_array item, settings
  end
  item
end

#compile_job(item, settings = {}) ⇒ Object



47
48
49
50
51
52
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 47

def compile_job(item, settings = {})
  new_item = compile(item, settings)
  [true, new_item]
rescue StandardError => e
  return [false, [e.message]]
end

#get_settings_bag(item_bag, settings_bag = {}) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 32

def get_settings_bag(item_bag, settings_bag = {})
  item = item_bag[:value]
  bag = {}
  return unless item.is_a?(Hash)
  item.keys.each do |k|
    val = item[k]
    next unless val.is_a? String
    new_value = resolve_value(val, settings_bag)
    return nil if new_value.nil?
    bag[k] = new_value
  end
  my_settings_bag = settings_bag.clone
  my_settings_bag.merge(bag)
end

#handle_enable(item, settings) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 68

def handle_enable(item, settings)
  return item unless item.is_a? Hash
  if enable_block_present? item
    enabled_switch = resolve_value(item[:enabled], settings)
    return {} if enabled_switch == 'false'
    raise "Invalid value for #{item[:enabled]}: #{enabled_switch}" if enabled_switch != 'true'
    if item[:parameters].is_a? Hash
      item = item.merge item[:parameters]
      item.delete :parameters
      item.delete :enabled
    else
      item = item[:parameters]
    end
  end
  item
end