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



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 57

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



50
51
52
53
54
55
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 50

def compile_job(item, settings = {})
  new_item = compile(item, settings)
  [true, new_item]
rescue StandardError => e
  [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
46
47
48
# 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.each_key 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



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/jenkins_pipeline_builder/compiler.rb', line 71

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