rb-konfig 0.1.1 → 0.1.6
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 +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/konfig.gemspec +1 -1
- data/lib/konfig.rb +10 -4
- data/lib/konfig/directory_provider.rb +0 -1
- data/lib/konfig/option.rb +7 -4
- data/lib/konfig/utils.rb +14 -2
- data/lib/konfig/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d856585bd2b6c9b421964eb757e4dbc60b8a1e4a033e817c91353da2b9c0cc7a
|
4
|
+
data.tar.gz: c924badaff2dc5a2140c9559b4ea97c573590404593c050be3ca32ed7d66a15c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d180c690f4d3747ce7da2aa8e459c0d8df4a3241ec3853c439bc70c0a69b8a6ddb15f65f137fc4724e1b993df25d36eb2ddc4dd653f957f8a465a2bbf0dc82d0
|
7
|
+
data.tar.gz: e3702b812b5eaa692db87f3eb737c4b77981410c448bc304828fc085249c8134db2aa0b1df6f90f19e73e00565efea3a7eec231fe2c2299cf5cb36f44ecbd869
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
2
2
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -84,6 +84,7 @@ You can change or reach the following from `Konfig.configuration`
|
|
84
84
|
* `mode`: No default value
|
85
85
|
* `workdir`: No default value
|
86
86
|
* `schema`: Configuration validation schema. If available, the loaded, merged and parsed configuration is validated against this schema. See [Dry-Schema](https://dry-rb.org/gems/dry-schema/) for more information.
|
87
|
+
* `fail_on_validation`: Fail if schema validation fails
|
87
88
|
|
88
89
|
### Data types
|
89
90
|
|
@@ -92,7 +93,6 @@ The directory mode, supports the following data types in files and tries to retu
|
|
92
93
|
- Integer
|
93
94
|
- Float
|
94
95
|
- String
|
95
|
-
- Date time
|
96
96
|
- Boolean
|
97
97
|
- JSON
|
98
98
|
- Null (see above)
|
data/konfig.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_dependency "activesupport", ">= 4"
|
28
28
|
spec.add_dependency "dry-schema", "~> 1.3"
|
29
|
-
spec.add_dependency "thor", "~> 0
|
29
|
+
spec.add_dependency "thor", "~> 1.0"
|
30
30
|
|
31
31
|
spec.add_development_dependency "bundler", "~> 2.0"
|
32
32
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/konfig.rb
CHANGED
@@ -22,6 +22,7 @@ module Konfig
|
|
22
22
|
attr_writer :workdir
|
23
23
|
attr_writer :env_prefix
|
24
24
|
attr_writer :logger
|
25
|
+
attr_writer :fail_on_validation
|
25
26
|
|
26
27
|
def namespace
|
27
28
|
@namespace || "Settings"
|
@@ -44,12 +45,13 @@ module Konfig
|
|
44
45
|
end
|
45
46
|
|
46
47
|
def logger
|
47
|
-
@logger if @logger
|
48
|
+
return @logger if @logger
|
48
49
|
if defined?(Rails) && Rails.logger
|
49
|
-
Rails.logger
|
50
|
+
@logger = Rails.logger
|
50
51
|
else
|
51
|
-
Logger.new(STDOUT)
|
52
|
+
@logger = Logger.new(STDOUT)
|
52
53
|
end
|
54
|
+
@logger
|
53
55
|
end
|
54
56
|
|
55
57
|
def schema=(value)
|
@@ -82,6 +84,10 @@ module Konfig
|
|
82
84
|
|
83
85
|
def nil_word
|
84
86
|
@nil_word || "null"
|
85
|
-
|
87
|
+
end
|
88
|
+
|
89
|
+
def fail_on_validation
|
90
|
+
@fail_on_validation.nil? ? true : @fail_on_validation
|
91
|
+
end
|
86
92
|
end
|
87
93
|
end
|
data/lib/konfig/option.rb
CHANGED
@@ -32,7 +32,11 @@ module Konfig
|
|
32
32
|
|
33
33
|
unless v_res.success?
|
34
34
|
error = Konfig::ValidationError.format(v_res)
|
35
|
-
|
35
|
+
if Konfig.configuration.fail_on_validation
|
36
|
+
raise Konfig::ValidationError.new("Config validation failed:\n\n#{error}")
|
37
|
+
else
|
38
|
+
Konfig.configuration.logger.error "Config validation failed:\n\n#{error}"
|
39
|
+
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
@@ -90,8 +94,7 @@ module Konfig
|
|
90
94
|
s = self.class.new
|
91
95
|
|
92
96
|
h.each do |k, v|
|
93
|
-
k = k.to_s if !k.respond_to?(:to_sym) && k.respond_to?(:to_s)
|
94
|
-
s.new_ostruct_member(k)
|
97
|
+
k = k.to_s if !k.respond_to?(:to_sym) && k.respond_to?(:to_s)
|
95
98
|
|
96
99
|
if v.is_a?(Hash)
|
97
100
|
v = v["type"] == "hash" ? v["contents"] : __convert(v)
|
@@ -99,7 +102,7 @@ module Konfig
|
|
99
102
|
v = v.collect { |e| e.instance_of?(Hash) ? __convert(e) : e }
|
100
103
|
end
|
101
104
|
|
102
|
-
s
|
105
|
+
s[k] = v
|
103
106
|
end
|
104
107
|
s
|
105
108
|
end
|
data/lib/konfig/utils.rb
CHANGED
@@ -10,9 +10,12 @@ module Konfig
|
|
10
10
|
lambda { |value| Integer(value) rescue NIL_VALUE }, # integer
|
11
11
|
lambda { |value| Float(value) rescue NIL_VALUE }, # float
|
12
12
|
lambda { |value| (["true", "false"].include?(value)) ? (value == "true") : NIL_VALUE }, # boolean
|
13
|
-
lambda { |value| DateTime.parse(value) rescue NIL_VALUE }, # date time
|
14
13
|
lambda { |value| (value == Konfig.configuration.nil_word && Konfig.configuration.allow_nil) ? nil : NIL_VALUE }, # nil value
|
15
14
|
lambda do |value|
|
15
|
+
value = value.strip
|
16
|
+
# on some platforms, JSON.parse returns value for integer and floats. This is incorrect https://www.json.org/
|
17
|
+
return NIL_VALUE if !value.start_with?("[") && !value.start_with?("{")
|
18
|
+
|
16
19
|
result = JSON.parse(value, { symbolize_names: true })
|
17
20
|
if result == nil && !Konfig.configuration.allow_nil
|
18
21
|
return NIL_VALUE
|
@@ -22,7 +25,10 @@ module Konfig
|
|
22
25
|
rescue
|
23
26
|
NIL_VALUE
|
24
27
|
end, # json
|
25
|
-
lambda
|
28
|
+
lambda do |value| # string. should always be the last one
|
29
|
+
# in case we have a string, clean it up. For example, quotes in strings should be escaped or will be removed
|
30
|
+
Konfig::Utils.remove_quotations(value)
|
31
|
+
end,
|
26
32
|
]
|
27
33
|
|
28
34
|
class Utils
|
@@ -36,5 +42,11 @@ module Konfig
|
|
36
42
|
|
37
43
|
raise UnsupportedValueType, "'#{value}' is unsupported type"
|
38
44
|
end
|
45
|
+
|
46
|
+
def self.remove_quotations(str)
|
47
|
+
str = str.slice(1..-1) if str.start_with?('"') || str.start_with?('\'')
|
48
|
+
str = str.slice(0..-2) if str.end_with?('"') || str.end_with?('\'')
|
49
|
+
return str
|
50
|
+
end
|
39
51
|
end
|
40
52
|
end
|
data/lib/konfig/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb-konfig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Khash Sajadi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '11.0'
|
167
|
-
description:
|
167
|
+
description:
|
168
168
|
email:
|
169
169
|
- hello@cloud66.com
|
170
170
|
executables:
|
@@ -204,7 +204,7 @@ licenses: []
|
|
204
204
|
metadata:
|
205
205
|
homepage_uri: https://github.com/cloud66-oss/konfig/
|
206
206
|
source_code_uri: https://github.com/cloud66-oss/konfig/
|
207
|
-
post_install_message:
|
207
|
+
post_install_message:
|
208
208
|
rdoc_options: []
|
209
209
|
require_paths:
|
210
210
|
- lib
|
@@ -219,9 +219,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
219
|
- !ruby/object:Gem::Version
|
220
220
|
version: '0'
|
221
221
|
requirements: []
|
222
|
-
|
223
|
-
|
224
|
-
signing_key:
|
222
|
+
rubygems_version: 3.2.3
|
223
|
+
signing_key:
|
225
224
|
specification_version: 4
|
226
225
|
summary: Konfig is a Kubernetes friendly Rails configuration gem
|
227
226
|
test_files: []
|