vx-builder 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/vx/builder/build_configuration.rb +14 -0
- data/lib/vx/builder/deploy_builder.rb +1 -1
- data/lib/vx/builder/matrix_builder.rb +2 -1
- data/lib/vx/builder/version.rb +1 -1
- data/spec/lib/builder/build_configuration_spec.rb +20 -0
- data/spec/lib/builder/deploy_builder_spec.rb +14 -0
- data/spec/lib/builder/matrix_builder_spec.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dfe8821a2dbcc3ee1ffcaab8735c41bafacd2b4
|
4
|
+
data.tar.gz: 570fe0d7926a01cb815cfb17f96ceae9a7f5598a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 394f85a75f76e416b51aa311b0a3425bca20733e354cd26b6388a54c0e13311eaaef8992b2ebdfd6d0d7f47f8382ad6423de643051fe98d10f8f8ad701e86c1e
|
7
|
+
data.tar.gz: 330d274952a14f064cae171fa88586d6b915223ce3be5b9231a893e72a889aa0fcb929f2b4e0415d22aa792a89d719e373e2330b0444e5d1b09676050a8bd192
|
@@ -8,6 +8,14 @@ module Vx
|
|
8
8
|
module Builder
|
9
9
|
class BuildConfiguration
|
10
10
|
|
11
|
+
REQUIRED_KEYS = %w{
|
12
|
+
rvm
|
13
|
+
scala
|
14
|
+
jdk
|
15
|
+
language
|
16
|
+
script
|
17
|
+
}
|
18
|
+
|
11
19
|
ATTRIBUTES = %w{
|
12
20
|
rvm
|
13
21
|
scala
|
@@ -57,6 +65,12 @@ module Vx
|
|
57
65
|
build_attributes new_attributes
|
58
66
|
end
|
59
67
|
|
68
|
+
def any?
|
69
|
+
REQUIRED_KEYS.any? do |key|
|
70
|
+
attributes[key].any?
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
60
74
|
def matrix_attributes
|
61
75
|
@matrix_attributes.inject({}) do |a,pair|
|
62
76
|
k,v = pair
|
@@ -14,7 +14,7 @@ module Vx
|
|
14
14
|
|
15
15
|
def initialize(matrix_builder, options = {})
|
16
16
|
@base_build_configuration = matrix_builder.build_configuration
|
17
|
-
@matrix_build_configuration = matrix_builder.build.first
|
17
|
+
@matrix_build_configuration = matrix_builder.build.first || matrix_builder.build_configuration
|
18
18
|
@branch = options[:branch]
|
19
19
|
end
|
20
20
|
|
@@ -19,10 +19,11 @@ module Vx
|
|
19
19
|
def build
|
20
20
|
@build ||= begin
|
21
21
|
new_attributes = build_configuration.to_hash.dup
|
22
|
-
attributes_for_new_build_configurations_with_merged_env.map do |matrix_attributes|
|
22
|
+
build_configurations = attributes_for_new_build_configurations_with_merged_env.map do |matrix_attributes|
|
23
23
|
new_attributes.merge!(matrix_attributes)
|
24
24
|
BuildConfiguration.new new_attributes, matrix_attributes
|
25
25
|
end
|
26
|
+
build_configurations.select{|bc| bc.any? }
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
data/lib/vx/builder/version.rb
CHANGED
@@ -78,4 +78,24 @@ describe Vx::Builder::BuildConfiguration do
|
|
78
78
|
expect(config).to be_deploy_modules
|
79
79
|
end
|
80
80
|
end
|
81
|
+
|
82
|
+
context "any?" do
|
83
|
+
subject { config.any? }
|
84
|
+
%w{ rvm scala jdk language script }.each do |required_key|
|
85
|
+
context "when key #{required_key} exists" do
|
86
|
+
let(:content) { {
|
87
|
+
required_key => "value"
|
88
|
+
} }
|
89
|
+
it { should be }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "when required keys does not exists" do
|
94
|
+
let(:content) { {
|
95
|
+
"before_script" => "value",
|
96
|
+
"deploy" => "value"
|
97
|
+
} }
|
98
|
+
it { should_not be }
|
99
|
+
end
|
100
|
+
end
|
81
101
|
end
|
@@ -61,6 +61,20 @@ describe Vx::Builder::DeployBuilder do
|
|
61
61
|
expect(config.first).to be_deploy_modules
|
62
62
|
end
|
63
63
|
|
64
|
+
it "should create build_configurations when matrix_build_configurations is empty" do
|
65
|
+
empty_config = Vx::Builder::BuildConfiguration.new("before_install" => "value", "deploy" => { "shell" => "value" })
|
66
|
+
matrix = Vx::Builder.matrix empty_config
|
67
|
+
deploy = Vx::Builder.deploy matrix
|
68
|
+
config = deploy.build
|
69
|
+
|
70
|
+
expect(matrix.build).to be_empty
|
71
|
+
|
72
|
+
expect(config).to have(1).item
|
73
|
+
expect(config.first).to_not be_deploy
|
74
|
+
expect(config.first).to be_deploy_modules
|
75
|
+
expect(config.first.before_install).to eq ["value"]
|
76
|
+
end
|
77
|
+
|
64
78
|
it "should be empty if not valid" do
|
65
79
|
deploy = described_class.new matrix, branch: "production"
|
66
80
|
expect(deploy.build).to be_empty
|
@@ -48,6 +48,14 @@ describe Vx::Builder::MatrixBuilder do
|
|
48
48
|
expect(subject.map(&:before_install).flatten).to eq ["echo before_install"] * 12
|
49
49
|
end
|
50
50
|
|
51
|
+
context "when empty configuration" do
|
52
|
+
let(:attributes) { {
|
53
|
+
"deploy" => "value"
|
54
|
+
} }
|
55
|
+
|
56
|
+
it { should be_empty }
|
57
|
+
end
|
58
|
+
|
51
59
|
context "without any matrix keys" do
|
52
60
|
let(:attributes) { {
|
53
61
|
"script" => %w{ /bin/true },
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vx-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vx-common
|