Class: JenkinsPipelineBuilder::Extension

Inherits:
Object
  • Object
show all
Defined in:
lib/jenkins_pipeline_builder/extensions.rb

Constant Summary collapse

EXT_METHODS =
{
  name: false,
  plugin_id: false,
  jenkins_name: 'No jenkins display name set',
  description: 'No description set',
  announced: true,
  min_version: false,
  path: false,
  type: false,
  before: false,
  after: false,
  xml: false,
  parameters: []
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeExtension

Returns a new instance of Extension.



47
48
49
50
51
52
53
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 47

def initialize
  EXT_METHODS.each do |key, value|
    instance_variable_set("@#{key}", value) if value
  end
  before false
  after false
end

Instance Attribute Details

#helperObject

Returns the value of attribute helper.



24
25
26
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 24

def helper
  @helper
end

Instance Method Details

#check_parameters(value) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 76

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

#errorsObject



87
88
89
90
91
92
93
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 87

def errors
  errors = {}
  EXT_METHODS.keys.each do |name|
    errors[name] = 'Must be set' if send(name).nil?
  end
  errors
end

#execute(value, n_xml) ⇒ Object

Raises:

  • (ArgumentError)


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 59

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?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/jenkins_pipeline_builder/extensions.rb', line 55

def valid?
  errors.empty?
end