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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 758feb9a3fef5b99db3c41f1ca8ae35cff00fc65
4
- data.tar.gz: a5338bfc13ea7b7b9086a92e4522589f5577716c
3
+ metadata.gz: 6662352e2d001dfb163f38aac52433782a13a06a
4
+ data.tar.gz: 41e455a16923463036a9e70ff844b58d821604eb
5
5
  SHA512:
6
- metadata.gz: 26eef5aeeee9d0cefa705bfeca306fe380bec996f8473d4ebca04edb2e1f6e46b5757e1d2bd56b94ab273bbb8402ffd65f3b3d77cabdae2950d13edcad96320c
7
- data.tar.gz: 29c402e3478bfb33f0f92b34bde650c65ebd95cd4fe8faf3ddafe56be6012f6ddf4b2f1ed747617d7f843e21006bb448ab250f58880f10b3f258019188ebe447
6
+ metadata.gz: dff0af7d661da1176cdb569aae6a318fc3b007ce1117269d208b655d38a085c51df93dc5a9d3f0256b8f164e1363d84e84fadea1dcaad2ea95a20ac472749313
7
+ data.tar.gz: 88528c52fcae762217c3fd7203ed60b8c851a49e6418df0310d4a430703f85cd75a66c96949af0df43a8b85e437cf0be1f642800a48116a964a7979ca1688962
@@ -8,10 +8,11 @@ module Quaker
8
8
  begin
9
9
  uri = GitCloneUrl.parse(url)
10
10
 
11
- if uri.path.match /^\/?(.*?)\/(.*?)(.git)?$/
11
+ if uri.path.match(/^\/?(.*?)\/(.*?)(.git)?$/)
12
12
  return { username: $1, repo: $2 }
13
13
  end
14
- rescue URI::InvalidComponentError => ex
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 {|dir|
23
- stdin, stdout, stderr = Open3.popen3("cd #{dir} && git remote -v | awk '{print $2}'")
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 name, spec in services_map
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! /^\~/, build_path
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 {|name, spec| expand_service_volumes(spec) }
20
+ services.each {|_name, spec| expand_service_volumes(spec) }
21
21
  end
22
22
  end
23
23
  end
@@ -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
- services_map.inject({}){|acc, (name, spec)|
34
- if is_tagged_service(spec, tags_list)
35
- acc[name] = spec
33
+ include_tagged_services = !options[:only_deps]
36
34
 
37
- dependencies(services_map, name)
38
- .inject(acc){|acc, d| acc.update(d => services_map[d])}
39
- end
40
-
41
- acc
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
@@ -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, v| template?(name)}
7
+ templates = services.select {|name, _| template?(name)}
8
8
  services
9
- .reject {|name, v| template?(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 {|name, spec| Quaker::TagMatcher::match(service["tags"], spec["tags"])}
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, spec| name != 'tags' }
20
+ .select{|name, _| name != 'tags' }
21
21
  svc.deep_merge(filtered_template_content)
22
22
  }
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module Quaker
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
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.1
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 00:00:00.000000000 Z
11
+ date: 2016-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler