class JenkinsPipelineBuilder::ModuleRegistry
Attributes
registered_modules[RW]
registry[RW]
Public Class Methods
new()
click to toggle source
# File lib/jenkins_pipeline_builder/module_registry.rb, line 25 def initialize @registry = { job: {} } end
Public Instance Methods
clear_versions(sets = registry.values)
click to toggle source
# 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
entries()
click to toggle source
Ideally refactor this out to be derived from the registry, but I'm lazy for now
# 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)
click to toggle source
# 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)
click to toggle source
# 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
logger()
click to toggle source
# File lib/jenkins_pipeline_builder/module_registry.rb, line 44 def logger JenkinsPipelineBuilder.logger end
register(prefix, set)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
versions()
click to toggle source
# 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
Private Instance Methods
execute_extension(ext, value, n_xml)
click to toggle source
# File lib/jenkins_pipeline_builder/module_registry.rb, line 118 def execute_extension(ext, value, n_xml) logger.debug "Using #{ext.type} #{ext.name} version #{ext.min_version}" success = ext.execute value, n_xml raise 'Encountered errors compiling the xml' unless success end
execute_registry_value(reg_value, value, n_xml)
click to toggle source
# File lib/jenkins_pipeline_builder/module_registry.rb, line 106 def execute_registry_value(reg_value, value, n_xml) if reg_value.is_a? ExtensionSet execute_extension reg_value.extension, value, n_xml elsif value.is_a? Hash traverse_registry reg_value, value, n_xml, true elsif value.is_a? Array value.each do |v| traverse_registry reg_value, v, n_xml, true end end end