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