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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 831e871ab4c0d0dbe55c9465bad82ba229730d87
4
- data.tar.gz: 52dbd15b58e1adc00928261b9490da7761bbc607
2
+ SHA256:
3
+ metadata.gz: 4fdcbfb71834348eec7d1a41a9083dcfb84918b564702b6ebc32ac3f69a81dbd
4
+ data.tar.gz: 9c5859db3d1e10209540447671fa67f7fac5551bd0c0352216df5afd6597029b
5
5
  SHA512:
6
- metadata.gz: 36e4c622fabf2326406df940a8caa541268372cbedc3f1b829b3fa3fdbf9b5766d1d8322817cab0fce255c936b3e75df49ed09fd8312d720d1a35229849c47a9
7
- data.tar.gz: ca1f592c5e75d2f1a34aa12385a9b8b16dd333bbc6d1f99d550ddf9a8569ae2475a3000eac9301ccc1354ad2c10ed6b37492b2031a32dea9c4963fc02e722ac4
6
+ metadata.gz: 17cbf7b431ef2820ff545507bda639713ba2173af7286637be94b7a8820862353b50264933abef8e9d81970dda432b8823dd24292d1b2a1b67f1417fd92de4df
7
+ data.tar.gz: 36f0e38afbf4817d6a3437bcabbfa9cf73c8f6d6f929dba548371ab13427e1c3aaef7e7fc703555b0f81e4cfd97ba9113118b3cd31fd0ee53ad5bd307ce56d18
@@ -1 +1 @@
1
- 2.2.0
1
+ 2.7.1
@@ -1,10 +1,15 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.1
5
- - 2.2
6
- script: "bundle exec rake coverage"
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: e69dcafad1fea15c6b8c76e9ced965af
10
+ flowdock:
11
+ secure: UInYCeoRfF7FEnNgW38nZDk3SXWfWN5rm+tKDWX/eWGIIUuynspe6A8776w+wG+9jSuzGt9J3WEIxxognkYiWmud96NYiKZIQDLx/6ql15A9jEvWwqnWbnaL4F368ujhwLo6V42Z6wRfTUqNeRQKki2WCw0NVmT6Y1bdTeNNy70=
12
+ sudo: false
13
+ cache: bundler
14
+ env:
15
+ - AWS_REGION: us-east-1
@@ -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
@@ -4,9 +4,3 @@ require 'rspec/core/rake_task'
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
6
  task default: :spec
7
-
8
- desc 'Generate SimpleCov test coverage and open in your browser'
9
- task :coverage do
10
- ENV['COVERAGE'] = 'true'
11
- Rake::Task['spec'].invoke
12
- end
@@ -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
@@ -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.load_file(filepath).tap do |content|
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
@@ -1,3 +1,3 @@
1
1
  module Yamload
2
- VERSION = '0.1.0'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,4 @@
1
+ ---
2
+ erb_var: <%= 'ERB RAN!' %>
3
+ ssm_var: <%= get_parameter 'ssm_var' %>
4
+ secret_var: <%= get_secret 'secret_var' %>
@@ -0,0 +1 @@
1
+ bad_key: <%= get_parameter 'bad_key' %>
@@ -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, "can't modify frozen Array"
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, "can't modify frozen Array"
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 {
@@ -1,31 +1,6 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
 
3
- MINIMUM_COVERAGE = 95
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
 
@@ -0,0 +1,4 @@
1
+ require 'simplecov-rcov'
2
+ require 'coveralls'
3
+ require 'coverage/kit'
4
+ Coverage::Kit.setup(minimum_coverage: 100)
@@ -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 = '>= 1.9.3'
21
+ spec.required_ruby_version = '>= 2.5.0'
22
22
 
23
- spec.add_dependency 'anima', '~> 0.2'
24
- spec.add_dependency 'facets', '~> 3.0'
25
- spec.add_dependency 'classy_hash', '~> 0.1'
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', '~> 1.7'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.2'
30
- spec.add_development_dependency 'simplecov', '~> 0.9'
31
- spec.add_development_dependency 'simplecov-rcov', '~> 0.2'
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.1.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: 2015-02-17 00:00:00.000000000 Z
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: classy_hash
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.1'
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.1'
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: simplecov
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.9'
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.9'
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: 1.9.3
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
- rubyforge_project:
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
@@ -1,7 +0,0 @@
1
- module Yamload
2
- module Validation
3
- end
4
- end
5
-
6
- require 'yamload/validation/hash'
7
- require 'yamload/validation/result'
@@ -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
@@ -1,16 +0,0 @@
1
- module Yamload
2
- module Validation
3
- class Result
4
- attr_reader :error
5
-
6
- def initialize(valid, error = nil)
7
- @valid = valid
8
- @error = error
9
- end
10
-
11
- def valid?
12
- @valid
13
- end
14
- end
15
- end
16
- end