Class: Gitlab::Ci::Config::Normalizer::MatrixStrategy
- Inherits:
-
Object
- Object
- Gitlab::Ci::Config::Normalizer::MatrixStrategy
- Defined in:
- lib/gitlab/ci/config/normalizer/matrix_strategy.rb
Class Method Summary collapse
- .applies_to?(config) ⇒ Boolean
- .build_from(job_name, initial_config) ⇒ Object
-
.expand(config) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord.
Instance Method Summary collapse
- #attributes ⇒ Object
-
#initialize(job_name, instance, variables, total) ⇒ MatrixStrategy
constructor
A new instance of MatrixStrategy.
- #name ⇒ Object
Constructor Details
#initialize(job_name, instance, variables, total) ⇒ MatrixStrategy
Returns a new instance of MatrixStrategy.
35 36 37 38 39 40 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 35 def initialize(job_name, instance, variables, total) @job_name = job_name @instance = instance @variables = variables.to_h @total = total end |
Class Method Details
.applies_to?(config) ⇒ Boolean
9 10 11 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 9 def applies_to?(config) config.is_a?(Hash) && config.key?(:matrix) end |
.build_from(job_name, initial_config) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 13 def build_from(job_name, initial_config) config = (initial_config[:matrix]) total = config.size config.map.with_index do |vars, index| new(job_name, index.next, vars, total) end end |
.expand(config) ⇒ Object
rubocop: disable CodeReuse/ActiveRecord
23 24 25 26 27 28 29 30 31 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 23 def (config) config.flat_map do |config| values = config.values values[0] .product(*values.from(1)) .map { |vals| config.keys.zip(vals).to_h } end end |
Instance Method Details
#attributes ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 42 def attributes { name: name, instance: instance, job_variables: variables, parallel: { total: total } }.compact end |
#name ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/gitlab/ci/config/normalizer/matrix_strategy.rb', line 51 def name vars = variables .values .compact .join(', ') "#{job_name}: [#{vars}]" end |