yamload 0.2.0 → 0.6.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: 7c9c46a3d4a1a0fd85bd0133c105cb9c6775b13b
4
- data.tar.gz: 6f779db8faf7e9ac393cfeb86d72cbfbc0c33a2b
2
+ SHA256:
3
+ metadata.gz: e3cf322ef0fa55679eca55cf9937cd0b9c3b310a40646f42389c66ebe4969810
4
+ data.tar.gz: f7e354d8873308cb068bea2c212018bf10d5cdff6dc6a517feb3442f15cce6b7
5
5
  SHA512:
6
- metadata.gz: 5c64e82e496305a8df2eec39a47a51dc83d870958070e425f78497374445c1625315410159de46ece460eb3163778e0f71d4bd117628c720a614f32af6fd8ce3
7
- data.tar.gz: 9b75f9a3f2d2331cde36ba3ff25f90b3968d4f22033148278c0383feb77e3f8573e2c1fb9f6a61d73ecc86e74b91e316dfefcd0906e0bee40f5007ba4011bdb1
6
+ metadata.gz: 9952ff4a1d5b3c43662ed6e541ba7871af7742f470ef22e60ea2bf3c825cd84da56abec00681f64c60cc55e400d18ed25566d6a11cdd0848f5d4f7d0f11e6777
7
+ data.tar.gz: 87b81d3b1d8401a4ac27a236eb31a945c9c62de6bab4e9931d5f5bfd6ce61ebd784da9388f88e76e9c0541010f89d985a623e297ef4382e96d1103578f162929
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "daily"
@@ -0,0 +1,61 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ name: Build
11
+ runs-on: ubuntu-latest
12
+ env:
13
+ AWS_REGION: us-east-1
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v2
17
+ - uses: ruby/setup-ruby@v1
18
+ with:
19
+ bundler-cache: true
20
+ - run: bundle exec rake
21
+
22
+ release:
23
+ needs: build
24
+ name: Release
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Checkout
28
+ uses: actions/checkout@v2
29
+
30
+ - name: Generate Changelog
31
+ run: |
32
+ # Get version from github ref (remove 'refs/tags/' and prefix 'v')
33
+ version="${GITHUB_REF#refs/tags/v}"
34
+ npx changelog-parser CHANGELOG.md | jq -cr ".versions | .[] | select(.version == \"$version\") | .body" > ${{ github.workflow }}-CHANGELOG.txt
35
+
36
+ - name: Release
37
+ uses: softprops/action-gh-release@v1
38
+ with:
39
+ body_path: ${{ github.workflow }}-CHANGELOG.txt
40
+ env:
41
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42
+
43
+ publish:
44
+ needs: [build, release]
45
+ name: Publish
46
+ runs-on: ubuntu-latest
47
+
48
+ steps:
49
+ - uses: actions/checkout@v2
50
+ - uses: ruby/setup-ruby@v1
51
+
52
+ - name: Publish to RubyGems
53
+ run: |
54
+ mkdir -p $HOME/.gem
55
+ touch $HOME/.gem/credentials
56
+ chmod 0600 $HOME/.gem/credentials
57
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
58
+ gem build *.gemspec
59
+ gem push *.gem
60
+ env:
61
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,18 @@
1
+ name: Build and Test
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ ruby: ["2.6", "2.7", "3.0"]
9
+ runs-on: ubuntu-latest
10
+ env:
11
+ AWS_REGION: us-east-1
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby }}
17
+ bundler-cache: true
18
+ - run: bundle exec rake
@@ -1 +1 @@
1
- 2.2.0
1
+ 3.0.0
@@ -1,3 +1,24 @@
1
+ ## 0.6.0
2
+
3
+ - [TT-8616] Update to build with github actions / ruby 3.0 / rails 6.1
4
+
5
+ ## 0.5.0 (2020-07-02)
6
+
7
+ - [TT-7683] Add support for AWS SSM and AWS Secrets Manager
8
+
9
+ ## 0.4.0 (2020-05-20)
10
+
11
+ - [TT-7323] Bring all dependencies up to date
12
+
13
+ ## 0.3.0 (2017-07-31)
14
+
15
+ Removed:
16
+ - [TT-2967] Remove deprecated `Yamload::Loader#loaded_hash`
17
+ - [TT-2967] Remove schema validation
18
+
19
+ Changed:
20
+ - [TT-1790] Update ClassyHash to version 0.2.0
21
+
1
22
  ## 0.2.0 (2015-02-20)
2
23
 
3
24
  Features:
data/README.md CHANGED
@@ -1,15 +1,13 @@
1
1
  # Yamload
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/yamload.svg)](http://badge.fury.io/rb/yamload)
4
- [![Build Status](https://travis-ci.org/sealink/yamload.svg?branch=master)](https://travis-ci.org/sealink/yamload)
4
+ [![Build Status](https://github.com/sealink/yamload/workflows/Build%20and%20Test/badge.svg?branch=master)](https://github.com/sealink/yamload/actions)
5
5
  [![Coverage Status](https://coveralls.io/repos/sealink/yamload/badge.svg)](https://coveralls.io/r/sealink/yamload)
6
- [![Dependency Status](https://gemnasium.com/sealink/yamload.svg)](https://gemnasium.com/sealink/yamload)
7
6
  [![Code Climate](https://codeclimate.com/github/sealink/yamload/badges/gpa.svg)](https://codeclimate.com/github/sealink/yamload)
8
7
 
9
- * YAML files loading
10
- * Recursive conversion to immutable objects
11
- * Schema validation
12
- * Default values
8
+ - YAML files loading
9
+ - Recursive conversion to immutable objects
10
+ - Default values
13
11
 
14
12
  ## Installation
15
13
 
@@ -30,17 +28,20 @@ Or install it yourself as:
30
28
  ## Usage
31
29
 
32
30
  Set up the YAML files directory
31
+
33
32
  ```ruby
34
33
  Yamload.dir = File.join(File.dirname(File.expand_path(__FILE__)),'config')
35
34
  ```
36
35
 
37
36
  e.g. config/test.yml
37
+
38
38
  ```yaml
39
39
  ---
40
40
  test: true
41
41
  ```
42
42
 
43
43
  Load YAML files from the directory and access keys
44
+
44
45
  ```ruby
45
46
  # Load config/test.yml
46
47
  loader = Yamload::Loader.new(:test)
@@ -50,25 +51,25 @@ loader.obj.attribute
50
51
  # => true
51
52
  ```
52
53
 
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
54
  Define defaults
55
+
68
56
  ```ruby
69
57
  loader.defaults = { 'test' => true , 'coverage' => { 'minimum' => 0.95 } }
70
58
  ```
71
59
 
60
+ ## Release
61
+
62
+ To publish a new version of this gem the following steps must be taken.
63
+
64
+ * Update the version in the following files
65
+ ```
66
+ CHANGELOG.md
67
+ lib/yamload/version.rb
68
+ ````
69
+ * Create a tag using the format v0.1.0
70
+ * Follow build progress in GitHub actions
71
+
72
+
72
73
  ## Contributing
73
74
 
74
75
  1. Fork it ( https://github.com/sealink/yamload/fork )
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
@@ -33,7 +33,7 @@ module Yamload
33
33
 
34
34
  def erb_parsed_content
35
35
  raw_content = File.read(filepath, encoding: 'bom|utf-8', mode: 'r')
36
- ERB.new(raw_content).result
36
+ ERB.new(raw_content).result(binding)
37
37
  end
38
38
 
39
39
  def filepath
@@ -41,6 +41,32 @@ module Yamload
41
41
  fail IOError, "#{@dir} is not a valid directory" unless File.directory?(@dir)
42
42
  File.join(@dir, "#{@file}.yml")
43
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
44
70
  end
45
71
  end
46
72
  end
@@ -1,3 +1,3 @@
1
1
  module Yamload
2
- VERSION = '0.2.0'
2
+ VERSION = '0.6.0'
3
3
  end
@@ -1,2 +1,4 @@
1
1
  ---
2
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' %>
@@ -32,10 +32,31 @@ describe Yamload::Loader do
32
32
  end
33
33
 
34
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
+
35
44
  let(:file) { :erb }
36
- let(:expected_content) { { "erb_var" => "ERB RAN!" } }
45
+ let(:expected_content) { { "erb_var" => "ERB RAN!", "ssm_var" => "SSM SUCCESS", "secret_var" => "SECRET SUCCESS" } }
37
46
  specify { expect(loader).to exist }
38
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
39
60
  end
40
61
 
41
62
  context 'with a file defining an array' do
@@ -53,15 +74,6 @@ describe Yamload::Loader do
53
74
  .to raise_error ArgumentError, "#{expected_content} is not a hash"
54
75
  }
55
76
  end
56
-
57
- context 'when a schema is defined' do
58
- let(:schema) { { test: true } }
59
- before { loader.schema = schema }
60
- specify {
61
- expect { loader.valid? }
62
- .to raise_error ArgumentError, "#{expected_content} is not a hash"
63
- }
64
- end
65
77
  end
66
78
 
67
79
  context 'with a file defining a string' do
@@ -79,15 +91,6 @@ describe Yamload::Loader do
79
91
  .to raise_error ArgumentError, "#{expected_content} is not a hash"
80
92
  }
81
93
  end
82
-
83
- context 'when a schema is defined' do
84
- let(:schema) { { test: true } }
85
- before { loader.schema = schema }
86
- specify {
87
- expect { loader.valid? }
88
- .to raise_error ArgumentError, "#{expected_content} is not a hash"
89
- }
90
- end
91
94
  end
92
95
 
93
96
  context 'with a file defining a hash' do
@@ -130,10 +133,6 @@ describe Yamload::Loader do
130
133
  }
131
134
  }
132
135
 
133
- specify 'deprecated `loaded_hash` still works' do
134
- expect(loader.loaded_hash).to eq loader.content
135
- end
136
-
137
136
  specify { expect(content).to eq expected_content }
138
137
 
139
138
  let(:content_obj) { loader.obj }
@@ -163,7 +162,7 @@ describe Yamload::Loader do
163
162
  let(:new_user) { double('new user') }
164
163
  specify 'the hash should be immutable' do
165
164
  expect { content['users'] << new_user }
166
- .to raise_error RuntimeError, "can't modify frozen Array"
165
+ .to raise_error RuntimeError, /can't modify frozen Array/i
167
166
  expect(content['users']).not_to include new_user
168
167
  end
169
168
  end
@@ -172,81 +171,11 @@ describe Yamload::Loader do
172
171
  let(:new_user) { double('new user') }
173
172
  specify 'the object should be immutable' do
174
173
  expect { content_obj.users << new_user }
175
- .to raise_error RuntimeError, "can't modify frozen Array"
174
+ .to raise_error RuntimeError, /can't modify frozen Array/i
176
175
  expect(content_obj.users).not_to include new_user
177
176
  end
178
177
  end
179
178
 
180
- context 'when no schema is defined' do
181
- specify { expect(loader).to be_valid }
182
- specify { expect(loader.error).to be_nil }
183
- specify { expect { loader.validate! }.not_to raise_error }
184
- end
185
-
186
- context 'when the schema is not a hash' do
187
- let(:schema) { 'not a hash' }
188
- specify {
189
- expect { loader.schema = schema }
190
- .to raise_error ArgumentError, "#{schema} is not a hash"
191
- }
192
- end
193
-
194
- context 'when a schema is defined' do
195
- let(:schema) {
196
- {
197
- 'test' => TrueClass,
198
- 'users' => [
199
- [
200
- {
201
- 'first_name' => String,
202
- 'last_name' => String,
203
- 'address' => {
204
- 'address_line_1' => String,
205
- 'address_line_2' => [:optional, String, NilClass],
206
- 'city' => String,
207
- 'state' => String,
208
- 'post_code' => Integer,
209
- 'country' => String
210
- },
211
- 'email' => String
212
- }
213
- ]
214
- ],
215
- 'settings' => {
216
- 'remote_access' => TrueClass
217
- }
218
- }
219
- }
220
-
221
- before do
222
- loader.schema = schema
223
- end
224
-
225
- specify { expect(loader.schema).to eq schema }
226
- specify { expect(loader).to be_valid }
227
- specify { expect(loader.error).to be_nil }
228
- specify { expect { loader.validate! }.not_to raise_error }
229
-
230
- context 'when the schema is not matched' do
231
- let(:schema) {
232
- {
233
- 'users' => [
234
- [
235
- {
236
- 'expected_attribute' => String
237
- }
238
- ]
239
- ]
240
- }
241
- }
242
-
243
- let(:expected_error) { '"users"[0]["expected_attribute"] is not present' }
244
- specify { expect(loader).not_to be_valid }
245
- specify { expect(loader.error).to eq expected_error }
246
- specify { expect { loader.validate! }.to raise_error Yamload::SchemaError, expected_error }
247
- end
248
- end
249
-
250
179
  context 'when the defaults object is not a hash' do
251
180
  let(:defaults) { 'not a hash' }
252
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.6.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 'pry-byebug'
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.2.0
4
+ version: 0.6.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-20 00:00:00.000000000 Z
12
+ date: 2021-01-06 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,18 +165,35 @@ dependencies:
150
165
  - - ">="
151
166
  - !ruby/object:Gem::Version
152
167
  version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: pry-byebug
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: []
159
189
  files:
190
+ - ".github/dependabot.yml"
191
+ - ".github/workflows/release.yml"
192
+ - ".github/workflows/ruby.yml"
160
193
  - ".gitignore"
161
194
  - ".rspec"
162
195
  - ".rubocop.yml"
163
196
  - ".ruby-version"
164
- - ".travis.yml"
165
197
  - CHANGELOG.md
166
198
  - Gemfile
167
199
  - LICENSE.txt
@@ -177,18 +209,17 @@ files:
177
209
  - lib/yamload/loader.rb
178
210
  - lib/yamload/loading.rb
179
211
  - lib/yamload/loading/yaml.rb
180
- - lib/yamload/validation.rb
181
- - lib/yamload/validation/hash.rb
182
- - lib/yamload/validation/result.rb
183
212
  - lib/yamload/version.rb
184
213
  - spec/conversion_spec.rb
185
214
  - spec/fixtures/array.yml
186
215
  - spec/fixtures/empty.yml
187
216
  - spec/fixtures/erb.yml
217
+ - spec/fixtures/erb_bad.yml
188
218
  - spec/fixtures/string.yml
189
219
  - spec/fixtures/test.yml
190
220
  - spec/loader_spec.rb
191
221
  - spec/spec_helper.rb
222
+ - spec/support/coverage_loader.rb
192
223
  - yamload.gemspec
193
224
  homepage: ''
194
225
  licenses:
@@ -202,15 +233,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
233
  requirements:
203
234
  - - ">="
204
235
  - !ruby/object:Gem::Version
205
- version: 1.9.3
236
+ version: 2.6.0
206
237
  required_rubygems_version: !ruby/object:Gem::Requirement
207
238
  requirements:
208
239
  - - ">="
209
240
  - !ruby/object:Gem::Version
210
241
  version: '0'
211
242
  requirements: []
212
- rubyforge_project:
213
- rubygems_version: 2.4.5
243
+ rubygems_version: 3.2.3
214
244
  signing_key:
215
245
  specification_version: 4
216
246
  summary: YAML files loader
@@ -219,7 +249,9 @@ test_files:
219
249
  - spec/fixtures/array.yml
220
250
  - spec/fixtures/empty.yml
221
251
  - spec/fixtures/erb.yml
252
+ - spec/fixtures/erb_bad.yml
222
253
  - spec/fixtures/string.yml
223
254
  - spec/fixtures/test.yml
224
255
  - spec/loader_spec.rb
225
256
  - spec/spec_helper.rb
257
+ - spec/support/coverage_loader.rb
@@ -1,10 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.9.3
4
- - 2.1
5
- - 2.2
6
- script: "bundle exec rake coverage"
7
- notifications:
8
- email:
9
- - support@travellink.com.au
10
- flowdock: e69dcafad1fea15c6b8c76e9ced965af
@@ -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