confidante 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.