Move new Ci config configurable DSL to concern
This commit is contained in:
parent
48a59c1a8b
commit
33cd090b93
|
@ -0,0 +1,39 @@
|
|||
module Gitlab
|
||||
module Ci
|
||||
class Config
|
||||
module Node
|
||||
module Configurable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def keys
|
||||
self.class.nodes || {}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def add_node(key, entry_class)
|
||||
if @value.has_key?(key)
|
||||
entry = entry_class.new(@value[key], @root, self)
|
||||
else
|
||||
entry = Node::Null.new(nil, @root, self)
|
||||
end
|
||||
|
||||
@nodes[key] = entry
|
||||
end
|
||||
|
||||
class_methods do
|
||||
attr_reader :nodes
|
||||
|
||||
private
|
||||
|
||||
def add_node(symbol, entry_class)
|
||||
node = { symbol.to_sym => entry_class }
|
||||
|
||||
(@nodes ||= {}).merge!(node)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -20,8 +20,8 @@ module Gitlab
|
|||
def process!
|
||||
return if leaf? || invalid?
|
||||
|
||||
keys.each do |key, entry_class|
|
||||
add_node(key, entry_class)
|
||||
keys.each do |key, entry|
|
||||
add_node(key, entry)
|
||||
end
|
||||
|
||||
nodes.each(&:process!)
|
||||
|
@ -49,7 +49,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def keys
|
||||
self.class.nodes || {}
|
||||
{}
|
||||
end
|
||||
|
||||
def errors
|
||||
|
@ -60,7 +60,11 @@ module Gitlab
|
|||
super unless keys.has_key?(name)
|
||||
raise InvalidError unless valid?
|
||||
|
||||
@nodes[name].value
|
||||
@nodes[name].try(:value)
|
||||
end
|
||||
|
||||
def add_node(key, entry)
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def value
|
||||
|
@ -74,28 +78,6 @@ module Gitlab
|
|||
def description
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def add_node(key, entry_class)
|
||||
if @value.has_key?(key)
|
||||
entry = entry_class.new(@value[key], @root, self)
|
||||
else
|
||||
entry = Node::Null.new(nil, @root, self)
|
||||
end
|
||||
|
||||
@nodes[key] = entry
|
||||
end
|
||||
|
||||
class << self
|
||||
attr_reader :nodes
|
||||
|
||||
private
|
||||
|
||||
def add_node(symbol, entry_class)
|
||||
(@nodes ||= {}).merge!(symbol.to_sym => entry_class)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,6 +3,8 @@ module Gitlab
|
|||
class Config
|
||||
module Node
|
||||
class Global < Entry
|
||||
include Configurable
|
||||
|
||||
add_node :before_script, Script
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue