enfig 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/enfig.rb +82 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6ccb02c60cdf0585d71aba41b5a42dc23307e422
4
+ data.tar.gz: 0ec650247a06b91fa07da600ed311e2611b9ebba
5
+ SHA512:
6
+ metadata.gz: 402f541327e906055729ccac38e37547cc9b558c11a8a57af78c8aa138cf485496c0fd128bf77eb35b3241cdaa9dd3a933096c523508eb74d696ad980ba65af4
7
+ data.tar.gz: 82f0993f267732c09efc54b91ee96746a47d00e8a09b72b2f895c5aa84554d9d0f65fc3190d146c9179a2a0cc77a4209a924723504ecc2975f559ae5f0b4d706
@@ -0,0 +1,82 @@
1
+ require 'yaml'
2
+
3
+ class Enfig
4
+
5
+ attr_accessor :env, :root, :files, :enable_overwrite
6
+
7
+ alias_method :'overwrite?', :enable_overwrite
8
+
9
+ def initialize(args = {})
10
+ @config = nil
11
+ @env = args[:env] || 'development'
12
+ @root = args[:root] || '.'
13
+ @files = args[:files] || [args[:file]].compact
14
+ @enable_overwrite = args[:overwrite] == false ? false : true
15
+ end
16
+
17
+ def config
18
+ @config ||= load_config
19
+ end
20
+
21
+ def [](key)
22
+ config[key]
23
+ end
24
+
25
+ def load_config
26
+ conf = {}
27
+
28
+ files.each do |file|
29
+ name = File.basename(file, '.yml').to_s.downcase.to_sym
30
+ conf[name] = load_yaml(file)
31
+ end
32
+
33
+ conf
34
+ end
35
+
36
+ def update_env!
37
+ load_env_hash(config).each do |k, v|
38
+ ENV[k] = v if ENV[k].nil? || ENV[k] == '' || overwrite?
39
+ end
40
+ end
41
+
42
+ def self.update!(args = {})
43
+ enfig = Enfig.new(args)
44
+ enfig.update_env!
45
+ enfig
46
+ end
47
+
48
+ private
49
+
50
+ def load_yaml(*args)
51
+ config = YAML.load_file(File.join(root, *args))
52
+ symbolize_keys(config[env])
53
+ end
54
+
55
+ def load_env_hash(config_src, target = {}, prefix = nil)
56
+ prefix.concat('_') if prefix && !prefix.end_with?('_')
57
+ config_src.each do |key, value|
58
+ suffix = key.to_s.upcase
59
+ target_key = "#{prefix}#{suffix}"
60
+ if value.is_a?(Hash)
61
+ load_env_hash(value, target, target_key)
62
+ else
63
+ target[target_key] = value
64
+ end
65
+ end
66
+
67
+ target
68
+ end
69
+
70
+ def symbolize_keys(hash)
71
+ transform_keys(hash) { |key| key.to_sym rescue key }
72
+ end
73
+
74
+ def transform_keys(hash, &block)
75
+ result = {}
76
+ hash.each do |key, value|
77
+ result[yield(key)] = value.is_a?(Hash) ? transform_keys(value, &block) : value
78
+ end
79
+ result
80
+ end
81
+
82
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: enfig
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Arturo Guzman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-05 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Sets ENV values from a group of YAML files
14
+ email: arturo@kisurfer.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/enfig.rb
20
+ homepage: http://github.com/guzart/enfig
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.2
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: ENV values for your project
44
+ test_files: []