diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-08 12:32:56 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-08 12:32:56 +0200 |
commit | 87fe50f2a0facd5bfdf287195a21932ff2340e1b (patch) | |
tree | 1066a62d368746378d4e3850941cdaf3184cee7e /lib/gitlab | |
parent | cba266aabc60aeee64ac2eb7e76b3e9e7012bad4 (diff) | |
download | gitlab-ce-87fe50f2a0facd5bfdf287195a21932ff2340e1b.tar.gz |
Delegate Ci config entry value to single method
Diffstat (limited to 'lib/gitlab')
-rw-r--r-- | lib/gitlab/ci/config/node/before_script.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/entry.rb | 34 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/global.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/null.rb | 7 |
4 files changed, 32 insertions, 17 deletions
diff --git a/lib/gitlab/ci/config/node/before_script.rb b/lib/gitlab/ci/config/node/before_script.rb index 271cb7b5da1..be2ceebf3f9 100644 --- a/lib/gitlab/ci/config/node/before_script.rb +++ b/lib/gitlab/ci/config/node/before_script.rb @@ -9,9 +9,7 @@ module Gitlab 'Script that is executed before the one defined in a job.' end - def script - raise unless valid? - + def value @value.join("\n") end diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index f8f2d0be23a..0767fadcb9a 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -3,17 +3,14 @@ module Gitlab class Config module Node class Entry - attr_reader :value, :nodes, :parent + class InvalidError < StandardError; end def initialize(value, root = nil, parent = nil) @value = value @root = root @parent = parent - @nodes, @errors = [], [] - - keys.each_key do |key| - instance_variable_set("@#{key}", Null.new(nil, root, self)) - end + @nodes = {} + @errors = [] unless leaf? || value.is_a?(Hash) @errors << 'should be a configuration entry with hash value' @@ -24,17 +21,23 @@ module Gitlab return if leaf? || !valid? keys.each do |key, entry_class| - next unless @value.has_key?(key) + if @value.has_key?(key) + entry = entry_class.new(@value[key], @root, self) + else + entry = Node::Null.new(nil, @root, self) + end - entry = entry_class.new(@value[key], @root, self) - instance_variable_set("@#{key}", entry) - @nodes.append(entry) + @nodes[key] = entry end nodes.each(&:process!) nodes.each(&:validate!) end + def nodes + @nodes.values + end + def errors @errors + nodes.map(&:errors).flatten end @@ -51,6 +54,17 @@ module Gitlab self.class.nodes || {} end + def method_missing(name, *args) + super unless keys.has_key?(name) + raise InvalidError unless valid? + + @nodes[name].value + end + + def value + raise NotImplementedError + end + def validate! raise NotImplementedError end diff --git a/lib/gitlab/ci/config/node/global.rb b/lib/gitlab/ci/config/node/global.rb index 5912ead21c6..cfa506c28b7 100644 --- a/lib/gitlab/ci/config/node/global.rb +++ b/lib/gitlab/ci/config/node/global.rb @@ -4,10 +4,6 @@ module Gitlab module Node class Global < Entry add_node :before_script, BeforeScript - - def before_script - @before_script.script - end end end end diff --git a/lib/gitlab/ci/config/node/null.rb b/lib/gitlab/ci/config/node/null.rb index fc240e16f55..db3fa05c328 100644 --- a/lib/gitlab/ci/config/node/null.rb +++ b/lib/gitlab/ci/config/node/null.rb @@ -3,6 +3,13 @@ module Gitlab class Config module Node class Null < Entry + def value + nil + end + + def validate! + end + def method_missing(*) nil end |