cuke_fig 0.0.2 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 }
|