diff options
author | Matija Čupić <matteeyah@gmail.com> | 2018-11-09 13:50:34 +0100 |
---|---|---|
committer | Matija Čupić <matteeyah@gmail.com> | 2018-11-09 13:50:34 +0100 |
commit | ac83e52c56e32fee47193d1596c50dff09d78a9d (patch) | |
tree | 5b3d9aa5f141753a9929dc3b8ba2fe4768469ac7 | |
parent | 2b5ffbbef68908e72f4d3ea258a5e7067216e313 (diff) | |
download | gitlab-ce-cleanup-ci-normalizer.tar.gz |
Abstract hash manipulation into the service methodcleanup-ci-normalizer
-rw-r--r-- | lib/gitlab/ci/config/normalizer.rb | 11 |
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 |