Closed anujsrc closed 7 years ago
If I define a top level default
for nested ones, it does list but it is slightly confusing for me in case of the position of default
values in both nested
and other case. Here is what works for me for nested booleans-
user> (omniconf.core/define {:conf1 {:default {:c3 false} :nested {:c1 {:type :number :default 0} :c2 {:type :string :default "c2"} :c3 {:type :boolean :default false}}}})
nil
user> (omniconf.core/verify)
Omniconf configuration:
{:conf1 {:c3 false, :c1 0, :c2 "c2"}}
nil
Yeah, that's probably a bug. However, it might be argued that setting a boolean parameter ("a flag") is the same as not setting it at all. But there's no harm in fixing this.
Yes, agree. Here is the case where I find it relevant-
true
false
from our component side, by default and we are reading the configuration of our component via Omniconf
Regarding:
(is (= {:first "alpha", :more {:two "two"}, :second 70} (cfg/get :nested-option)))
This is because --nested-option.more {}
is in the test. It erases all defaults.
I deployed this fix as 0.2.6
. Hope this helps!
Thanks @alexander-yakushev. Pulled in 0.2.6
. Works like a charm :+1:
false
false
must be returned if it is not set for the configuration param explicitly.Clarification
On the similar lines, why is the check on this line- https://github.com/grammarly/omniconf/blob/master/test/omniconf/t_core.clj#L81 not listing the default value of
:one
?