Move new Ci config configurable DSL to concern

This commit is contained in:
Grzegorz Bizon 2016-06-09 10:08:49 +02:00
parent 48a59c1a8b
commit 33cd090b93
3 changed files with 49 additions and 26 deletions

View File

@ -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

View File

@ -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

View File

@ -3,6 +3,8 @@ module Gitlab
class Config
module Node
class Global < Entry
include Configurable
add_node :before_script, Script
end
end