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.



48
49
50
51
52
53
54
# 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

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



78
79
80
81
82
83
84
85
86
87
88
89
# 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

#errorsObject



91
92
93
94
95
96
97
# 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) ⇒ Object

Raises:

  • (ArgumentError)


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 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?Boolean

Returns:

  • (Boolean)


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

def valid?
  errors.empty?
end