Class: Vx::Builder::Matrix
- Inherits:
-
Struct
- Object
- Struct
- Vx::Builder::Matrix
- Defined in:
- lib/vx/builder/matrix.rb
Defined Under Namespace
Classes: Pair
Constant Summary collapse
- KEYS =
%w{ rvm gemfile scala jdk image env_matrix:env }
Instance Attribute Summary collapse
-
#build_configuration ⇒ Object
Returns the value of attribute build_configuration.
Instance Method Summary collapse
- #attributes_for_new_build_configurations ⇒ Object
- #attributes_for_new_build_configurations_with_merged_env ⇒ Object
- #build_configurations ⇒ Object
- #extract_keys_from_builds_configuration ⇒ Object
- #keys ⇒ Object
- #permutate_and_build_pairs ⇒ Object
Instance Attribute Details
#build_configuration ⇒ Object
Returns the value of attribute build_configuration
3 4 5 |
# File 'lib/vx/builder/matrix.rb', line 3 def build_configuration @build_configuration end |
Instance Method Details
#attributes_for_new_build_configurations ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/vx/builder/matrix.rb', line 42 def attributes_for_new_build_configurations permutate_and_build_pairs.inject([]) do |ac, pairs| ac << pairs.inject({}) do |a,pair| a[pair.key] = pair.value a end ac end end |
#attributes_for_new_build_configurations_with_merged_env ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/vx/builder/matrix.rb', line 27 def attributes_for_new_build_configurations_with_merged_env attrs = attributes_for_new_build_configurations attrs = [{}] if attrs.empty? attrs.map! do |a| env = a["env"] a["env"] = { "global" => Array(env) + build_configuration.env.global, "matrix" => Array(env) } a end attrs end |
#build_configurations ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/vx/builder/matrix.rb', line 19 def build_configurations new_attributes = build_configuration.to_hash.dup attributes_for_new_build_configurations_with_merged_env.map do |matrix_attributes| new_attributes.merge!(matrix_attributes) BuildConfiguration.new new_attributes, matrix_attributes end end |
#extract_keys_from_builds_configuration ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/vx/builder/matrix.rb', line 70 def extract_keys_from_builds_configuration KEYS.inject([]) do |a, key| key_method, key_name = key.split(":") key_name ||= key_method value = build_configuration.public_send(key_method) unless value.empty? a << [key_name, value] end a end end |
#keys ⇒ Object
15 16 17 |
# File 'lib/vx/builder/matrix.rb', line 15 def keys extract_keys_from_builds_configuration.map(&:first).sort end |
#permutate_and_build_pairs ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/vx/builder/matrix.rb', line 52 def permutate_and_build_pairs pairs = extract_keys_from_builds_configuration.map do |key_name, values| values.map{|v| Pair.new(key_name, v) } end if not_matrix?(pairs) [pairs.flatten] else array_permutations(pairs).map do |it| if it.is_a?(Array) it.flatten else [it] end end end.sort_by(&:to_s) end |