yamload 0.1.0 → 0.5.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
- 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