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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44ce3293ce8c169eedc97c4a6433fcdf865542e3
4
- data.tar.gz: 085a92c69d42eaa6455c61e9edbcced63597343e
3
+ metadata.gz: 758feb9a3fef5b99db3c41f1ca8ae35cff00fc65
4
+ data.tar.gz: a5338bfc13ea7b7b9086a92e4522589f5577716c
5
5
  SHA512:
6
- metadata.gz: 5ff78b67637e14828190df6f2e627a50813a7d0d884290aeb5e7a706701503939549f9afb94fda62e4a5a796d974e3e8282550b54a7d7301fc45e8f435a221c4
7
- data.tar.gz: dd0f33de4a2c3830ab34385c69111d9bbcef8f9d4c80e1d98873f6500fed1a86b5bc80e1e33b1e4d6100ce6ed8fb7711c068280181f885e4ad17453a056178d5
6
+ metadata.gz: 26eef5aeeee9d0cefa705bfeca306fe380bec996f8473d4ebca04edb2e1f6e46b5757e1d2bd56b94ab273bbb8402ffd65f3b3d77cabdae2950d13edcad96320c
7
+ data.tar.gz: 29c402e3478bfb33f0f92b34bde650c65ebd95cd4fe8faf3ddafe56be6012f6ddf4b2f1ed747617d7f843e21006bb448ab250f58880f10b3f258019188ebe447
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ gemspec
5
5
 
6
6
  gem 'clamp'
7
7
  gem 'git_clone_url'
8
+ gem 'deep_merge'
8
9
 
9
10
  group :test do
10
11
  gem "codeclimate-test-reporter", group: :test, require: nil
@@ -0,0 +1,4 @@
1
+ module Quaker
2
+ class MissingServiceError < StandardError
3
+ end
4
+ end
@@ -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
- deps + deps.map{|d| dependencies(services_map, d)}.flatten
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("tags") || []
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
@@ -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 => extend_with_matchine_templates(spec, templates))
11
+ acc.update(name => extend_with_matching_templates(spec, templates))
11
12
  }
12
13
  end
13
14
 
14
- def extend_with_matchine_templates service, templates
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.merge(filtered_template_content)
21
+ svc.deep_merge(filtered_template_content)
21
22
  }
22
23
  end
23
24
 
@@ -1,3 +1,3 @@
1
1
  module Quaker
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
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.0
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-10 00:00:00.000000000 Z
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