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.
- checksums.yaml +8 -8
- data/lib/cuke_fig.rb +44 -48
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTViNjVkNDA5ODI1MzJlMTU2ZWNkYjc4NTY3M2UzMDJjZmJjZWJlNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YWRhOGI5YWU5YTEzZDQ1OWRkMjg1ZmE1ZjNlY2YwZWE2MTZjYTQ2Ng==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWVkZTE0NDE4NzRlN2FhZjQwNjUzY2ZmZjkyZjM1YjQwN2NjYjI3MDg1NTg2
|
10
|
+
NWNiNjBjMjhhNzcxYzNhNzdmN2NmYjA4MzFjZTEwMDUxZWMzMjkwYmQ1NTg0
|
11
|
+
OGE5NDAxZmVkNGE2MDJkYjAyZTYwZTIyMjQ1Yjk2MGUwZDgwNzU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
3
|
-
|
4
|
-
|
4
|
+
class Object
|
5
|
+
def to_openstruct
|
6
|
+
self
|
7
|
+
end
|
8
|
+
end
|
5
9
|
|
6
|
-
|
7
|
-
|
8
|
-
|
10
|
+
class Array
|
11
|
+
def to_openstruct
|
12
|
+
map{ |el| el.to_openstruct }
|
13
|
+
end
|
14
|
+
end
|
9
15
|
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
15
|
-
|
16
|
-
|
24
|
+
module YAML
|
25
|
+
def self.load_openstruct(source)
|
26
|
+
self.load(source).to_openstruct
|
27
|
+
end
|
28
|
+
end
|
17
29
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
43
|
-
|
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
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
66
|
+
World{ CukeFig.new }
|