settings_reader 0.1.0 → 0.2.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
2
  SHA256:
3
- metadata.gz: ebad4556c91f82603c3811808d396bbc12875352e8f19acee09ad4787b958edc
4
- data.tar.gz: 0a1e35282c1d2ce2b1ea49be238d2dda10ba7877ca5d066526f6981d3826f639
3
+ metadata.gz: 2ab3a27357661ed1306d2333a8a7dedf2b48648752f1dbf1e912d6cbc95a0449
4
+ data.tar.gz: e4360e30403969a899afa297fb700e8b348d53eb31c62170d5245ea61568bb12
5
5
  SHA512:
6
- metadata.gz: e01df5eea2864552cde89b3bebb194ee762a0573c2b782a1fba4d7525e4729f359643651e168090f0e09547bb4c6c625d1d9b68e4b5cd5dde8696def39d288a4
7
- data.tar.gz: 681a99042b9b582935478b2f8a8d2455baa156e5c027700cab87d857767f9abba523c540a9ab42ad17bd47bf94a9d21ef6ac8b73a469dd8dc4ea7354fea7010b
6
+ metadata.gz: c9258ae69739f257b64e7dfe5f2f71c6ee5a669907c8c03fde955f34f25fed5e423d9cce07b0f2b905c70b73aabbf688d7c21f21cdd8c78a5b5d428273b51e39
7
+ data.tar.gz: a09f7957d5e0ed8922c9c30dfbad6ade1c94a4deafeb423cdfe695d8a2b35cbf076934288cdf74341df9cfd1c2d66fb1a3e1ea297062d26cea24f7db2363ccb6
@@ -0,0 +1,91 @@
1
+ version: 2.1
2
+
3
+ orbs:
4
+ ruby: circleci/ruby@1.4.0
5
+
6
+ jobs:
7
+
8
+ rspec-test:
9
+ parameters:
10
+ ruby-version:
11
+ type: string
12
+ docker:
13
+ - image: cimg/ruby:<< parameters.ruby-version >>
14
+ resource_class: small
15
+ environment:
16
+ COVERAGE: true
17
+ steps:
18
+ - checkout
19
+ - ruby/install-deps
20
+ - run:
21
+ name: Run rspec
22
+ command: bundle exec rspec
23
+ - run:
24
+ name: Upload coverage
25
+ command: bash <(curl -s https://codecov.io/bash)
26
+
27
+ rubocop:
28
+ docker:
29
+ - image: cimg/ruby:2.5
30
+ resource_class: small
31
+ steps:
32
+ - checkout
33
+ - ruby/install-deps
34
+ - run:
35
+ name: Run rubocop
36
+ command: bundle exec rubocop --parallel
37
+
38
+ release:
39
+ parameters:
40
+ tag:
41
+ type: string
42
+ default: "default-tag"
43
+ docker:
44
+ - image: cimg/ruby:2.6.6
45
+ resource_class: small
46
+ environment:
47
+ RELEASE_TAG: << parameters.tag >>
48
+ steps:
49
+ - checkout
50
+ - ruby/install-deps
51
+ - run:
52
+ name: Set up credentials
53
+ command: |
54
+ mkdir -p $HOME/.gem
55
+ touch $HOME/.gem/credentials
56
+ chmod 0600 $HOME/.gem/credentials
57
+ printf -- "---\n:rubygems_api_key: $RUBYGEMS_API_KEY\n" > $HOME/.gem/credentials
58
+ - run:
59
+ name: Set version
60
+ command: sed -i "s/[[:digit:]].[[:digit:]].[[:digit:]]/${RELEASE_TAG}/g" $(find . -name "version.rb")
61
+ - run:
62
+ name: Build gem
63
+ command: gem build *.gemspec
64
+ - run:
65
+ name: Push gem
66
+ command: gem push *.gem
67
+
68
+ workflows:
69
+
70
+ settings_reader.build:
71
+ jobs:
72
+
73
+ - rspec-test:
74
+ matrix:
75
+ parameters:
76
+ ruby-version: [ '2.5', '2.6', '2.7', '3.0' ]
77
+
78
+ - rubocop:
79
+ name: Rubocop
80
+
81
+ settings_reader.release:
82
+ jobs:
83
+
84
+ - release:
85
+ tag: << pipeline.git.tag >>
86
+ context: gem-publishing
87
+ filters:
88
+ branches:
89
+ ignore: /.*/
90
+ tags:
91
+ only: /\d\.\d\.\d/
@@ -9,19 +9,6 @@ on:
9
9
  - cron: '30 0 * * 1'
10
10
 
11
11
  jobs:
12
- rubocop:
13
- runs-on: ubuntu-latest
14
-
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v2
18
- - name: Set up Ruby
19
- uses: ruby/setup-ruby@v1
20
- with:
21
- ruby-version: 2.5
22
- bundler-cache: true
23
- - name: Run rubocop
24
- run: bundle exec rubocop --parallel
25
12
 
26
13
  code-ql:
27
14
  name: Analyze
data/README.md CHANGED
@@ -110,6 +110,15 @@ db_settings['user'] # "app"
110
110
  db_params = db_settings.load('parameters') # SettingsReader::Reader
111
111
  ```
112
112
 
113
+ You can also check if sub-setting tree exists:
114
+
115
+ ```ruby
116
+ APP_SETTINGS.load('integrations/database').blank? # false
117
+ APP_SETTINGS.load('integrations/database').present? # true
118
+ APP_SETTINGS.load('integrations/unexisiting').blank? # true
119
+ APP_SETTINGS.load('integrations/unexisiting').present? # false
120
+ ```
121
+
113
122
  ## Advanced Configurations & Customization
114
123
 
115
124
  ### Backends
@@ -22,7 +22,10 @@ module SettingsReader
22
22
  def read_yml(path)
23
23
  return {} unless File.exist?(path)
24
24
 
25
- YAML.safe_load(IO.read(path))
25
+ data = YAML.safe_load(IO.read(path))
26
+ raise SettingsReader::Error, "YML Settings at #{path} file has incorrect structure" unless data.is_a?(Hash)
27
+
28
+ data
26
29
  rescue Psych::SyntaxError, Errno::ENOENT => e
27
30
  raise SettingsReader::Error, "Cannot read settings file at #{path}: #{e.message}"
28
31
  end
@@ -23,6 +23,14 @@ module SettingsReader
23
23
  SettingsReader::Reader.new(new_path, @config)
24
24
  end
25
25
 
26
+ def blank?
27
+ @backends.all? { |backend| backend.get(@base_path).nil? }
28
+ end
29
+
30
+ def present?
31
+ !blank?
32
+ end
33
+
26
34
  protected
27
35
 
28
36
  def check_deep_structure(value, path)
@@ -1,7 +1,7 @@
1
1
  module SettingsReader
2
2
  module Resolvers
3
3
  # Resolve values in environment variable
4
- class Env
4
+ class Env < SettingsReader::Resolvers::Abstract
5
5
  IDENTIFIER = 'env://'.freeze
6
6
 
7
7
  # Returns true when value starts from `env://`
@@ -1,7 +1,7 @@
1
1
  module SettingsReader
2
2
  module Resolvers
3
3
  # Run values through ERB
4
- class Erb
4
+ class Erb < SettingsReader::Resolvers::Abstract
5
5
  IDENTIFIER = /(<%=).*(%>)/.freeze
6
6
 
7
7
  # Returns true when value contain Erb template <%= code_is_here %>
@@ -1,3 +1,3 @@
1
1
  module SettingsReader
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: settings_reader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volodymyr Mykhailyk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-21 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codecov
@@ -103,8 +103,8 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
+ - ".circleci/config.yml"
106
107
  - ".github/workflows/linters.yml"
107
- - ".github/workflows/main.yml"
108
108
  - ".gitignore"
109
109
  - ".rspec"
110
110
  - ".rubocop.yml"
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  requirements: []
156
- rubygems_version: 3.1.6
156
+ rubygems_version: 3.1.3
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Flexible Settings reader with support of custom backends and value resolutions
@@ -1,66 +0,0 @@
1
- name: ci
2
- on:
3
- push:
4
- branches:
5
- - main
6
- pull_request:
7
- branches:
8
- - main
9
- release:
10
- types: [published]
11
-
12
- jobs:
13
- build:
14
- runs-on: ubuntu-latest
15
- strategy:
16
- matrix:
17
- ruby: [ '2.5', '2.6', '2.7', '3.0' ]
18
- steps:
19
- - name: Checkout
20
- uses: actions/checkout@v1
21
-
22
- - name: Set up Ruby
23
- uses: ruby/setup-ruby@v1
24
- with:
25
- ruby-version: ${{ matrix.ruby }}
26
- bundler-cache: true
27
-
28
- - name: Run specs
29
- env:
30
- COVERAGE: true
31
- run: bundle exec rspec
32
-
33
- - name: Upload coverage
34
- env:
35
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
36
- run: bash <(curl -s https://codecov.io/bash)
37
-
38
- release:
39
- runs-on: ubuntu-latest
40
- needs: build
41
- if: github.event_name == 'release' && github.event.action == 'published'
42
- steps:
43
- - name: Checkout
44
- uses: actions/checkout@v1
45
-
46
- - name: Set up Ruby
47
- uses: ruby/setup-ruby@v1
48
- with:
49
- ruby-version: 2.7
50
- bundler-cache: true
51
- - name: Set up credentials
52
- run: |
53
- mkdir -p $HOME/.gem
54
- touch $HOME/.gem/credentials
55
- chmod 0600 $HOME/.gem/credentials
56
- printf -- "---\n:rubygems_api_key: ${{secrets.RUBYGEMS_AUTH_TOKEN}}\n" > $HOME/.gem/credentials
57
-
58
- - name: Get version
59
- run: echo "${GITHUB_REF/refs\/tags\//}" > release.tag
60
- - name: Set version
61
- run: sed -i "s/0.0.0/$(<release.tag)/g" */**/version.rb
62
-
63
- - name: Build gem
64
- run: gem build *.gemspec
65
- - name: Push gem
66
- run: gem push *.gem