easy-settings 1.3.1 → 1.4.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
2
  SHA256:
3
- metadata.gz: 742f94a5ea13b5a42e8e652f6b241880977efacf37b464da912c39ea28a11bec
4
- data.tar.gz: 4ff117b32d32b3a180767cafbd106f4df0d5dbc69aa00183647e16f5a5e723d9
3
+ metadata.gz: eca42efdc829b39b03037a8b7766c5d756ed17062184cd462293e08f76c61943
4
+ data.tar.gz: 677f4d8c4873063f8d4a438dbf5b9239f0bfb845417616f7853df1a7cd7b202c
5
5
  SHA512:
6
- metadata.gz: 3eda64f580f75b8ea81f79cae2b17e7bba85874f203a7b11a03dc9ae7231887ed4e21083624906c2174b0585e449d7d9d260701dce88de493bade556e6e31843
7
- data.tar.gz: 7fc6687b0cd39502b95dd026a4b3429dec813bcbedc0e15b3ef9544239664d97508d4ebc1a25a3404640316ff8617eebdffc466250d42b126f2cc7b8e878f2c4
6
+ metadata.gz: a60e3c7d5f4d0a5d9a4bb5cf3e5676e7d53f51d6fc32976451af1ba11144ccf3bf56f5a9989926642deeeda7fb536b6b30fef5ad1d4f065a5ce19ee65ac5d36c
7
+ data.tar.gz: ed13427d253fe06a620c748db20bc37f5b44ed81205fa711df30709727bea9eb40fa0d5ef4b8a91d578affa74e979860208701034fbab09a450f4463ef856849
data/lib/easy-settings.rb CHANGED
@@ -5,6 +5,7 @@ require "easy-settings/version"
5
5
  require "easy-settings/struct"
6
6
  require "easy-settings/env_source"
7
7
  require "easy-settings/path_source"
8
+ require "easy-settings/certificate_manager_source"
8
9
  require "easy-settings/yaml_source"
9
10
 
10
11
  class EasySettings
@@ -0,0 +1,33 @@
1
+ require "easy-settings/coercion"
2
+
3
+ class EasySettings::CertificateManagerSource < EasySettings::PathSource
4
+ def initialize(base_path, settings_root: ["certificates"], separator: "__", converter: :downcase)
5
+ super(base_path, settings_root: settings_root, separator: separator, converter: converter, parse_values: false)
6
+ end
7
+
8
+ def load
9
+ {}.tap do |data|
10
+ Dir["#{base_path}/*"].each do |path|
11
+ next unless File.directory?(path)
12
+ next unless valid_folder?(path)
13
+
14
+ variable = path.gsub("#{base_path}/", "")
15
+ keys = settings_root + variable.to_s.split(separator)
16
+
17
+ filenames.each do |filename, key|
18
+ value = File.read("#{path}/#{filename}").strip
19
+ assign_value(data, keys + [key], value)
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def valid_folder?(path)
26
+ # ensure the folder contains all the files we expect
27
+ (filenames.keys - Dir["#{path}/*"].map{ |path| File.basename(path) }).none?
28
+ end
29
+
30
+ def filenames
31
+ {"ca.crt" => "ca", "tls.crt" => "crt", "tls.key" => "key"}
32
+ end
33
+ end
@@ -1,10 +1,11 @@
1
1
  require "easy-settings/coercion"
2
2
 
3
3
  class EasySettings::PathSource
4
- attr_reader :base_path, :separator, :converter, :parse_values
4
+ attr_reader :base_path, :settings_root, :separator, :converter, :parse_values
5
5
 
6
- def initialize(base_path, separator: "__", converter: :downcase, parse_values: true)
6
+ def initialize(base_path, settings_root: [], separator: "__", converter: :downcase, parse_values: true)
7
7
  @base_path = base_path.to_s
8
+ @settings_root = settings_root
8
9
  @separator = separator
9
10
  @converter = converter
10
11
  @parse_values = parse_values
@@ -16,9 +17,8 @@ class EasySettings::PathSource
16
17
  next unless File.file?(path)
17
18
 
18
19
  variable = path.gsub("#{base_path}/", "")
20
+ keys = settings_root + variable.to_s.split(separator)
19
21
  value = File.read(path).strip
20
-
21
- keys = variable.to_s.split(separator)
22
22
  assign_value(data, keys, value)
23
23
  end
24
24
  end
@@ -1,3 +1,3 @@
1
1
  class EasySettings
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corin Langosch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-11 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -68,6 +68,7 @@ files:
68
68
  - docker-compose.yml
69
69
  - easy-settings.gemspec
70
70
  - lib/easy-settings.rb
71
+ - lib/easy-settings/certificate_manager_source.rb
71
72
  - lib/easy-settings/coercion.rb
72
73
  - lib/easy-settings/env_source.rb
73
74
  - lib/easy-settings/path_source.rb