BigW Consortium Gitlab

Commit 33cd090b by 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