confidante 0.1.0 → 0.2.0

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: f5d57db671f90e99991dca29339b9a34f87bc228
4
- data.tar.gz: 69c3a3a5183109090c6719752877c7668f53577c
3
+ metadata.gz: 678e803092f7eca50c5fdb3e30702c8eb2c07f3f
4
+ data.tar.gz: 4b5555c36ec0a0ff609cd41d7756753bda085281
5
5
  SHA512:
6
- metadata.gz: fc6bcf05777805980f352a97401622f3a00a9cc6393595e928c872de64df623205ca0973d9a35deabde006acac8147b6a1bb27e1b31752ce566feeda0ee0f899
7
- data.tar.gz: d6f4805529c8fd51d207fc80dc193ba489b74ba39efdf6831dbe449dc6fecbc844112ab1521b8f148a4a81b85a515a2a1f9e93754ca679b3820c5365645db7ad
6
+ metadata.gz: f7a90fb1d38661e092679fc01791de9a2f175d1574cf48a5e630a547a4fdf8a4d2836fcc53a5cab9a4699a08a8dd49e047bb7a8308d851333cea2087f0980eae
7
+ data.tar.gz: e16dc70ee1da23f6f444a73b1a020881b21384c3f75ed64e19090fb09a55c10bea69d03ea7952c35b5d3b375e7bde86cf4cdd99c566efe23aab0fa45e501fed5
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0-p648
1
+ 2.3.1
data/Gemfile.lock CHANGED
@@ -1,15 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- confidante (0.1.0)
4
+ confidante (0.2.0)
5
+ activesupport (~> 5.1, >= 5.1.1)
5
6
  hiera (~> 3.3, >= 3.3.1)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
11
+ activesupport (5.1.4)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (~> 0.7)
14
+ minitest (~> 5.1)
15
+ tzinfo (~> 1.1)
16
+ concurrent-ruby (1.0.5)
10
17
  diff-lcs (1.3)
11
18
  gem-release (0.7.4)
12
19
  hiera (3.4.1)
20
+ i18n (0.8.6)
21
+ minitest (5.10.3)
13
22
  rake (10.5.0)
14
23
  rspec (3.6.0)
15
24
  rspec-core (~> 3.6.0)
@@ -24,6 +33,9 @@ GEM
24
33
  diff-lcs (>= 1.2.0, < 2.0)
25
34
  rspec-support (~> 3.6.0)
26
35
  rspec-support (3.6.0)
36
+ thread_safe (0.3.6)
37
+ tzinfo (1.2.3)
38
+ thread_safe (~> 0.1)
27
39
 
28
40
  PLATFORMS
29
41
  ruby
data/confidante.gemspec CHANGED
@@ -24,9 +24,10 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.required_ruby_version = '>= 2.0'
27
+ spec.required_ruby_version = '>= 2.3'
28
28
 
29
29
  spec.add_dependency 'hiera', '~> 3.3', '>= 3.3.1'
30
+ spec.add_dependency 'activesupport', '~> 5.1', '>= 5.1.1'
30
31
 
31
32
  spec.add_development_dependency 'bundler', '~> 1.14'
32
33
  spec.add_development_dependency 'rake', '~> 10.0'
data/lib/confidante.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  require 'confidante/version'
2
+ require 'confidante/configuration'
3
+
4
+ require 'hiera/backend/env_backend'
5
+ require 'hiera/backend/overrides_backend'
2
6
 
3
7
  module Confidante
4
8
  end
@@ -0,0 +1,45 @@
1
+ require 'hiera'
2
+ require 'active_support'
3
+ require 'active_support/core_ext/hash/keys'
4
+
5
+ module Confidante
6
+ class Configuration
7
+ def initialize(opts)
8
+ options = {
9
+ overrides: {},
10
+ scope: {},
11
+ }.merge(opts.to_options)
12
+
13
+ unless options[:hiera]
14
+ options[:hiera] = Hiera.new(config: 'config/hiera.yaml')
15
+ end
16
+
17
+ @overrides = options[:overrides]
18
+ @scope = options[:scope]
19
+ @hiera = options[:hiera]
20
+ end
21
+
22
+ def for_overrides(overrides)
23
+ Configuration.new(
24
+ overrides: overrides,
25
+ scope: @scope,
26
+ hiera: @hiera)
27
+ end
28
+
29
+ def for_scope(scope)
30
+ Configuration.new(
31
+ overrides: @overrides,
32
+ scope: scope,
33
+ hiera: @hiera)
34
+ end
35
+
36
+ def method_missing(method, *args, &block)
37
+ @hiera.lookup(
38
+ method.to_s,
39
+ nil,
40
+ {cwd: Dir.pwd}
41
+ .merge(@scope)
42
+ .merge({overrides: @overrides}))
43
+ end
44
+ end
45
+ end
@@ -1,3 +1,3 @@
1
1
  module Confidante
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -0,0 +1,20 @@
1
+ require 'hiera'
2
+
3
+ class Hiera
4
+ module Backend
5
+ class Env_backend
6
+ def initialize
7
+ Hiera.debug('Hiera environment backend starting')
8
+ end
9
+
10
+ def lookup(key, scope, order_override, resolution_type, context)
11
+ Hiera.debug(
12
+ "Looking up #{key} in environment backend with #{resolution_type}")
13
+
14
+ Backend.parse_answer(
15
+ ENV[key.upcase] || throw(:no_such_key),
16
+ scope)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'hiera'
2
+
3
+ class Hiera
4
+ module Backend
5
+ class Overrides_backend
6
+ def initialize
7
+ Hiera.debug('Hiera overrides backend starting')
8
+ end
9
+
10
+ def lookup(key, scope, order_override, resolution_type, context)
11
+ Hiera.debug(
12
+ "Looking up #{key} in overrides backend with #{resolution_type}")
13
+
14
+ Backend.parse_answer(
15
+ scope[:overrides][key.to_sym] || throw(:no_such_key),
16
+ scope)
17
+ end
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confidante
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -14,76 +14,96 @@ dependencies:
14
14
  name: hiera
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.3'
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.3.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.3'
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.3.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '5.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 5.1.1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '5.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 5.1.1
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: bundler
35
55
  requirement: !ruby/object:Gem::Requirement
36
56
  requirements:
37
- - - ~>
57
+ - - "~>"
38
58
  - !ruby/object:Gem::Version
39
59
  version: '1.14'
40
60
  type: :development
41
61
  prerelease: false
42
62
  version_requirements: !ruby/object:Gem::Requirement
43
63
  requirements:
44
- - - ~>
64
+ - - "~>"
45
65
  - !ruby/object:Gem::Version
46
66
  version: '1.14'
47
67
  - !ruby/object:Gem::Dependency
48
68
  name: rake
49
69
  requirement: !ruby/object:Gem::Requirement
50
70
  requirements:
51
- - - ~>
71
+ - - "~>"
52
72
  - !ruby/object:Gem::Version
53
73
  version: '10.0'
54
74
  type: :development
55
75
  prerelease: false
56
76
  version_requirements: !ruby/object:Gem::Requirement
57
77
  requirements:
58
- - - ~>
78
+ - - "~>"
59
79
  - !ruby/object:Gem::Version
60
80
  version: '10.0'
61
81
  - !ruby/object:Gem::Dependency
62
82
  name: rspec
63
83
  requirement: !ruby/object:Gem::Requirement
64
84
  requirements:
65
- - - ~>
85
+ - - "~>"
66
86
  - !ruby/object:Gem::Version
67
87
  version: '3.0'
68
88
  type: :development
69
89
  prerelease: false
70
90
  version_requirements: !ruby/object:Gem::Requirement
71
91
  requirements:
72
- - - ~>
92
+ - - "~>"
73
93
  - !ruby/object:Gem::Version
74
94
  version: '3.0'
75
95
  - !ruby/object:Gem::Dependency
76
96
  name: gem-release
77
97
  requirement: !ruby/object:Gem::Requirement
78
98
  requirements:
79
- - - ~>
99
+ - - "~>"
80
100
  - !ruby/object:Gem::Version
81
101
  version: '0.7'
82
102
  type: :development
83
103
  prerelease: false
84
104
  version_requirements: !ruby/object:Gem::Requirement
85
105
  requirements:
86
- - - ~>
106
+ - - "~>"
87
107
  - !ruby/object:Gem::Version
88
108
  version: '0.7'
89
109
  description: A configuration engine combining environment variables, programmatic
@@ -94,9 +114,9 @@ executables: []
94
114
  extensions: []
95
115
  extra_rdoc_files: []
96
116
  files:
97
- - .gitignore
98
- - .rspec
99
- - .ruby-version
117
+ - ".gitignore"
118
+ - ".rspec"
119
+ - ".ruby-version"
100
120
  - CODE_OF_CONDUCT.md
101
121
  - Gemfile
102
122
  - Gemfile.lock
@@ -107,7 +127,10 @@ files:
107
127
  - bin/setup
108
128
  - confidante.gemspec
109
129
  - lib/confidante.rb
130
+ - lib/confidante/configuration.rb
110
131
  - lib/confidante/version.rb
132
+ - lib/hiera/backend/env_backend.rb
133
+ - lib/hiera/backend/overrides_backend.rb
111
134
  homepage: https://github.com/tobyclemson/confidante
112
135
  licenses:
113
136
  - MIT
@@ -118,17 +141,17 @@ require_paths:
118
141
  - lib
119
142
  required_ruby_version: !ruby/object:Gem::Requirement
120
143
  requirements:
121
- - - '>='
144
+ - - ">="
122
145
  - !ruby/object:Gem::Version
123
- version: '2.0'
146
+ version: '2.3'
124
147
  required_rubygems_version: !ruby/object:Gem::Requirement
125
148
  requirements:
126
- - - '>='
149
+ - - ">="
127
150
  - !ruby/object:Gem::Version
128
151
  version: '0'
129
152
  requirements: []
130
153
  rubyforge_project:
131
- rubygems_version: 2.0.14.1
154
+ rubygems_version: 2.5.1
132
155
  signing_key:
133
156
  specification_version: 4
134
157
  summary: A configuration engine over hiera.