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