class JenkinsPipelineBuilder::ExtensionSet
Constants
- SET_METHODS
Attributes
blocks[RW]
extensions[RW]
settings[RW]
Public Class Methods
new(type, path = nil, &block)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 22 def initialize(type, path = nil, &block) @blocks = {} @settings = {} @extensions = [] instance_eval(&block) blocks.each do |version, settings| add_extension type, version, settings, path end end
Public Instance Methods
add_extension(type, version, settings, path = nil)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 42 def add_extension(type, version, settings, path = nil) ext = JenkinsPipelineBuilder::Extension.new ext.min_version version ext.type type self.settings.merge(settings).each do |key, value| ext.send key, value end ext.path path unless ext.path extensions << ext end
clear_installed_version()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 34 def clear_installed_version @version = nil end
errors()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 144 def errors errors = {} errors['ExtensionSet'] = 'no extensions successfully registered' if extensions.empty? extensions.each do |ext| ver = ext.min_version || 'unknown' errors["#{ext.name} version #{ver}"] = ext.errors unless ext.valid? end errors end
extension()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 65 def extension # TODO: Support multiple xml sections for the native to jenkins plugins return extensions.first if settings[:plugin_id] == 'builtin' extension = versions[highest_allowed_version] unless extension raise %(Can't find version of #{name} lte #{installed_version}. Available versions: #{versions.keys.map(&:to_s)}) end extension end
installed_version()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 54 def installed_version return @version if @version reg = JenkinsPipelineBuilder.registry version = reg.versions[settings[:plugin_id]] raise "Plugin #{settings[:name]} is not installed (plugin_id: #{settings[:plugin_id]})" if version.nil? self.installed_version = version @version end
installed_version=(version)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 38 def installed_version=(version) @version = Gem::Version.new version end
merge(other_set)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 78 def merge(other_set) mismatch = [] SET_METHODS.each do |method_name| val1 = settings[method_name] val2 = other_set.settings[method_name] mismatch << "The values for #{method_name} do not match '#{val1}' : '#{val2}'" unless val1 == val2 end mismatch.each do |error| logger.error error end raise 'Values did not match, cannot merge extension sets' if mismatch.any? self.extensions = versions.merge(other_set.versions).values end
parameters(params)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 93 def parameters(params) version = @min_version || '0' blocks[version] = {} unless blocks[version] blocks[version][:parameters] = params end
valid?()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 134 def valid? valid = errors.empty? unless valid name ||= 'A plugin with no name provided' logger.error "Encountered errors while registering #{name}" logger.error errors.map { |k, v| "#{k}: #{v}" }.join(', ') end valid end
version(ver) { |block| ... }
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 114 def version(ver, &block) @min_version = ver yield block end
versions()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 154 def versions # Don't memoize this, it will prevent local overrides extensions.each_with_object({}) do |ext, hash| hash[Gem::Version.new(ext.min_version)] = ext end end
xml(path: false, version: '0', &block)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 100 def xml(path: false, version: '0', &block) if @min_version version = @min_version elsif version != '0' deprecation_warning(settings[:name], 'xml') end unless block raise "no block found for version #{version}" unless blocks.key version return blocks[version][:block] end store_xml version, block, path end
Private Instance Methods
deprecation_warning(name, block)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 185 def deprecation_warning(name, block) logger.warn %(WARNING: #{name} set the version in the #{block} block, this is deprecated. Please use a version block.) end
highest_allowed_version()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 167 def highest_allowed_version ordered_version_list.each do |version| return version if version <= installed_version end end
logger()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 163 def logger JenkinsPipelineBuilder.logger end
ordered_version_list()
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 181 def ordered_version_list versions.keys.sort.reverse end
store_xml(version, block, path)
click to toggle source
# File lib/jenkins_pipeline_builder/extension_set.rb, line 173 def store_xml(version, block, path) if blocks[version] blocks[version].merge!(xml: block, path: path) else blocks[version] = { xml: block, path: path } end end