Class: JenkinsPipelineBuilder::ModuleRegistry

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeModuleRegistry

Returns a new instance of ModuleRegistry.



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

def initialize
  @registry = { job: {} }
end

Instance Attribute Details

#registered_modulesObject

Returns the value of attribute registered_modules.



24
25
26
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 24

def registered_modules
  @registered_modules
end

#registryObject

Returns the value of attribute registry.



24
25
26
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 24

def registry
  @registry
end

Instance Method Details

#clear_versions(sets = registry.values) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 36

def clear_versions(sets = registry.values)
  @versions = nil
  sets.each do |entry|
    entry.clear_installed_version if entry.is_a? ExtensionSet
    clear_versions entry.values if entry.respond_to? :values
  end
end

#entriesObject

Ideally refactor this out to be derived from the registry, but I’m lazy for now



50
51
52
53
54
55
56
57
58
59
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 50

def entries
  {
    builders: '//builders',
    publishers: '//publishers',
    wrappers: '//buildWrappers',
    triggers: '//triggers',
    build_steps: '//buildSteps',
    promotion_conditions: '//conditions'
  }
end

#get(path) ⇒ Object



73
74
75
76
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 73

def get(path)
  parts = path.split('/')
  get_by_path_collection(parts, @registry)
end

#get_by_path_collection(path, registry) ⇒ Object



78
79
80
81
82
83
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 78

def get_by_path_collection(path, registry)
  item = registry[path.shift.to_sym]
  return item if path.count == 0

  get_by_path_collection(path, item)
end

#loggerObject



44
45
46
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 44

def logger
  JenkinsPipelineBuilder.logger
end

#register(prefix, set) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 61

def register(prefix, set)
  name = prefix.pop
  root = prefix.inject(@registry, :[])
  root[name] = {} unless root[name]
  # TODO: Set installed version here
  if root[name][set.name]
    root[name][set.name].merge set
  else
    root[name][set.name] = set
  end
end

#traverse_registry(registry, params, n_xml, strict = false) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 90

def traverse_registry(registry, params, n_xml, strict = false)
  params.each do |key, value|
    next unless registry.is_a? Hash

    unless registry.key? key
      raise TypeError, "!!!! could not find key #{key} !!!!" if strict

      next
    end
    reg_value = registry[key]
    execute_registry_value reg_value, value, n_xml
  end
end

#traverse_registry_path(path, params, n_xml) ⇒ Object



85
86
87
88
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 85

def traverse_registry_path(path, params, n_xml)
  registry = get(path)
  traverse_registry(registry, params, n_xml)
end

#versionsObject



29
30
31
32
33
34
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 29

def versions
  # Return a hash with a default of 1000 so that we'll get the newest in debug
  return Hash.new { |_| '1000.0' } if JenkinsPipelineBuilder.debug

  @versions ||= JenkinsPipelineBuilder.client.plugin.list_installed
end