yamload 0.1.0 → 0.5.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 +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +10 -5
- data/CHANGELOG.md +24 -1
- data/README.md +0 -15
- data/Rakefile +0 -6
- data/lib/yamload/loader.rb +3 -37
- data/lib/yamload/loading/yaml.rb +33 -2
- data/lib/yamload/version.rb +1 -1
- data/spec/fixtures/erb.yml +4 -0
- data/spec/fixtures/erb_bad.yml +1 -0
- data/spec/loader_spec.rb +30 -94
- data/spec/spec_helper.rb +1 -26
- data/spec/support/coverage_loader.rb +4 -0
- data/yamload.gemspec +13 -11
- metadata +62 -30
- data/lib/yamload/validation.rb +0 -7
- data/lib/yamload/validation/hash.rb +0 -28
- data/lib/yamload/validation/result.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4fdcbfb71834348eec7d1a41a9083dcfb84918b564702b6ebc32ac3f69a81dbd
|
4
|
+
data.tar.gz: 9c5859db3d1e10209540447671fa67f7fac5551bd0c0352216df5afd6597029b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17cbf7b431ef2820ff545507bda639713ba2173af7286637be94b7a8820862353b50264933abef8e9d81970dda432b8823dd24292d1b2a1b67f1417fd92de4df
|
7
|
+
data.tar.gz: 36f0e38afbf4817d6a3437bcabbfa9cf73c8f6d6f929dba548371ab13427e1c3aaef7e7fc703555b0f81e4cfd97ba9113118b3cd31fd0ee53ad5bd307ce56d18
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.1
|
data/.travis.yml
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
-
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
script: "bundle exec rake
|
3
|
+
- 2.5
|
4
|
+
- 2.6
|
5
|
+
- 2.7
|
6
|
+
script: "bundle exec rake spec"
|
7
7
|
notifications:
|
8
8
|
email:
|
9
9
|
- support@travellink.com.au
|
10
|
-
flowdock:
|
10
|
+
flowdock:
|
11
|
+
secure: UInYCeoRfF7FEnNgW38nZDk3SXWfWN5rm+tKDWX/eWGIIUuynspe6A8776w+wG+9jSuzGt9J3WEIxxognkYiWmud96NYiKZIQDLx/6ql15A9jEvWwqnWbnaL4F368ujhwLo6V42Z6wRfTUqNeRQKki2WCw0NVmT6Y1bdTeNNy70=
|
12
|
+
sudo: false
|
13
|
+
cache: bundler
|
14
|
+
env:
|
15
|
+
- AWS_REGION: us-east-1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## 0.5.0 (2020-07-02)
|
2
|
+
|
3
|
+
- [TT-7683] Add support for AWS SSM and AWS Secrets Manager
|
4
|
+
|
5
|
+
## 0.4.0 (2020-05-20)
|
6
|
+
|
7
|
+
- [TT-7323] Bring all dependencies up to date
|
8
|
+
|
9
|
+
## 0.3.0 (2017-07-31)
|
10
|
+
|
11
|
+
Removed:
|
12
|
+
- [TT-2967] Remove deprecated `Yamload::Loader#loaded_hash`
|
13
|
+
- [TT-2967] Remove schema validation
|
14
|
+
|
15
|
+
Changed:
|
16
|
+
- [TT-1790] Update ClassyHash to version 0.2.0
|
17
|
+
|
18
|
+
## 0.2.0 (2015-02-20)
|
19
|
+
|
20
|
+
Features:
|
21
|
+
|
22
|
+
- Add ERB parsing as a prestep for loaded YAML files
|
23
|
+
|
1
24
|
## 0.1.0 (2015-02-17)
|
2
25
|
|
3
26
|
- use proper semantic versioning (semver.org)
|
@@ -45,4 +68,4 @@ Features:
|
|
45
68
|
- load valid yml files defining a hash
|
46
69
|
- conversion of loaded hash to immutable object
|
47
70
|
- default values
|
48
|
-
- schema validation
|
71
|
+
- schema validation
|
data/README.md
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
|
9
9
|
* YAML files loading
|
10
10
|
* Recursive conversion to immutable objects
|
11
|
-
* Schema validation
|
12
11
|
* Default values
|
13
12
|
|
14
13
|
## Installation
|
@@ -50,20 +49,6 @@ loader.obj.attribute
|
|
50
49
|
# => true
|
51
50
|
```
|
52
51
|
|
53
|
-
Define a schema for the configuration
|
54
|
-
```ruby
|
55
|
-
# Load config/test.yml
|
56
|
-
loader = Yamload::Loader.new(:test)
|
57
|
-
loader.schema = { 'test' => String }
|
58
|
-
loader.valid?
|
59
|
-
# => true
|
60
|
-
loader.validate!
|
61
|
-
# => nil
|
62
|
-
loader.error
|
63
|
-
# => nil
|
64
|
-
```
|
65
|
-
See [Classy Hash](https://github.com/deseretbook/classy_hash) for documentation on schema definitions
|
66
|
-
|
67
52
|
Define defaults
|
68
53
|
```ruby
|
69
54
|
loader.defaults = { 'test' => true , 'coverage' => { 'minimum' => 0.95 } }
|
data/Rakefile
CHANGED
data/lib/yamload/loader.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'ice_nine'
|
3
|
+
require 'aws-sdk-secretsmanager'
|
4
|
+
require 'aws-sdk-ssm'
|
5
|
+
|
3
6
|
require 'yamload/loading'
|
4
7
|
require 'yamload/conversion'
|
5
8
|
require 'yamload/defaults'
|
6
|
-
require 'yamload/validation'
|
7
9
|
|
8
10
|
module Yamload
|
9
11
|
class Loader
|
@@ -15,12 +17,6 @@ module Yamload
|
|
15
17
|
@loader.exist?
|
16
18
|
end
|
17
19
|
|
18
|
-
# <b>DEPRECATED:</b> Please use <tt>content</tt> instead.
|
19
|
-
def loaded_hash
|
20
|
-
warn '[DEPRECATION] `loaded_hash` is deprecated. Please use `content` instead.'
|
21
|
-
content
|
22
|
-
end
|
23
|
-
|
24
20
|
def content
|
25
21
|
@content ||= IceNine.deep_freeze(content_with_defaults)
|
26
22
|
end
|
@@ -43,26 +39,6 @@ module Yamload
|
|
43
39
|
defaults_merger.defaults
|
44
40
|
end
|
45
41
|
|
46
|
-
def schema=(schema)
|
47
|
-
validator.schema = schema
|
48
|
-
end
|
49
|
-
|
50
|
-
def schema
|
51
|
-
validator.schema
|
52
|
-
end
|
53
|
-
|
54
|
-
def valid?
|
55
|
-
validation_result.valid?
|
56
|
-
end
|
57
|
-
|
58
|
-
def validate!
|
59
|
-
fail SchemaError, validation_result.error unless validation_result.valid?
|
60
|
-
end
|
61
|
-
|
62
|
-
def error
|
63
|
-
validation_result.error
|
64
|
-
end
|
65
|
-
|
66
42
|
private
|
67
43
|
|
68
44
|
def content_with_defaults
|
@@ -72,15 +48,5 @@ module Yamload
|
|
72
48
|
def defaults_merger
|
73
49
|
@defaults_merger ||= Defaults::Hash.new
|
74
50
|
end
|
75
|
-
|
76
|
-
def validator
|
77
|
-
@validator ||= Validation::Hash.new
|
78
|
-
end
|
79
|
-
|
80
|
-
def validation_result
|
81
|
-
validator.validate(content)
|
82
|
-
end
|
83
51
|
end
|
84
|
-
|
85
|
-
class SchemaError < StandardError; end
|
86
52
|
end
|
data/lib/yamload/loading/yaml.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'facets/kernel'
|
1
|
+
require 'facets/kernel/blank'
|
2
2
|
require 'ice_nine'
|
3
3
|
|
4
4
|
module Yamload
|
@@ -26,16 +26,47 @@ module Yamload
|
|
26
26
|
|
27
27
|
def load
|
28
28
|
fail IOError, "#{@file}.yml could not be found" unless exist?
|
29
|
-
YAML.
|
29
|
+
YAML.load(erb_parsed_content).tap do |content|
|
30
30
|
fail IOError, "#{@file}.yml is blank" if content.blank?
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
def erb_parsed_content
|
35
|
+
raw_content = File.read(filepath, encoding: 'bom|utf-8', mode: 'r')
|
36
|
+
ERB.new(raw_content).result(binding)
|
37
|
+
end
|
38
|
+
|
34
39
|
def filepath
|
35
40
|
fail IOError, 'No yml files directory specified' if @dir.nil?
|
36
41
|
fail IOError, "#{@dir} is not a valid directory" unless File.directory?(@dir)
|
37
42
|
File.join(@dir, "#{@file}.yml")
|
38
43
|
end
|
44
|
+
|
45
|
+
def secrets_client
|
46
|
+
options = {}
|
47
|
+
options[:endpoint] = ENV['AWS_SECRETS_MANAGER_ENDPOINT'] if ENV.has_key?('AWS_SECRETS_MANAGER_ENDPOINT')
|
48
|
+
@secrets_client ||= Aws::SecretsManager::Client.new(options)
|
49
|
+
end
|
50
|
+
|
51
|
+
def get_secret(key)
|
52
|
+
secrets_client.get_secret_value(secret_id: key).secret_string
|
53
|
+
end
|
54
|
+
|
55
|
+
def ssm_client
|
56
|
+
options = {}
|
57
|
+
options[:endpoint] = ENV['AWS_SSM_ENDPOINT'] if ENV.has_key?('AWS_SSM_ENDPOINT')
|
58
|
+
@ssm_client ||= Aws::SSM::Client.new(options)
|
59
|
+
end
|
60
|
+
|
61
|
+
def get_parameter(key, encrypted: true)
|
62
|
+
ssm_client.get_parameter(
|
63
|
+
name: key,
|
64
|
+
with_decryption: encrypted
|
65
|
+
).parameter.value
|
66
|
+
rescue Aws::SSM::Errors::ParameterNotFound => e
|
67
|
+
puts "Parameter #{key} not found"
|
68
|
+
raise e
|
69
|
+
end
|
39
70
|
end
|
40
71
|
end
|
41
72
|
end
|
data/lib/yamload/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
bad_key: <%= get_parameter 'bad_key' %>
|
data/spec/loader_spec.rb
CHANGED
@@ -31,6 +31,34 @@ describe Yamload::Loader do
|
|
31
31
|
specify { expect { content }.to raise_error IOError, 'empty.yml is blank' }
|
32
32
|
end
|
33
33
|
|
34
|
+
context 'with a file containing ERB' do
|
35
|
+
before do
|
36
|
+
allow_any_instance_of(Aws::SSM::Client).to receive(:get_parameter).
|
37
|
+
with({ name: 'ssm_var', with_decryption: true }).
|
38
|
+
and_return(double(parameter: double(value: 'SSM SUCCESS')))
|
39
|
+
allow_any_instance_of(Aws::SecretsManager::Client).to receive(:get_secret_value).
|
40
|
+
with({ secret_id: 'secret_var' }).
|
41
|
+
and_return(double(secret_string: 'SECRET SUCCESS'))
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:file) { :erb }
|
45
|
+
let(:expected_content) { { "erb_var" => "ERB RAN!", "ssm_var" => "SSM SUCCESS", "secret_var" => "SECRET SUCCESS" } }
|
46
|
+
specify { expect(loader).to exist }
|
47
|
+
specify { expect(content).to eq expected_content }
|
48
|
+
|
49
|
+
context 'with bad parameter key' do
|
50
|
+
before do
|
51
|
+
allow_any_instance_of(Aws::SSM::Client).to receive(:get_parameter).
|
52
|
+
with({ name: 'bad_key', with_decryption: true }).
|
53
|
+
and_raise(Aws::SSM::Errors::ParameterNotFound.new(Seahorse, 'bad_key'))
|
54
|
+
end
|
55
|
+
let(:file) { :erb_bad }
|
56
|
+
specify {
|
57
|
+
expect { content }.to raise_error Aws::SSM::Errors::ParameterNotFound
|
58
|
+
}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
34
62
|
context 'with a file defining an array' do
|
35
63
|
let(:file) { :array }
|
36
64
|
let(:expected_content) { %w(first second third) }
|
@@ -46,15 +74,6 @@ describe Yamload::Loader do
|
|
46
74
|
.to raise_error ArgumentError, "#{expected_content} is not a hash"
|
47
75
|
}
|
48
76
|
end
|
49
|
-
|
50
|
-
context 'when a schema is defined' do
|
51
|
-
let(:schema) { { test: true } }
|
52
|
-
before { loader.schema = schema }
|
53
|
-
specify {
|
54
|
-
expect { loader.valid? }
|
55
|
-
.to raise_error ArgumentError, "#{expected_content} is not a hash"
|
56
|
-
}
|
57
|
-
end
|
58
77
|
end
|
59
78
|
|
60
79
|
context 'with a file defining a string' do
|
@@ -72,15 +91,6 @@ describe Yamload::Loader do
|
|
72
91
|
.to raise_error ArgumentError, "#{expected_content} is not a hash"
|
73
92
|
}
|
74
93
|
end
|
75
|
-
|
76
|
-
context 'when a schema is defined' do
|
77
|
-
let(:schema) { { test: true } }
|
78
|
-
before { loader.schema = schema }
|
79
|
-
specify {
|
80
|
-
expect { loader.valid? }
|
81
|
-
.to raise_error ArgumentError, "#{expected_content} is not a hash"
|
82
|
-
}
|
83
|
-
end
|
84
94
|
end
|
85
95
|
|
86
96
|
context 'with a file defining a hash' do
|
@@ -123,10 +133,6 @@ describe Yamload::Loader do
|
|
123
133
|
}
|
124
134
|
}
|
125
135
|
|
126
|
-
specify 'deprecated `loaded_hash` still works' do
|
127
|
-
expect(loader.loaded_hash).to eq loader.content
|
128
|
-
end
|
129
|
-
|
130
136
|
specify { expect(content).to eq expected_content }
|
131
137
|
|
132
138
|
let(:content_obj) { loader.obj }
|
@@ -156,7 +162,7 @@ describe Yamload::Loader do
|
|
156
162
|
let(:new_user) { double('new user') }
|
157
163
|
specify 'the hash should be immutable' do
|
158
164
|
expect { content['users'] << new_user }
|
159
|
-
.to raise_error RuntimeError,
|
165
|
+
.to raise_error RuntimeError, /can't modify frozen Array/i
|
160
166
|
expect(content['users']).not_to include new_user
|
161
167
|
end
|
162
168
|
end
|
@@ -165,81 +171,11 @@ describe Yamload::Loader do
|
|
165
171
|
let(:new_user) { double('new user') }
|
166
172
|
specify 'the object should be immutable' do
|
167
173
|
expect { content_obj.users << new_user }
|
168
|
-
.to raise_error RuntimeError,
|
174
|
+
.to raise_error RuntimeError, /can't modify frozen Array/i
|
169
175
|
expect(content_obj.users).not_to include new_user
|
170
176
|
end
|
171
177
|
end
|
172
178
|
|
173
|
-
context 'when no schema is defined' do
|
174
|
-
specify { expect(loader).to be_valid }
|
175
|
-
specify { expect(loader.error).to be_nil }
|
176
|
-
specify { expect { loader.validate! }.not_to raise_error }
|
177
|
-
end
|
178
|
-
|
179
|
-
context 'when the schema is not a hash' do
|
180
|
-
let(:schema) { 'not a hash' }
|
181
|
-
specify {
|
182
|
-
expect { loader.schema = schema }
|
183
|
-
.to raise_error ArgumentError, "#{schema} is not a hash"
|
184
|
-
}
|
185
|
-
end
|
186
|
-
|
187
|
-
context 'when a schema is defined' do
|
188
|
-
let(:schema) {
|
189
|
-
{
|
190
|
-
'test' => TrueClass,
|
191
|
-
'users' => [
|
192
|
-
[
|
193
|
-
{
|
194
|
-
'first_name' => String,
|
195
|
-
'last_name' => String,
|
196
|
-
'address' => {
|
197
|
-
'address_line_1' => String,
|
198
|
-
'address_line_2' => [:optional, String, NilClass],
|
199
|
-
'city' => String,
|
200
|
-
'state' => String,
|
201
|
-
'post_code' => Integer,
|
202
|
-
'country' => String
|
203
|
-
},
|
204
|
-
'email' => String
|
205
|
-
}
|
206
|
-
]
|
207
|
-
],
|
208
|
-
'settings' => {
|
209
|
-
'remote_access' => TrueClass
|
210
|
-
}
|
211
|
-
}
|
212
|
-
}
|
213
|
-
|
214
|
-
before do
|
215
|
-
loader.schema = schema
|
216
|
-
end
|
217
|
-
|
218
|
-
specify { expect(loader.schema).to eq schema }
|
219
|
-
specify { expect(loader).to be_valid }
|
220
|
-
specify { expect(loader.error).to be_nil }
|
221
|
-
specify { expect { loader.validate! }.not_to raise_error }
|
222
|
-
|
223
|
-
context 'when the schema is not matched' do
|
224
|
-
let(:schema) {
|
225
|
-
{
|
226
|
-
'users' => [
|
227
|
-
[
|
228
|
-
{
|
229
|
-
'expected_attribute' => String
|
230
|
-
}
|
231
|
-
]
|
232
|
-
]
|
233
|
-
}
|
234
|
-
}
|
235
|
-
|
236
|
-
let(:expected_error) { '"users"[0]["expected_attribute"] is not present' }
|
237
|
-
specify { expect(loader).not_to be_valid }
|
238
|
-
specify { expect(loader.error).to eq expected_error }
|
239
|
-
specify { expect { loader.validate! }.to raise_error Yamload::SchemaError, expected_error }
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
179
|
context 'when the defaults object is not a hash' do
|
244
180
|
let(:defaults) { 'not a hash' }
|
245
181
|
specify {
|
data/spec/spec_helper.rb
CHANGED
@@ -1,31 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
if ENV['COVERAGE']
|
6
|
-
require 'simplecov'
|
7
|
-
require 'simplecov-rcov'
|
8
|
-
require 'coveralls'
|
9
|
-
Coveralls.wear!
|
10
|
-
|
11
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
12
|
-
SimpleCov::Formatter::RcovFormatter,
|
13
|
-
Coveralls::SimpleCov::Formatter
|
14
|
-
]
|
15
|
-
SimpleCov.start do
|
16
|
-
add_filter '/vendor/'
|
17
|
-
add_filter '/spec/'
|
18
|
-
add_group 'lib', 'lib'
|
19
|
-
end
|
20
|
-
SimpleCov.at_exit do
|
21
|
-
SimpleCov.result.format!
|
22
|
-
percent = SimpleCov.result.covered_percent
|
23
|
-
unless percent >= MINIMUM_COVERAGE
|
24
|
-
puts "Coverage must be above #{MINIMUM_COVERAGE}%. It is #{format('%.2f', percent)}%"
|
25
|
-
Kernel.exit(1)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
3
|
+
require 'support/coverage_loader'
|
29
4
|
|
30
5
|
require 'yamload'
|
31
6
|
|
data/yamload.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'yamload/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'yamload'
|
8
8
|
spec.version = Yamload::VERSION
|
9
|
-
spec.authors = ['Alessandro Berardi']
|
10
|
-
spec.email = ['berardialessandro@gmail.com']
|
9
|
+
spec.authors = ['Alessandro Berardi', 'Adam Davies']
|
10
|
+
spec.email = ['berardialessandro@gmail.com', 'adzdavies@gmail.com']
|
11
11
|
spec.summary = 'YAML files loader'
|
12
12
|
spec.description = 'YAML files loader with validation'
|
13
13
|
spec.homepage = ''
|
@@ -18,17 +18,19 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.5.0'
|
22
22
|
|
23
|
-
spec.add_dependency 'anima', '
|
24
|
-
spec.add_dependency 'facets', '
|
25
|
-
spec.add_dependency '
|
23
|
+
spec.add_dependency 'anima', '>= 0.2'
|
24
|
+
spec.add_dependency 'facets', '>= 3.0'
|
25
|
+
spec.add_dependency 'aws-sdk-secretsmanager'
|
26
|
+
spec.add_dependency 'aws-sdk-ssm'
|
26
27
|
|
27
|
-
spec.add_development_dependency 'bundler', '
|
28
|
-
spec.add_development_dependency 'rake', '
|
29
|
-
spec.add_development_dependency 'rspec', '
|
30
|
-
spec.add_development_dependency '
|
31
|
-
spec.add_development_dependency 'simplecov-rcov', '
|
28
|
+
spec.add_development_dependency 'bundler', '>= 1.7'
|
29
|
+
spec.add_development_dependency 'rake', '>= 10.0'
|
30
|
+
spec.add_development_dependency 'rspec', '>= 3.2'
|
31
|
+
spec.add_development_dependency 'coverage-kit'
|
32
|
+
spec.add_development_dependency 'simplecov-rcov', '>= 0.2'
|
32
33
|
spec.add_development_dependency 'coveralls'
|
33
34
|
spec.add_development_dependency 'rubocop'
|
35
|
+
spec.add_development_dependency 'travis'
|
34
36
|
end
|
metadata
CHANGED
@@ -1,125 +1,140 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yamload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alessandro Berardi
|
8
|
+
- Adam Davies
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2020-08-02 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: anima
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '0.2'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- - "
|
25
|
+
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
27
|
version: '0.2'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: facets
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- - "
|
32
|
+
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: '3.0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
|
-
- - "
|
39
|
+
- - ">="
|
39
40
|
- !ruby/object:Gem::Version
|
40
41
|
version: '3.0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
+
name: aws-sdk-secretsmanager
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
|
-
- - "
|
46
|
+
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
48
|
+
version: '0'
|
48
49
|
type: :runtime
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
|
-
- - "
|
53
|
+
- - ">="
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: aws-sdk-ssm
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
55
70
|
- !ruby/object:Gem::Dependency
|
56
71
|
name: bundler
|
57
72
|
requirement: !ruby/object:Gem::Requirement
|
58
73
|
requirements:
|
59
|
-
- - "
|
74
|
+
- - ">="
|
60
75
|
- !ruby/object:Gem::Version
|
61
76
|
version: '1.7'
|
62
77
|
type: :development
|
63
78
|
prerelease: false
|
64
79
|
version_requirements: !ruby/object:Gem::Requirement
|
65
80
|
requirements:
|
66
|
-
- - "
|
81
|
+
- - ">="
|
67
82
|
- !ruby/object:Gem::Version
|
68
83
|
version: '1.7'
|
69
84
|
- !ruby/object:Gem::Dependency
|
70
85
|
name: rake
|
71
86
|
requirement: !ruby/object:Gem::Requirement
|
72
87
|
requirements:
|
73
|
-
- - "
|
88
|
+
- - ">="
|
74
89
|
- !ruby/object:Gem::Version
|
75
90
|
version: '10.0'
|
76
91
|
type: :development
|
77
92
|
prerelease: false
|
78
93
|
version_requirements: !ruby/object:Gem::Requirement
|
79
94
|
requirements:
|
80
|
-
- - "
|
95
|
+
- - ">="
|
81
96
|
- !ruby/object:Gem::Version
|
82
97
|
version: '10.0'
|
83
98
|
- !ruby/object:Gem::Dependency
|
84
99
|
name: rspec
|
85
100
|
requirement: !ruby/object:Gem::Requirement
|
86
101
|
requirements:
|
87
|
-
- - "
|
102
|
+
- - ">="
|
88
103
|
- !ruby/object:Gem::Version
|
89
104
|
version: '3.2'
|
90
105
|
type: :development
|
91
106
|
prerelease: false
|
92
107
|
version_requirements: !ruby/object:Gem::Requirement
|
93
108
|
requirements:
|
94
|
-
- - "
|
109
|
+
- - ">="
|
95
110
|
- !ruby/object:Gem::Version
|
96
111
|
version: '3.2'
|
97
112
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
113
|
+
name: coverage-kit
|
99
114
|
requirement: !ruby/object:Gem::Requirement
|
100
115
|
requirements:
|
101
|
-
- - "
|
116
|
+
- - ">="
|
102
117
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0
|
118
|
+
version: '0'
|
104
119
|
type: :development
|
105
120
|
prerelease: false
|
106
121
|
version_requirements: !ruby/object:Gem::Requirement
|
107
122
|
requirements:
|
108
|
-
- - "
|
123
|
+
- - ">="
|
109
124
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0
|
125
|
+
version: '0'
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: simplecov-rcov
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
114
129
|
requirements:
|
115
|
-
- - "
|
130
|
+
- - ">="
|
116
131
|
- !ruby/object:Gem::Version
|
117
132
|
version: '0.2'
|
118
133
|
type: :development
|
119
134
|
prerelease: false
|
120
135
|
version_requirements: !ruby/object:Gem::Requirement
|
121
136
|
requirements:
|
122
|
-
- - "
|
137
|
+
- - ">="
|
123
138
|
- !ruby/object:Gem::Version
|
124
139
|
version: '0.2'
|
125
140
|
- !ruby/object:Gem::Dependency
|
@@ -150,9 +165,24 @@ dependencies:
|
|
150
165
|
- - ">="
|
151
166
|
- !ruby/object:Gem::Version
|
152
167
|
version: '0'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: travis
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
153
182
|
description: YAML files loader with validation
|
154
183
|
email:
|
155
184
|
- berardialessandro@gmail.com
|
185
|
+
- adzdavies@gmail.com
|
156
186
|
executables: []
|
157
187
|
extensions: []
|
158
188
|
extra_rdoc_files: []
|
@@ -177,17 +207,17 @@ files:
|
|
177
207
|
- lib/yamload/loader.rb
|
178
208
|
- lib/yamload/loading.rb
|
179
209
|
- lib/yamload/loading/yaml.rb
|
180
|
-
- lib/yamload/validation.rb
|
181
|
-
- lib/yamload/validation/hash.rb
|
182
|
-
- lib/yamload/validation/result.rb
|
183
210
|
- lib/yamload/version.rb
|
184
211
|
- spec/conversion_spec.rb
|
185
212
|
- spec/fixtures/array.yml
|
186
213
|
- spec/fixtures/empty.yml
|
214
|
+
- spec/fixtures/erb.yml
|
215
|
+
- spec/fixtures/erb_bad.yml
|
187
216
|
- spec/fixtures/string.yml
|
188
217
|
- spec/fixtures/test.yml
|
189
218
|
- spec/loader_spec.rb
|
190
219
|
- spec/spec_helper.rb
|
220
|
+
- spec/support/coverage_loader.rb
|
191
221
|
- yamload.gemspec
|
192
222
|
homepage: ''
|
193
223
|
licenses:
|
@@ -201,15 +231,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
231
|
requirements:
|
202
232
|
- - ">="
|
203
233
|
- !ruby/object:Gem::Version
|
204
|
-
version:
|
234
|
+
version: 2.5.0
|
205
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
236
|
requirements:
|
207
237
|
- - ">="
|
208
238
|
- !ruby/object:Gem::Version
|
209
239
|
version: '0'
|
210
240
|
requirements: []
|
211
|
-
|
212
|
-
rubygems_version: 2.4.5
|
241
|
+
rubygems_version: 3.1.2
|
213
242
|
signing_key:
|
214
243
|
specification_version: 4
|
215
244
|
summary: YAML files loader
|
@@ -217,7 +246,10 @@ test_files:
|
|
217
246
|
- spec/conversion_spec.rb
|
218
247
|
- spec/fixtures/array.yml
|
219
248
|
- spec/fixtures/empty.yml
|
249
|
+
- spec/fixtures/erb.yml
|
250
|
+
- spec/fixtures/erb_bad.yml
|
220
251
|
- spec/fixtures/string.yml
|
221
252
|
- spec/fixtures/test.yml
|
222
253
|
- spec/loader_spec.rb
|
223
254
|
- spec/spec_helper.rb
|
255
|
+
- spec/support/coverage_loader.rb
|
data/lib/yamload/validation.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'classy_hash'
|
2
|
-
|
3
|
-
module Yamload
|
4
|
-
module Validation
|
5
|
-
class Hash
|
6
|
-
attr_reader :schema
|
7
|
-
|
8
|
-
def initialize(schema = nil)
|
9
|
-
self.schema = schema
|
10
|
-
end
|
11
|
-
|
12
|
-
def schema=(schema)
|
13
|
-
unless schema.is_a?(::Hash) || schema.nil?
|
14
|
-
fail ArgumentError, "#{schema} is not a hash"
|
15
|
-
end
|
16
|
-
@schema = schema
|
17
|
-
end
|
18
|
-
|
19
|
-
def validate(hash)
|
20
|
-
fail ArgumentError, "#{hash} is not a hash" unless hash.is_a?(::Hash)
|
21
|
-
ClassyHash.validate(hash, @schema) unless @schema.nil?
|
22
|
-
Result.new(true)
|
23
|
-
rescue RuntimeError => e
|
24
|
-
Result.new(false, e.message)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|