qonfig 0.16.0 → 0.17.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 +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
|