quaker 0.3.1 → 0.3.2
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/quaker/git_resolver.rb +6 -5
- data/lib/quaker/path_extensions.rb +2 -2
- data/lib/quaker/tag_filter.rb +10 -10
- data/lib/quaker/templates.rb +4 -4
- data/lib/quaker/version.rb +1 -1
- data/lib/quaker.rb +2 -1
- 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: 6662352e2d001dfb163f38aac52433782a13a06a
|
4
|
+
data.tar.gz: 41e455a16923463036a9e70ff844b58d821604eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dff0af7d661da1176cdb569aae6a318fc3b007ce1117269d208b655d38a085c51df93dc5a9d3f0256b8f164e1363d84e84fadea1dcaad2ea95a20ac472749313
|
7
|
+
data.tar.gz: 88528c52fcae762217c3fd7203ed60b8c851a49e6418df0310d4a430703f85cd75a66c96949af0df43a8b85e437cf0be1f642800a48116a964a7979ca1688962
|
data/lib/quaker/git_resolver.rb
CHANGED
@@ -8,10 +8,11 @@ module Quaker
|
|
8
8
|
begin
|
9
9
|
uri = GitCloneUrl.parse(url)
|
10
10
|
|
11
|
-
if uri.path.match
|
11
|
+
if uri.path.match(/^\/?(.*?)\/(.*?)(.git)?$/)
|
12
12
|
return { username: $1, repo: $2 }
|
13
13
|
end
|
14
|
-
rescue URI::InvalidComponentError
|
14
|
+
rescue URI::InvalidComponentError
|
15
|
+
$stderr.puts "ERROR: Invalid git url: #{url}"
|
15
16
|
end
|
16
17
|
url
|
17
18
|
end
|
@@ -19,8 +20,8 @@ module Quaker
|
|
19
20
|
def find_dir_for_repo repo
|
20
21
|
dir = Dir.glob('*')
|
21
22
|
.select {|f| File.directory? f}
|
22
|
-
.select {|
|
23
|
-
|
23
|
+
.select {|subdir|
|
24
|
+
_stdin, stdout, _stderr = Open3.popen3("cd #{subdir} && git remote -v | awk '{print $2}'")
|
24
25
|
stdout.each_line
|
25
26
|
.map(&:strip)
|
26
27
|
.map {|l| parse_url(l) }
|
@@ -32,7 +33,7 @@ module Quaker
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def resolve services_map
|
35
|
-
for
|
36
|
+
for _, spec in services_map
|
36
37
|
git_repo = spec.delete("git")
|
37
38
|
next unless git_repo
|
38
39
|
|
@@ -2,7 +2,7 @@ module Quaker
|
|
2
2
|
class PathExtensions
|
3
3
|
def expand_path volumes_desc, build_path
|
4
4
|
parts = volumes_desc.split(':')
|
5
|
-
parts[0].gsub!
|
5
|
+
parts[0].gsub!(/^\~/, build_path)
|
6
6
|
parts.join(':')
|
7
7
|
end
|
8
8
|
|
@@ -17,7 +17,7 @@ module Quaker
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def expand services
|
20
|
-
services.each {|
|
20
|
+
services.each {|_name, spec| expand_service_volumes(spec) }
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/quaker/tag_filter.rb
CHANGED
@@ -27,19 +27,19 @@ module Quaker
|
|
27
27
|
TagMatcher.match svc_tags, tags_list
|
28
28
|
end
|
29
29
|
|
30
|
-
def filter services_map, tags_list
|
30
|
+
def filter services_map, tags_list, options = {}
|
31
31
|
return services_map if !tags_list || tags_list.empty?
|
32
32
|
|
33
|
-
|
34
|
-
if is_tagged_service(spec, tags_list)
|
35
|
-
acc[name] = spec
|
33
|
+
include_tagged_services = !options[:only_deps]
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
services_map
|
36
|
+
.select {|_, spec| is_tagged_service(spec, tags_list) }
|
37
|
+
.map {|name, _|
|
38
|
+
service = include_tagged_services ? [name] : []
|
39
|
+
service + dependencies(services_map, name)
|
40
|
+
}
|
41
|
+
.flatten
|
42
|
+
.inject({}) {|acc, (name, spec)| acc.update(name => services_map[name])}
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
data/lib/quaker/templates.rb
CHANGED
@@ -4,9 +4,9 @@ require 'deep_merge'
|
|
4
4
|
module Quaker
|
5
5
|
class Templates
|
6
6
|
def apply services
|
7
|
-
templates = services.select {|name,
|
7
|
+
templates = services.select {|name, _| template?(name)}
|
8
8
|
services
|
9
|
-
.reject {|name,
|
9
|
+
.reject {|name, _| template?(name)}
|
10
10
|
.inject({}) {|acc, (name, spec)|
|
11
11
|
acc.update(name => extend_with_matching_templates(spec, templates))
|
12
12
|
}
|
@@ -14,10 +14,10 @@ module Quaker
|
|
14
14
|
|
15
15
|
def extend_with_matching_templates service, templates
|
16
16
|
templates
|
17
|
-
.select {|
|
17
|
+
.select {|_, spec| Quaker::TagMatcher::match(service["tags"], spec["tags"])}
|
18
18
|
.inject(service) {|svc, (_, spec)|
|
19
19
|
filtered_template_content = spec
|
20
|
-
.select{|name,
|
20
|
+
.select{|name, _| name != 'tags' }
|
21
21
|
svc.deep_merge(filtered_template_content)
|
22
22
|
}
|
23
23
|
end
|
data/lib/quaker/version.rb
CHANGED
data/lib/quaker.rb
CHANGED
@@ -14,6 +14,7 @@ module Quaker
|
|
14
14
|
parameter "[SPEC_FILE]", "Extended docker-compose file"
|
15
15
|
option %w(--tags -t), "TAGS", "Filter services (and dependencies) by tag", multivalued: true
|
16
16
|
option %w(--dir -d), "DIR", "Specify base directory"
|
17
|
+
option %w(--only-deps -T), :flag, "Include only dependencies"
|
17
18
|
|
18
19
|
def default_spec_file
|
19
20
|
File.expand_path('docker/services/all.yml', dir)
|
@@ -35,7 +36,7 @@ module Quaker
|
|
35
36
|
|
36
37
|
spec = Include.new.process spec_file
|
37
38
|
spec = Templates.new.apply spec
|
38
|
-
spec = TagFilter.new.filter spec, tags_list
|
39
|
+
spec = TagFilter.new.filter spec, tags_list, only_deps: only_deps?
|
39
40
|
spec = GitResolver.new.resolve spec
|
40
41
|
spec = PathExtensions.new.expand spec
|
41
42
|
spec = ComposeFile.new.build spec
|
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.2
|
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-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|