quaker 0.3.0 → 0.3.1
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/Gemfile +1 -0
- data/lib/quaker/errors.rb +4 -0
- data/lib/quaker/tag_filter.rb +17 -6
- data/lib/quaker/templates.rb +4 -3
- data/lib/quaker/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 758feb9a3fef5b99db3c41f1ca8ae35cff00fc65
|
4
|
+
data.tar.gz: a5338bfc13ea7b7b9086a92e4522589f5577716c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26eef5aeeee9d0cefa705bfeca306fe380bec996f8473d4ebca04edb2e1f6e46b5757e1d2bd56b94ab273bbb8402ffd65f3b3d77cabdae2950d13edcad96320c
|
7
|
+
data.tar.gz: 29c402e3478bfb33f0f92b34bde650c65ebd95cd4fe8faf3ddafe56be6012f6ddf4b2f1ed747617d7f843e21006bb448ab250f58880f10b3f258019188ebe447
|
data/Gemfile
CHANGED
data/lib/quaker/tag_filter.rb
CHANGED
@@ -1,19 +1,30 @@
|
|
1
|
+
require 'quaker/tag_matcher'
|
2
|
+
require 'quaker/errors'
|
3
|
+
|
1
4
|
module Quaker
|
5
|
+
class DependencyResolveError < StandardError
|
6
|
+
end
|
7
|
+
|
2
8
|
class TagFilter
|
3
9
|
def dependencies services_map, name
|
4
10
|
spec = services_map[name]
|
11
|
+
raise MissingServiceError, name unless spec
|
12
|
+
|
5
13
|
depends_on = spec["depends_on"] || []
|
6
14
|
links = (spec["links"] || []).map{|l| l.split(':')[0]}
|
7
15
|
deps = links + depends_on
|
8
|
-
|
16
|
+
begin
|
17
|
+
deps + deps.map{|d| dependencies(services_map, d)}.flatten
|
18
|
+
rescue MissingServiceError => ex
|
19
|
+
msg = "Error resolving dependency #{ex.message} " +
|
20
|
+
"for service #{name}"
|
21
|
+
raise DependencyResolveError, msg
|
22
|
+
end
|
9
23
|
end
|
10
24
|
|
11
25
|
def is_tagged_service spec, tags_list
|
12
|
-
svc_tags = spec.delete(
|
13
|
-
|
14
|
-
# Skip service if no common tags
|
15
|
-
common = svc_tags & tags_list
|
16
|
-
common && !common.empty?
|
26
|
+
svc_tags = spec.delete('tags') || []
|
27
|
+
TagMatcher.match svc_tags, tags_list
|
17
28
|
end
|
18
29
|
|
19
30
|
def filter services_map, tags_list
|
data/lib/quaker/templates.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'quaker/tag_matcher'
|
2
|
+
require 'deep_merge'
|
2
3
|
|
3
4
|
module Quaker
|
4
5
|
class Templates
|
@@ -7,17 +8,17 @@ module Quaker
|
|
7
8
|
services
|
8
9
|
.reject {|name, v| template?(name)}
|
9
10
|
.inject({}) {|acc, (name, spec)|
|
10
|
-
acc.update(name =>
|
11
|
+
acc.update(name => extend_with_matching_templates(spec, templates))
|
11
12
|
}
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
+
def extend_with_matching_templates service, templates
|
15
16
|
templates
|
16
17
|
.select {|name, spec| Quaker::TagMatcher::match(service["tags"], spec["tags"])}
|
17
18
|
.inject(service) {|svc, (_, spec)|
|
18
19
|
filtered_template_content = spec
|
19
20
|
.select{|name, spec| name != 'tags' }
|
20
|
-
svc.
|
21
|
+
svc.deep_merge(filtered_template_content)
|
21
22
|
}
|
22
23
|
end
|
23
24
|
|
data/lib/quaker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Shapiro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- exe/quaker
|
78
78
|
- lib/quaker.rb
|
79
79
|
- lib/quaker/compose_file.rb
|
80
|
+
- lib/quaker/errors.rb
|
80
81
|
- lib/quaker/git_resolver.rb
|
81
82
|
- lib/quaker/include.rb
|
82
83
|
- lib/quaker/path_extensions.rb
|