Commit 33cd090b authored by Grzegorz Bizon's avatar Grzegorz Bizon

Move new Ci config configurable DSL to concern

parent 48a59c1a
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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment