class JenkinsPipelineBuilder::Extension
Constants
- EXT_METHODS
Attributes
helper[RW]
Public Class Methods
new()
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 48 def initialize EXT_METHODS.each do |key, value| instance_variable_set("@#{key}", value) if value end before false after false end
Public Instance Methods
check_parameters(value)
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 78 def check_parameters(value) return [] if parameters && parameters.empty? return [] unless value.is_a? Hash errors = [] value.each_key do |key| next if parameters && parameters.include?(key) errors << "Extension #{name} does not support parameter #{key}" end errors end
errors()
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 91 def errors errors = {} EXT_METHODS.each_key do |name| errors[name] = 'Must be set' if send(name).nil? end errors end
execute(value, n_xml)
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 60 def execute(value, n_xml) errors = check_parameters value raise ArgumentError, errors.join("\n") if errors.any? unless path raise ArgumentError, %(Extension #{name} has no valid path Check ModuleRegistry#entries and the definition of the extension Note: job_attributes have no implicit path and must be set in the builder ).squeeze(' ') end n_builders = n_xml.xpath(path).first n_builders.instance_exec(value, &before) if before build_extension_xml n_builders, value n_builders.instance_exec(value, &after) if after true end
valid?()
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 56 def valid? errors.empty? end
Private Instance Methods
build_extension_xml(n_builders, value)
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 101 def build_extension_xml(n_builders, value) Nokogiri::XML::Builder.with(n_builders) do |builder| include_helper value, builder builder.instance_exec helper, &xml end end
include_helper(params, builder)
click to toggle source
# File lib/jenkins_pipeline_builder/extensions.rb, line 108 def include_helper(params, builder) klass = "#{name.to_s.camelize}Helper".safe_constantize klass ||= ExtensionHelper self.helper = klass.new self, params, builder end