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