cuke_fig 0.0.2 → 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/cuke_fig.rb +44 -48
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODM2OTFmNjk2ZTU4NTgxZWVmODQ5NDVkODdlOGM0YTM4ZTc5NzBiYQ==
4
+ YTViNjVkNDA5ODI1MzJlMTU2ZWNkYjc4NTY3M2UzMDJjZmJjZWJlNg==
5
5
  data.tar.gz: !binary |-
6
- MTgwN2I4YzFjNWMzNGIyYjk2YmJjNmMwNTQ1MjYzMTQwZjk3OWI5Nw==
6
+ YWRhOGI5YWU5YTEzZDQ1OWRkMjg1ZmE1ZjNlY2YwZWE2MTZjYTQ2Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MGYyN2JhY2M3MDQyYWYyZjgyNTNkNzc4NWY1ZTI2MGFjNzVlODJhM2UzYmJh
10
- ZDdmZmM4YWIwNmFkOTU2OWRmOTg4MTNmYTBlNmRjYTQ1MTcxZTExMDNjZjAz
11
- Y2M2MjIxZGFjN2NmZTlkMGE2ZmEzNDEwNzY5MWMyMzcyYWEzNjI=
9
+ MWVkZTE0NDE4NzRlN2FhZjQwNjUzY2ZmZjkyZjM1YjQwN2NjYjI3MDg1NTg2
10
+ NWNiNjBjMjhhNzcxYzNhNzdmN2NmYjA4MzFjZTEwMDUxZWMzMjkwYmQ1NTg0
11
+ OGE5NDAxZmVkNGE2MDJkYjAyZTYwZTIyMjQ1Yjk2MGUwZDgwNzU=
12
12
  data.tar.gz: !binary |-
13
- NzVlYmNiZDkxZWZkMTA5MzU0NWI5ZGIyOTUzZWI1ZGNiMzI1ZTJkYjNkZTA2
14
- YzlhYThhOWJmMmYyYWNiOWVhYzUxNTRiZTFjOTU0ZGU4ZWZiYjEwYmM0YmRk
15
- YjJlNmYwNTBhZmYxM2NmZmUzNjE2N2FhZjA4ZTYxMTVlODEyYTE=
13
+ ODVmYTg0NzcyYTRhYjViNzBiN2E4ZmUzYTAyNDMzMGUwZjRiODdhNzlmMGJm
14
+ YzhhYzQzNzU1YjNjMzhhMThlZDAyMTc4ZDk1NjhhNmE2ZTc5ODZjYmQ2MzQy
15
+ YmVjNzBlOGRiMDc3MzY0ZTdhNzIyNGJkZmQ5NGEwYWE1MWY1ZmU=
data/lib/cuke_fig.rb CHANGED
@@ -1,48 +1,49 @@
1
+ require "yaml"
2
+ require "ostruct"
1
3
 
2
- module CukeFig
3
- class Config
4
- attr_reader :global_config, :methods
4
+ class Object
5
+ def to_openstruct
6
+ self
7
+ end
8
+ end
5
9
 
6
- def self.get
7
- @global_config ||= Config.new
8
- end
10
+ class Array
11
+ def to_openstruct
12
+ map{ |el| el.to_openstruct }
13
+ end
14
+ end
9
15
 
10
- def initialize
11
- @methods ||= []
12
- end
16
+ class Hash
17
+ def to_openstruct
18
+ mapped = {}
19
+ each{ |key,value| mapped[key] = value.to_openstruct }
20
+ OpenStruct.new(mapped)
21
+ end
22
+ end
13
23
 
14
- def clear
15
- @global_config = Config.new
16
- end
24
+ module YAML
25
+ def self.load_openstruct(source)
26
+ self.load(source).to_openstruct
27
+ end
28
+ end
17
29
 
18
- def load(conf_files)
19
- conf_files = [conf_files] unless conf_files.is_a? Array
20
- conf_files.each do |conf|
21
- attr_name = File.basename(conf, '.yml').gsub('-', '_')
22
- attr_value = YAML.load_file conf
23
- set attr_name, attr_value
24
- end
25
- end
30
+ class CukeFig < OpenStruct
31
+ def config
32
+ self
33
+ end
26
34
 
27
- def set(attr_name, attr_value)
28
- var_name = ('@' + attr_name.to_s).to_sym
29
- if instance_variable_defined?(var_name) && attr_value.is_a?(Hash)
30
- # Get and merge. Keep merging if hash values are hashes
31
- merger = proc { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : (v2.nil? ? v1 : v2) }
32
- instance_variable_get(var_name).merge! attr_value, &merger
33
- else
34
- # Create
35
- instance_variable_set(var_name, attr_value)
36
- singleton_class.class_eval { attr_reader attr_name }
37
- @methods << attr_name.to_s
38
- end
39
- end
35
+ def setup(common, environment: nil, env_configs: nil, override: nil)
36
+ env_config = env_configs[environment] unless env_configs.nil? || environment.nil?
37
+ config_files = expand_config_files common, env_config: env_config, override: override
38
+ load(config_files)
40
39
  end
41
40
 
42
- def config
43
- Config.get
41
+ def method_missing(mid, *args)
42
+ @global_config.send(mid, *args)
44
43
  end
45
44
 
45
+ private
46
+
46
47
  def expand_config_files(common, env_config: nil, override: nil)
47
48
  expanded = []
48
49
  expanded.concat Dir.glob(File.join(Dir.pwd, common)) unless common.nil?
@@ -51,20 +52,15 @@ module CukeFig
51
52
  expanded
52
53
  end
53
54
 
54
- def setup(common, environment: nil, env_configs: nil, override: nil)
55
- config.clear
56
- env_config = env_configs[environment] unless env_configs.nil? || environment.nil?
57
- config_files = expand_config_files common, env_config: env_config, override: override
58
- config.set(:env, environment)
59
- config.load(config_files)
60
- config.methods.each do |method|
61
- define_method method do |*args, &block|
62
- config.send method, *args, &block
63
- end
55
+ def load(conf_files)
56
+ conf_files = [conf_files] unless conf_files.is_a? Array
57
+ conf_hash = Hash.new
58
+ conf_files.each do |conf|
59
+ new_hash = { File.basename(conf, '.yml').gsub('-', '_').to_sym => YAML.load_file(conf) }
60
+ conf_hash.merge!(new_hash)
64
61
  end
62
+ @global_config = conf_hash.to_openstruct
65
63
  end
66
-
67
- extend(CukeFig)
68
64
  end
69
65
 
70
- World(CukeFig)
66
+ World{ CukeFig.new }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuke_fig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anders Åslund