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



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

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



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

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

#get(path) ⇒ Object



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

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

#get_by_path_collection(path, registry) ⇒ Object



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

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



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

def logger
  JenkinsPipelineBuilder.logger
end

#register(prefix, set) ⇒ Object



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

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



88
89
90
91
92
93
94
95
96
97
98
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 88

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



83
84
85
86
# File 'lib/jenkins_pipeline_builder/module_registry.rb', line 83

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

#versionsObject



29
30
31
32
33
# 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