Class: Vx::Builder::Matrix

Inherits:
Struct
  • Object
show all
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

Instance Method Summary collapse

Instance Attribute Details

#build_configurationObject

Returns the value of attribute build_configuration

Returns:

  • (Object)

    the current value of 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_configurationsObject



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_envObject



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_configurationsObject



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_configurationObject



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

#keysObject



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_pairsObject



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