qonfig 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -1
- data/.travis.yml +6 -6
- data/CHANGELOG.md +17 -0
- data/README.md +630 -49
- data/gemfiles/with_external_deps.gemfile +2 -2
- data/lib/qonfig/commands/{add_nested_option.rb → definition/add_nested_option.rb} +1 -1
- data/lib/qonfig/commands/{add_option.rb → definition/add_option.rb} +1 -1
- data/lib/qonfig/commands/{compose.rb → definition/compose.rb} +1 -1
- data/lib/qonfig/commands/{expose_json.rb → definition/expose_json.rb} +1 -1
- data/lib/qonfig/commands/{expose_self.rb → definition/expose_self.rb} +1 -1
- data/lib/qonfig/commands/{expose_yaml.rb → definition/expose_yaml.rb} +1 -1
- data/lib/qonfig/commands/definition/load_from_env/value_converter.rb +82 -0
- data/lib/qonfig/commands/{load_from_env.rb → definition/load_from_env.rb} +1 -1
- data/lib/qonfig/commands/{load_from_json.rb → definition/load_from_json.rb} +1 -1
- data/lib/qonfig/commands/{load_from_self.rb → definition/load_from_self.rb} +1 -1
- data/lib/qonfig/commands/{load_from_yaml.rb → definition/load_from_yaml.rb} +1 -1
- data/lib/qonfig/commands/definition.rb +16 -0
- data/lib/qonfig/commands/instantiation/values_file.rb +171 -0
- data/lib/qonfig/commands/instantiation.rb +7 -0
- data/lib/qonfig/commands.rb +2 -10
- data/lib/qonfig/data_set/lock.rb +61 -4
- data/lib/qonfig/data_set.rb +151 -3
- data/lib/qonfig/dsl.rb +56 -16
- data/lib/qonfig/errors.rb +38 -11
- data/lib/qonfig/loaders/dynamic.rb +52 -0
- data/lib/qonfig/loaders/json.rb +6 -0
- data/lib/qonfig/loaders/yaml.rb +13 -0
- data/lib/qonfig/loaders.rb +3 -0
- data/lib/qonfig/plugins/toml/data_set.rb +13 -0
- data/lib/qonfig/plugins/toml/dsl.rb +6 -2
- data/lib/qonfig/plugins/toml/errors.rb +12 -0
- data/lib/qonfig/plugins/toml/loaders/dynamic.rb +31 -0
- data/lib/qonfig/plugins/toml/loaders/toml.rb +6 -0
- data/lib/qonfig/plugins/toml.rb +2 -0
- data/lib/qonfig/settings/builder.rb +1 -1
- data/lib/qonfig/settings.rb +21 -0
- data/lib/qonfig/validator/basic.rb +9 -1
- data/lib/qonfig/validator/builder/attribute_consistency.rb +29 -0
- data/lib/qonfig/validator/builder.rb +39 -14
- data/lib/qonfig/validator/dsl.rb +9 -1
- data/lib/qonfig/validator/method_based.rb +4 -2
- data/lib/qonfig/validator/predefined/common.rb +4 -2
- data/lib/qonfig/validator/predefined/registry.rb +0 -2
- data/lib/qonfig/validator/predefined/registry_control_mixin.rb +3 -2
- data/lib/qonfig/validator/proc_based.rb +4 -2
- data/lib/qonfig/version.rb +1 -1
- data/qonfig.gemspec +1 -1
- metadata +21 -15
- data/lib/qonfig/commands/load_from_env/value_converter.rb +0 -84
data/lib/qonfig/settings.rb
CHANGED
@@ -272,6 +272,15 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
272
272
|
value.is_a?(Qonfig::Settings)
|
273
273
|
end
|
274
274
|
|
275
|
+
# @param key_path [Array<Symbol, String>]
|
276
|
+
# @return [Boolean]
|
277
|
+
#
|
278
|
+
# @api private
|
279
|
+
# @since 0.17.0
|
280
|
+
def __has_key__(*key_path)
|
281
|
+
__lock__.thread_safe_access { __is_key_exists__(*key_path) }
|
282
|
+
end
|
283
|
+
|
275
284
|
private
|
276
285
|
|
277
286
|
# @return [Qonfig::Settings::Lock]
|
@@ -280,6 +289,18 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
280
289
|
# @since 0.2.0
|
281
290
|
attr_reader :__lock__
|
282
291
|
|
292
|
+
# @param key_path [Array<String, Symbol>]
|
293
|
+
# @return [Boolean]
|
294
|
+
#
|
295
|
+
# @api private
|
296
|
+
# @since 0.17.0
|
297
|
+
def __is_key_exists__(*key_path)
|
298
|
+
__deep_access__(*key_path)
|
299
|
+
true
|
300
|
+
rescue Qonfig::UnknownSettingError
|
301
|
+
false
|
302
|
+
end
|
303
|
+
|
283
304
|
# @param block [Proc]
|
284
305
|
# @return [Enumerable]
|
285
306
|
#
|
@@ -9,13 +9,21 @@ class Qonfig::Validator::Basic
|
|
9
9
|
# @since 0.13.0
|
10
10
|
attr_reader :setting_key_matcher
|
11
11
|
|
12
|
+
# @return [Boolean]
|
13
|
+
#
|
14
|
+
# @api private
|
15
|
+
# @since 0.17.0
|
16
|
+
attr_reader :strict
|
17
|
+
|
12
18
|
# @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
|
19
|
+
# @param strict [Boolean]
|
13
20
|
# @return [void]
|
14
21
|
#
|
15
22
|
# @api private
|
16
23
|
# @since 0.13.0
|
17
|
-
def initialize(setting_key_matcher)
|
24
|
+
def initialize(setting_key_matcher, strict)
|
18
25
|
@setting_key_matcher = setting_key_matcher
|
26
|
+
@strict = strict
|
19
27
|
end
|
20
28
|
|
21
29
|
# @param data_set [Qonfig::DataSet]
|
@@ -2,11 +2,13 @@
|
|
2
2
|
|
3
3
|
# @api private
|
4
4
|
# @since 0.13.0
|
5
|
+
# rubocop:disable Metrics/ClassLength
|
5
6
|
class Qonfig::Validator::Builder::AttributeConsistency
|
6
7
|
class << self
|
7
8
|
# @param setting_key_pattern [String, Symbol, NilClass]
|
8
9
|
# @param predefined_validator [String, Symbol, NilClass]
|
9
10
|
# @param runtime_validation_method [String, Symbol, NilClass]
|
11
|
+
# @param strict [Boolean]
|
10
12
|
# @param validation_logic [Proc, NilClass]
|
11
13
|
# @return [void]
|
12
14
|
#
|
@@ -16,12 +18,14 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
16
18
|
setting_key_pattern,
|
17
19
|
predefined_validator,
|
18
20
|
runtime_validation_method,
|
21
|
+
strict,
|
19
22
|
validation_logic
|
20
23
|
)
|
21
24
|
new(
|
22
25
|
setting_key_pattern,
|
23
26
|
predefined_validator,
|
24
27
|
runtime_validation_method,
|
28
|
+
strict,
|
25
29
|
validation_logic
|
26
30
|
).check!
|
27
31
|
end
|
@@ -39,11 +43,13 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
39
43
|
setting_key_pattern,
|
40
44
|
predefined_validator,
|
41
45
|
runtime_validation_method,
|
46
|
+
strict,
|
42
47
|
validation_logic
|
43
48
|
)
|
44
49
|
@setting_key_pattern = setting_key_pattern
|
45
50
|
@predefined_validator = predefined_validator
|
46
51
|
@runtime_validation_method = runtime_validation_method
|
52
|
+
@strict = strict
|
47
53
|
@validation_logic = validation_logic
|
48
54
|
end
|
49
55
|
|
@@ -54,6 +60,7 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
54
60
|
# @api private
|
55
61
|
# @since 0.13.0
|
56
62
|
def check!
|
63
|
+
consistent_strict_behaviour!
|
57
64
|
consistent_method_choice!
|
58
65
|
consistent_predefined_validator!
|
59
66
|
cosnistent_runtime_validation_method!
|
@@ -81,6 +88,12 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
81
88
|
# @since 0.13.0
|
82
89
|
attr_reader :runtime_validation_method
|
83
90
|
|
91
|
+
# @return [Boolean]
|
92
|
+
#
|
93
|
+
# @api private
|
94
|
+
# @since 0.17.0
|
95
|
+
attr_reader :strict
|
96
|
+
|
84
97
|
# @return [Proc, NilClass]
|
85
98
|
#
|
86
99
|
# @api private
|
@@ -110,6 +123,21 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
110
123
|
end
|
111
124
|
end
|
112
125
|
|
126
|
+
# @return [void]
|
127
|
+
#
|
128
|
+
# @raise [Qonfig::ValidatorArgumentError]
|
129
|
+
#
|
130
|
+
# @api private
|
131
|
+
# @since 0.17.0
|
132
|
+
def consistent_strict_behaviour!
|
133
|
+
unless strict.is_a?(TrueClass) || strict.is_a?(FalseClass)
|
134
|
+
raise(
|
135
|
+
Qonfig::ValidatorArgumentError,
|
136
|
+
':strict should be a boolean'
|
137
|
+
)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
113
141
|
# @return [void]
|
114
142
|
#
|
115
143
|
# @raise [Qonfig::ValidatorArgumentError]
|
@@ -179,3 +207,4 @@ class Qonfig::Validator::Builder::AttributeConsistency
|
|
179
207
|
)
|
180
208
|
end
|
181
209
|
end
|
210
|
+
# rubocop:enable Metrics/ClassLength
|
@@ -29,11 +29,18 @@ class Qonfig::Validator::Builder
|
|
29
29
|
# @since 0.13.0
|
30
30
|
NO_PREDEFINED_VALIDATOR = nil
|
31
31
|
|
32
|
+
# @return [Boolean]
|
33
|
+
#
|
34
|
+
# @api private
|
35
|
+
# @since 0.17.0
|
36
|
+
DEFAULT_STRICT_BEHAVIOUR = false
|
37
|
+
|
32
38
|
class << self
|
33
39
|
# @option setting_key_pattern [String, Symbol, NilClass]
|
34
40
|
# @option predefined_validator [String, Symbol, NilClass]
|
35
41
|
# @option runtime_validation_method [String, Symbol, NilClass]
|
36
42
|
# @option validation_logic [Proc, NilClass]
|
43
|
+
# @option strict [Boolean]
|
37
44
|
# @return [Qonfig::Validator::MethodBased, Qonfig::Validator::ProcBased]
|
38
45
|
#
|
39
46
|
# @api private
|
@@ -42,20 +49,23 @@ class Qonfig::Validator::Builder
|
|
42
49
|
setting_key_pattern: EMPTY_SETTING_KEY_PATTERN,
|
43
50
|
runtime_validation_method: NO_RUNTIME_VALIDATION_METHOD,
|
44
51
|
validation_logic: NO_VALIDATION_LOGIC,
|
52
|
+
strict: DEFAULT_STRICT_BEHAVIOUR,
|
45
53
|
predefined_validator: NO_PREDEFINED_VALIDATOR
|
46
54
|
)
|
47
55
|
new(
|
48
56
|
setting_key_pattern,
|
49
57
|
predefined_validator,
|
50
58
|
runtime_validation_method,
|
59
|
+
strict,
|
51
60
|
validation_logic
|
52
61
|
).build
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
56
65
|
# @param setting_key_pattern [String, Symbol, NilClass]
|
57
|
-
# @param
|
66
|
+
# @param predefined_validator_name [String, Symbol, NilClass]
|
58
67
|
# @param runtime_validation_method [String, Symbol, NilClass]
|
68
|
+
# @param strict [Boolean]
|
59
69
|
# @param validation_logic [Proc, NilClass]
|
60
70
|
# @return [void]
|
61
71
|
#
|
@@ -63,13 +73,15 @@ class Qonfig::Validator::Builder
|
|
63
73
|
# @since 0.13.0
|
64
74
|
def initialize(
|
65
75
|
setting_key_pattern,
|
66
|
-
|
76
|
+
predefined_validator_name,
|
67
77
|
runtime_validation_method,
|
78
|
+
strict,
|
68
79
|
validation_logic
|
69
80
|
)
|
70
81
|
@setting_key_pattern = setting_key_pattern
|
71
|
-
@
|
82
|
+
@predefined_validator_name = predefined_validator_name
|
72
83
|
@runtime_validation_method = runtime_validation_method
|
84
|
+
@strict = strict
|
73
85
|
@validation_logic = validation_logic
|
74
86
|
end
|
75
87
|
|
@@ -94,7 +106,7 @@ class Qonfig::Validator::Builder
|
|
94
106
|
#
|
95
107
|
# @api private
|
96
108
|
# @since 0.13.0
|
97
|
-
attr_reader :
|
109
|
+
attr_reader :predefined_validator_name
|
98
110
|
|
99
111
|
# @return [String, Symbol, NilClass]
|
100
112
|
#
|
@@ -102,6 +114,12 @@ class Qonfig::Validator::Builder
|
|
102
114
|
# @since 0.13.0
|
103
115
|
attr_reader :runtime_validation_method
|
104
116
|
|
117
|
+
# @return [Boolean]
|
118
|
+
#
|
119
|
+
# @api private
|
120
|
+
# @since 0.17.0
|
121
|
+
attr_reader :strict
|
122
|
+
|
105
123
|
# @return [Proc, NilClass]
|
106
124
|
#
|
107
125
|
# @api private
|
@@ -117,8 +135,9 @@ class Qonfig::Validator::Builder
|
|
117
135
|
def validate_attributes!
|
118
136
|
AttributeConsistency.check!(
|
119
137
|
setting_key_pattern,
|
120
|
-
|
138
|
+
predefined_validator_name,
|
121
139
|
runtime_validation_method,
|
140
|
+
strict,
|
122
141
|
validation_logic
|
123
142
|
)
|
124
143
|
end
|
@@ -129,9 +148,9 @@ class Qonfig::Validator::Builder
|
|
129
148
|
# @since 0.13.0
|
130
149
|
def build_validator
|
131
150
|
case
|
132
|
-
when
|
133
|
-
when runtime_validation_method then
|
134
|
-
when validation_logic then
|
151
|
+
when predefined_validator_name then build_predefined_validator
|
152
|
+
when runtime_validation_method then build_method_based_validator
|
153
|
+
when validation_logic then build_proc_based_validator
|
135
154
|
end
|
136
155
|
end
|
137
156
|
|
@@ -147,23 +166,29 @@ class Qonfig::Validator::Builder
|
|
147
166
|
#
|
148
167
|
# @api private
|
149
168
|
# @since 0.13.0
|
150
|
-
def
|
151
|
-
Qonfig::Validator::MethodBased.new(
|
169
|
+
def build_method_based_validator
|
170
|
+
Qonfig::Validator::MethodBased.new(
|
171
|
+
build_setting_key_matcher, strict, runtime_validation_method
|
172
|
+
)
|
152
173
|
end
|
153
174
|
|
154
175
|
# @return [Qonfig::Validator::ProcBased]
|
155
176
|
#
|
156
177
|
# @api private
|
157
178
|
# @since 0.13.0
|
158
|
-
def
|
159
|
-
Qonfig::Validator::ProcBased.new(
|
179
|
+
def build_proc_based_validator
|
180
|
+
Qonfig::Validator::ProcBased.new(
|
181
|
+
build_setting_key_matcher, strict, validation_logic
|
182
|
+
)
|
160
183
|
end
|
161
184
|
|
162
185
|
# @return [Qonfig::Settings::Predefined]
|
163
186
|
#
|
164
187
|
# @api private
|
165
188
|
# @since 0.13.0
|
166
|
-
def
|
167
|
-
Qonfig::Validator::Predefined.build(
|
189
|
+
def build_predefined_validator
|
190
|
+
Qonfig::Validator::Predefined.build(
|
191
|
+
predefined_validator_name, build_setting_key_matcher, strict
|
192
|
+
)
|
168
193
|
end
|
169
194
|
end
|
data/lib/qonfig/validator/dsl.rb
CHANGED
@@ -33,6 +33,7 @@ module Qonfig::Validator::DSL
|
|
33
33
|
# @param setting_key_pattern [String, Symbol, NilClass]
|
34
34
|
# @param predefined [String, Symbol]
|
35
35
|
# @option by [String, Symbol, NilClass]
|
36
|
+
# @option stict [Boolean]
|
36
37
|
# @param custom_validation [Proc]
|
37
38
|
# @return [void]
|
38
39
|
#
|
@@ -40,11 +41,18 @@ module Qonfig::Validator::DSL
|
|
40
41
|
#
|
41
42
|
# @api private
|
42
43
|
# @since 0.13.0
|
43
|
-
def validate(
|
44
|
+
def validate(
|
45
|
+
setting_key_pattern = nil,
|
46
|
+
predefined = nil,
|
47
|
+
strict: false,
|
48
|
+
by: nil,
|
49
|
+
&custom_validation
|
50
|
+
)
|
44
51
|
validators << Qonfig::Validator::Builder.build(
|
45
52
|
setting_key_pattern: setting_key_pattern,
|
46
53
|
predefined_validator: predefined,
|
47
54
|
runtime_validation_method: by,
|
55
|
+
strict: strict,
|
48
56
|
validation_logic: custom_validation
|
49
57
|
)
|
50
58
|
end
|
@@ -10,13 +10,14 @@ class Qonfig::Validator::MethodBased < Qonfig::Validator::Basic
|
|
10
10
|
attr_reader :runtime_validation_method
|
11
11
|
|
12
12
|
# @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
|
13
|
+
# @param strict [Boolean]
|
13
14
|
# @param runtime_validation_method [String, Symbol]
|
14
15
|
# @return [void]
|
15
16
|
#
|
16
17
|
# @api private
|
17
18
|
# @since 0.13.0
|
18
|
-
def initialize(setting_key_matcher, runtime_validation_method)
|
19
|
-
super(setting_key_matcher)
|
19
|
+
def initialize(setting_key_matcher, strict, runtime_validation_method)
|
20
|
+
super(setting_key_matcher, strict)
|
20
21
|
@runtime_validation_method = runtime_validation_method
|
21
22
|
end
|
22
23
|
|
@@ -28,6 +29,7 @@ class Qonfig::Validator::MethodBased < Qonfig::Validator::Basic
|
|
28
29
|
def validate_concrete(data_set)
|
29
30
|
data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
|
30
31
|
next unless setting_key_matcher.match?(setting_key)
|
32
|
+
next if !strict && setting_value.nil?
|
31
33
|
|
32
34
|
raise(
|
33
35
|
Qonfig::ValidationError,
|
@@ -10,13 +10,14 @@ class Qonfig::Validator::Predefined::Common < Qonfig::Validator::Basic
|
|
10
10
|
attr_reader :validation
|
11
11
|
|
12
12
|
# @param setting_key_matcher [Qonfig::Settings::KeyMatcher]
|
13
|
+
# @param strict [Boolean]
|
13
14
|
# @param validation [Proc]
|
14
15
|
# @return [void]
|
15
16
|
#
|
16
17
|
# @api private
|
17
18
|
# @since 0.13.0
|
18
|
-
def initialize(setting_key_matcher, validation)
|
19
|
-
super(setting_key_matcher)
|
19
|
+
def initialize(setting_key_matcher, strict, validation)
|
20
|
+
super(setting_key_matcher, strict)
|
20
21
|
@validation = validation
|
21
22
|
end
|
22
23
|
|
@@ -30,6 +31,7 @@ class Qonfig::Validator::Predefined::Common < Qonfig::Validator::Basic
|
|
30
31
|
def validate_concrete(data_set)
|
31
32
|
data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
|
32
33
|
next unless setting_key_matcher.match?(setting_key)
|
34
|
+
next if !strict && setting_value.nil?
|
33
35
|
|
34
36
|
raise(
|
35
37
|
Qonfig::ValidationError,
|
@@ -42,7 +42,6 @@ class Qonfig::Validator::Predefined::Registry
|
|
42
42
|
# @since 0.13.0
|
43
43
|
def resolve(name)
|
44
44
|
thread_safe do
|
45
|
-
# rubocop:disable Style/RedundantBegin
|
46
45
|
begin
|
47
46
|
validators.fetch(indifferently_accessable_name(name))
|
48
47
|
rescue KeyError
|
@@ -51,7 +50,6 @@ class Qonfig::Validator::Predefined::Registry
|
|
51
50
|
"Predefined validator with name '#{name}' does not exist."
|
52
51
|
)
|
53
52
|
end
|
54
|
-
# rubocop:enable Style/RedundantBegin
|
55
53
|
end
|
56
54
|
end
|
57
55
|
|
@@ -32,12 +32,13 @@ module Qonfig::Validator::Predefined::RegistryControlMixin
|
|
32
32
|
|
33
33
|
# @param name [String, Symbol]
|
34
34
|
# @param setting_key_matcher [Qonfig::Setting::KeyMatcher]
|
35
|
+
# @param strict [Boolean]
|
35
36
|
# @return [Qonfig::Validator::Predefined::Common]
|
36
37
|
#
|
37
38
|
# @api private
|
38
39
|
# @since 0.13.0
|
39
|
-
def build(name, setting_key_matcher)
|
40
|
+
def build(name, setting_key_matcher, strict)
|
40
41
|
validation = registry.resolve(name)
|
41
|
-
Qonfig::Validator::Predefined::Common.new(setting_key_matcher, validation)
|
42
|
+
Qonfig::Validator::Predefined::Common.new(setting_key_matcher, strict, validation)
|
42
43
|
end
|
43
44
|
end
|
@@ -10,13 +10,14 @@ class Qonfig::Validator::ProcBased < Qonfig::Validator::Basic
|
|
10
10
|
attr_reader :validation
|
11
11
|
|
12
12
|
# @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
|
13
|
+
# @param strict [Boolean]
|
13
14
|
# @param vaidation [Proc]
|
14
15
|
# @return [void]
|
15
16
|
#
|
16
17
|
# @api private
|
17
18
|
# @since 0.13.0
|
18
|
-
def initialize(setting_key_matcher, validation)
|
19
|
-
super(setting_key_matcher)
|
19
|
+
def initialize(setting_key_matcher, strict, validation)
|
20
|
+
super(setting_key_matcher, strict)
|
20
21
|
@validation = validation
|
21
22
|
end
|
22
23
|
|
@@ -30,6 +31,7 @@ class Qonfig::Validator::ProcBased < Qonfig::Validator::Basic
|
|
30
31
|
def validate_concrete(data_set)
|
31
32
|
data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
|
32
33
|
next unless setting_key_matcher.match?(setting_key)
|
34
|
+
next if !strict && setting_value.nil?
|
33
35
|
|
34
36
|
raise(
|
35
37
|
Qonfig::ValidationError,
|
data/lib/qonfig/version.rb
CHANGED
data/qonfig.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'coveralls', '~> 0.8'
|
33
33
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
34
34
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
35
|
-
spec.add_development_dependency 'armitage-rubocop', '~> 0.
|
35
|
+
spec.add_development_dependency 'armitage-rubocop', '~> 0.76'
|
36
36
|
|
37
37
|
spec.add_development_dependency 'bundler'
|
38
38
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qonfig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rustam Ibragimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coveralls
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.76'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.76'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,18 +137,21 @@ files:
|
|
137
137
|
- lib/qonfig.rb
|
138
138
|
- lib/qonfig/command_set.rb
|
139
139
|
- lib/qonfig/commands.rb
|
140
|
-
- lib/qonfig/commands/add_nested_option.rb
|
141
|
-
- lib/qonfig/commands/add_option.rb
|
142
140
|
- lib/qonfig/commands/base.rb
|
143
|
-
- lib/qonfig/commands/
|
144
|
-
- lib/qonfig/commands/
|
145
|
-
- lib/qonfig/commands/
|
146
|
-
- lib/qonfig/commands/
|
147
|
-
- lib/qonfig/commands/
|
148
|
-
- lib/qonfig/commands/
|
149
|
-
- lib/qonfig/commands/
|
150
|
-
- lib/qonfig/commands/
|
151
|
-
- lib/qonfig/commands/
|
141
|
+
- lib/qonfig/commands/definition.rb
|
142
|
+
- lib/qonfig/commands/definition/add_nested_option.rb
|
143
|
+
- lib/qonfig/commands/definition/add_option.rb
|
144
|
+
- lib/qonfig/commands/definition/compose.rb
|
145
|
+
- lib/qonfig/commands/definition/expose_json.rb
|
146
|
+
- lib/qonfig/commands/definition/expose_self.rb
|
147
|
+
- lib/qonfig/commands/definition/expose_yaml.rb
|
148
|
+
- lib/qonfig/commands/definition/load_from_env.rb
|
149
|
+
- lib/qonfig/commands/definition/load_from_env/value_converter.rb
|
150
|
+
- lib/qonfig/commands/definition/load_from_json.rb
|
151
|
+
- lib/qonfig/commands/definition/load_from_self.rb
|
152
|
+
- lib/qonfig/commands/definition/load_from_yaml.rb
|
153
|
+
- lib/qonfig/commands/instantiation.rb
|
154
|
+
- lib/qonfig/commands/instantiation/values_file.rb
|
152
155
|
- lib/qonfig/configurable.rb
|
153
156
|
- lib/qonfig/data_set.rb
|
154
157
|
- lib/qonfig/data_set/class_builder.rb
|
@@ -157,6 +160,7 @@ files:
|
|
157
160
|
- lib/qonfig/errors.rb
|
158
161
|
- lib/qonfig/loaders.rb
|
159
162
|
- lib/qonfig/loaders/basic.rb
|
163
|
+
- lib/qonfig/loaders/dynamic.rb
|
160
164
|
- lib/qonfig/loaders/end_data.rb
|
161
165
|
- lib/qonfig/loaders/json.rb
|
162
166
|
- lib/qonfig/loaders/yaml.rb
|
@@ -169,7 +173,9 @@ files:
|
|
169
173
|
- lib/qonfig/plugins/toml/commands/load_from_toml.rb
|
170
174
|
- lib/qonfig/plugins/toml/data_set.rb
|
171
175
|
- lib/qonfig/plugins/toml/dsl.rb
|
176
|
+
- lib/qonfig/plugins/toml/errors.rb
|
172
177
|
- lib/qonfig/plugins/toml/loaders.rb
|
178
|
+
- lib/qonfig/plugins/toml/loaders/dynamic.rb
|
173
179
|
- lib/qonfig/plugins/toml/loaders/toml.rb
|
174
180
|
- lib/qonfig/plugins/toml/tomlrb_fixes.rb
|
175
181
|
- lib/qonfig/plugins/toml/uploaders/toml.rb
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Qonfig
|
4
|
-
# @api private
|
5
|
-
# @since 0.2.0
|
6
|
-
module Commands::LoadFromENV::ValueConverter
|
7
|
-
# @return [Regexp]
|
8
|
-
#
|
9
|
-
# @api private
|
10
|
-
# @since 0.2.0
|
11
|
-
INTEGER_PATTERN = /\A\d+\z/.freeze
|
12
|
-
|
13
|
-
# @return [Regexp]
|
14
|
-
#
|
15
|
-
# @api private
|
16
|
-
# @since 0.2.0
|
17
|
-
FLOAT_PATTERN = /\A\d+\.\d+\z/.freeze
|
18
|
-
|
19
|
-
# @return [Regexp]
|
20
|
-
#
|
21
|
-
# @api private
|
22
|
-
# @since 0.2.0
|
23
|
-
TRUE_PATTERN = /\A(t|true)\z/i.freeze
|
24
|
-
|
25
|
-
# @return [Regexp]
|
26
|
-
#
|
27
|
-
# @api private
|
28
|
-
# @since 0.2.0
|
29
|
-
FALSE_PATTERN = /\A(f|false)\z/i.freeze
|
30
|
-
|
31
|
-
# @return [Regexp]
|
32
|
-
#
|
33
|
-
# @api private
|
34
|
-
# @since 0.2.0
|
35
|
-
ARRAY_PATTERN = /\A[^'"].*\s*,\s*.*[^'"]\z/.freeze
|
36
|
-
|
37
|
-
# @return [Regexp]
|
38
|
-
#
|
39
|
-
# @api private
|
40
|
-
# @since 0.2.0
|
41
|
-
QUOTED_STRING_PATTERN = /\A['"].*['"]\z/.freeze
|
42
|
-
|
43
|
-
class << self
|
44
|
-
# @param env_data [Hash]
|
45
|
-
# @return [void]
|
46
|
-
#
|
47
|
-
# @api private
|
48
|
-
# @since 0.2.0
|
49
|
-
def convert_values!(env_data)
|
50
|
-
env_data.each_pair do |key, value|
|
51
|
-
env_data[key] = convert_value(value)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
# @param value [Object]
|
58
|
-
# @return [Object]
|
59
|
-
#
|
60
|
-
# @api private
|
61
|
-
# @since 0.2.0
|
62
|
-
def convert_value(value)
|
63
|
-
return value unless value.is_a?(String)
|
64
|
-
|
65
|
-
case value
|
66
|
-
when INTEGER_PATTERN
|
67
|
-
Integer(value)
|
68
|
-
when FLOAT_PATTERN
|
69
|
-
Float(value)
|
70
|
-
when TRUE_PATTERN
|
71
|
-
true
|
72
|
-
when FALSE_PATTERN
|
73
|
-
false
|
74
|
-
when ARRAY_PATTERN
|
75
|
-
value.split(/\s*,\s*/).map(&method(:convert_value))
|
76
|
-
when QUOTED_STRING_PATTERN
|
77
|
-
value.gsub(/(\A['"]|['"]\z)/, '')
|
78
|
-
else
|
79
|
-
value
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|