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!
|
def process!
|
||||||
return if leaf? || invalid?
|
return if leaf? || invalid?
|
||||||
|
|
||||||
keys.each do |key, entry_class|
|
keys.each do |key, entry|
|
||||||
add_node(key, entry_class)
|
add_node(key, entry)
|
||||||
end
|
end
|
||||||
|
|
||||||
nodes.each(&:process!)
|
nodes.each(&:process!)
|
||||||
|
@ -49,7 +49,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def keys
|
def keys
|
||||||
self.class.nodes || {}
|
{}
|
||||||
end
|
end
|
||||||
|
|
||||||
def errors
|
def errors
|
||||||
|
@ -60,7 +60,11 @@ module Gitlab
|
||||||
super unless keys.has_key?(name)
|
super unless keys.has_key?(name)
|
||||||
raise InvalidError unless valid?
|
raise InvalidError unless valid?
|
||||||
|
|
||||||
@nodes[name].value
|
@nodes[name].try(:value)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_node(key, entry)
|
||||||
|
raise NotImplementedError
|
||||||
end
|
end
|
||||||
|
|
||||||
def value
|
def value
|
||||||
|
@ -74,28 +78,6 @@ module Gitlab
|
||||||
def description
|
def description
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,6 +3,8 @@ module Gitlab
|
||||||
class Config
|
class Config
|
||||||
module Node
|
module Node
|
||||||
class Global < Entry
|
class Global < Entry
|
||||||
|
include Configurable
|
||||||
|
|
||||||
add_node :before_script, Script
|
add_node :before_script, Script
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue