summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-11-09 13:50:34 +0100
committerMatija Čupić <matteeyah@gmail.com>2018-11-09 13:50:34 +0100
commitac83e52c56e32fee47193d1596c50dff09d78a9d (patch)
tree5b3d9aa5f141753a9929dc3b8ba2fe4768469ac7
parent2b5ffbbef68908e72f4d3ea258a5e7067216e313 (diff)
downloadgitlab-ce-cleanup-ci-normalizer.tar.gz
Abstract hash manipulation into the service methodcleanup-ci-normalizer
-rw-r--r--lib/gitlab/ci/config/normalizer.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/gitlab/ci/config/normalizer.rb b/lib/gitlab/ci/config/normalizer.rb
index 779923b109f..1c55db31cdf 100644
--- a/lib/gitlab/ci/config/normalizer.rb
+++ b/lib/gitlab/ci/config/normalizer.rb
@@ -32,8 +32,8 @@ module Gitlab
def parallelize_jobs
condition = lambda { |job_name, _| @parallelized_jobs.key?(job_name) }
- replacement = lambda do |job_name, config, hash|
- @parallelized_jobs[job_name].each { |name, index| hash[name.to_sym] = config.merge(name: name, instance: index) }
+ replacement = lambda do |job_name, config|
+ @parallelized_jobs[job_name].collect { |name, index| [name.to_sym, config.merge(name: name, instance: index)] }
end
self.class.replace_in_hash(@jobs_config, condition, replacement)
@@ -42,10 +42,11 @@ module Gitlab
def parallelize_dependencies(parallelized_config)
parallelized_job_names = @parallelized_jobs.keys.map(&:to_s)
condition = lambda { |_, config| config[:dependencies] && (config[:dependencies] & parallelized_job_names).any? }
- replacement = lambda do |job_name, config, hash|
+ replacement = lambda do |job_name, config|
intersection = config[:dependencies] & parallelized_job_names
deps = intersection.map { |dep| @parallelized_jobs[dep.to_sym].map(&:first) }.flatten
- hash[job_name] = config.merge(dependencies: deps)
+
+ [[job_name, config.merge(dependencies: deps)]]
end
self.class.replace_in_hash(parallelized_config, condition, replacement)
@@ -58,7 +59,7 @@ module Gitlab
def self.replace_in_hash(original_hash, condition_predicate, replacement_predicate)
original_hash.each_with_object({}) do |(key, value), hash|
if condition_predicate.call(key, value)
- replacement_predicate.call(key, value, hash)
+ replacement_predicate.call(key, value).each { |repl_key, repl_value| hash[repl_key] = repl_value }
else
hash[key] = value
end