From 6c704fd99e1fd5a86dd2eccc8b192a009546cc96 Mon Sep 17 00:00:00 2001
From: Grzegorz Bizon <grzesiek.bizon@gmail.com>
Date: Sat, 6 Aug 2016 16:45:02 +0200
Subject: [PATCH] Inject dependencies into each CI config entry node

---
 lib/gitlab/ci/config/node/configurable.rb |  2 +-
 lib/gitlab/ci/config/node/entry.rb        | 11 +++++++----
 lib/gitlab/ci/config/node/global.rb       |  6 +++++-
 lib/gitlab/ci/config/node/job.rb          |  2 +-
 lib/gitlab/ci/config/node/jobs.rb         |  2 +-
 5 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/lib/gitlab/ci/config/node/configurable.rb b/lib/gitlab/ci/config/node/configurable.rb
index 2de82d40c9d..fb3604edac2 100644
--- a/lib/gitlab/ci/config/node/configurable.rb
+++ b/lib/gitlab/ci/config/node/configurable.rb
@@ -25,7 +25,7 @@ module Gitlab
 
           private
 
-          def compose!
+          def compose!(_deps)
             self.class.nodes.each do |key, factory|
               factory
                 .value(@config[key])
diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb
index 0c782c422b5..40ffa85d6da 100644
--- a/lib/gitlab/ci/config/node/entry.rb
+++ b/lib/gitlab/ci/config/node/entry.rb
@@ -20,11 +20,14 @@ module Gitlab
             @validator.validate(:new)
           end
 
-          def process!
+          def process!(deps = nil)
             return unless valid?
 
-            compose!
-            descendants.each(&:process!)
+            compose!(deps)
+
+            descendants.each do |entry|
+              entry.process!(deps)
+            end
           end
 
           def leaf?
@@ -76,7 +79,7 @@ module Gitlab
 
           private
 
-          def compose!
+          def compose!(_deps)
           end
         end
       end
diff --git a/lib/gitlab/ci/config/node/global.rb b/lib/gitlab/ci/config/node/global.rb
index ccd539fb003..4d65309cf44 100644
--- a/lib/gitlab/ci/config/node/global.rb
+++ b/lib/gitlab/ci/config/node/global.rb
@@ -36,9 +36,13 @@ module Gitlab
           helpers :before_script, :image, :services, :after_script,
                   :variables, :stages, :types, :cache, :jobs
 
+          def process!(_deps = nil)
+            super(self)
+          end
+
           private
 
-          def compose!
+          def compose!(_deps)
             super
 
             compose_jobs!
diff --git a/lib/gitlab/ci/config/node/job.rb b/lib/gitlab/ci/config/node/job.rb
index e84737acbb9..55f34b446e5 100644
--- a/lib/gitlab/ci/config/node/job.rb
+++ b/lib/gitlab/ci/config/node/job.rb
@@ -107,7 +107,7 @@ module Gitlab
               after_script: after_script }
           end
 
-          def compose!
+          def compose!(_deps)
             super
 
             if type_defined? && !stage_defined?
diff --git a/lib/gitlab/ci/config/node/jobs.rb b/lib/gitlab/ci/config/node/jobs.rb
index 51683c82ceb..a2a8554ed19 100644
--- a/lib/gitlab/ci/config/node/jobs.rb
+++ b/lib/gitlab/ci/config/node/jobs.rb
@@ -28,7 +28,7 @@ module Gitlab
 
           private
 
-          def compose!
+          def compose!(_deps)
             @config.each do |name, config|
               node = hidden?(name) ? Node::HiddenJob : Node::Job
 
-- 
GitLab