canfig 0.0.8 → 0.0.13

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: 28a747df13cf5c6c99fa96a201cb5f300b707a4642a63e5a65a943582a1fdde5
4
- data.tar.gz: c917be14d97451e7615943952729ce00cc03b322c62536249a9a5859c88c63d0
3
+ metadata.gz: 1a5e786da847f0b3b9f6c70578bcdb948f11d59bb7eab3a403ac7c4a900505a8
4
+ data.tar.gz: 21fa40cda7709f79b6604ea3f8883b84aa1f62f8e8b1bc3a73f5f415a5d4788a
5
5
  SHA512:
6
- metadata.gz: 4cf03ffeb05d41a42ef388d42013000cc62402befb390b1c188ac8a0acdda9c3e04fea5c63d47dd103258cedc5d36c9ce0d31ef14c079abbbd4842f4d5520589
7
- data.tar.gz: 006e3e970b3aec9905abaa038bfca1f470f8b80ce6f8f2c743a729ebbf956d3a08425708d9aa0b486da58b6ea44178c69219c860edf40226bd999606d771aa1d
6
+ metadata.gz: 2fa3db95500d7b55fe6ceedfda1fa3467b6a6bdf212af67f5fda28fb98155d1522a4dad858165d1d3b58695c083df212a533336646dd2dc5aaa9162a666067d0
7
+ data.tar.gz: a80a8e1010ee71fd2bdded9c3c661552be8f887eb8a051711204fee0539725f19f484f1e6610224f6b9ac5ad33b4c2ea997e2bca2b3778edcdac40ddd82c4562
@@ -5,6 +5,7 @@ require 'canfig/version'
5
5
  require 'canfig/yaml'
6
6
  require 'canfig/config'
7
7
  require 'canfig/open_config'
8
+ require 'canfig/env_config'
8
9
  require 'canfig/module'
9
10
  require 'canfig/class'
10
11
  require 'canfig/instance'
@@ -37,13 +37,16 @@ module Canfig
37
37
  end
38
38
 
39
39
  def env(key, default=nil, &block)
40
- val = ENV.fetch(key.to_s.underscore.upcase, default, &block)
41
- val && ENV.key?(val) ? env(val, default, &block) : val
40
+ @state[key] ||= begin
41
+ val = ENV.fetch(key.to_s.underscore.upcase, default, &block)
42
+ val = default if val.blank?
43
+ val && ENV.key?(val.to_s) ? env(val, default, &block) : val
44
+ end
42
45
  end
43
46
 
44
- def clear(key)
47
+ def clear(*keys)
45
48
  save_state! do
46
- @state[key] = nil
49
+ keys.each { |key| @state[key] = nil }
47
50
  end
48
51
  end
49
52
 
@@ -53,7 +56,7 @@ module Canfig
53
56
 
54
57
  def get(key, default=nil, &block)
55
58
  raise NoMethodError, "undefined method `#{key.to_s}' for #{self.to_s}" unless allowed?(key)
56
- @state[key] ||= env(key, default, &block)
59
+ @state[key] || (block_given? ? yield : default)
57
60
  end
58
61
 
59
62
  def [](key)
@@ -118,8 +121,7 @@ module Canfig
118
121
 
119
122
  protected
120
123
 
121
- def initialize(*args, &block)
122
- options = args.extract_options!
124
+ def initialize(*args, **options, &block)
123
125
  @allowed = (args.map(&:to_sym) + options.symbolize_keys.keys).uniq
124
126
  @state = {}
125
127
  enable_state_saves!
@@ -0,0 +1,32 @@
1
+ module Canfig
2
+ class EnvConfig < OpenConfig
3
+ attr_reader :namespace
4
+
5
+ def configure_with_args(argh)
6
+ save_state! do
7
+ argh.symbolize_keys.each { |key,val| env(key, val) }
8
+ end
9
+ end
10
+
11
+ def get(key, default=nil, &block)
12
+ super || env(key, default, &block)
13
+ end
14
+
15
+ def env(key, default=nil, &block)
16
+ @state[key.to_sym] ||= begin
17
+ key = key.to_s.underscore.upcase
18
+ key = key.gsub(/^#{namespace}/, '') if namespace
19
+ val = ENV.fetch("#{namespace}#{key}", default, &block)
20
+ val = default if val.blank?
21
+ val && ENV.key?(val.to_s) ? env(val, default, &block) : val
22
+ end
23
+ end
24
+
25
+ protected
26
+
27
+ def initialize(namespace=nil, **attributes, &block)
28
+ @namespace = namespace ? "#{namespace.to_s.underscore.upcase.gsub(/_$/, '')}_" : namespace
29
+ super(**attributes, &block)
30
+ end
31
+ end
32
+ end
@@ -1,8 +1,8 @@
1
1
  module Canfig
2
2
  class OpenConfig < Config
3
3
  def set(key, val)
4
- super(key, val)
5
4
  @allowed << key unless @allowed.include?(key)
5
+ super(key, val)
6
6
  end
7
7
 
8
8
  def allowed?(opt)
@@ -1,3 +1,3 @@
1
1
  module Canfig
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canfig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rebec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-30 00:00:00.000000000 Z
11
+ date: 2020-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -62,6 +62,7 @@ files:
62
62
  - lib/canfig.rb
63
63
  - lib/canfig/class.rb
64
64
  - lib/canfig/config.rb
65
+ - lib/canfig/env_config.rb
65
66
  - lib/canfig/instance.rb
66
67
  - lib/canfig/module.rb
67
68
  - lib/canfig/open_config.rb