envyous 1.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NWRjZDYzYTk5ZjUyNWUxZDI4OTliMjc0OTFjOTVlNGU5MTQ4OTk0ZA==
5
+ data.tar.gz: !binary |-
6
+ ZTg3MmQ1MDRhM2ZiMmQ0MzcxOTQ4OGYzZjM2N2Y2ZTdlNDcxZGRlMw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTQyYzZkZjY5NDBiYmE0ZmIzNDVmMGY1NDY4OTdhMTNiYTA4OTQ5NjkyZDE3
10
+ N2M1YmZlYzIxM2JlMjkyNzQ2YzIwMzc2MTA5MzZiMWRlZmJkYmRkY2JhYzQ4
11
+ MGQ1MDc5M2YyYTEwYzNmYmQwNTNhMGFmNGUxYjk3ZmM3M2RhMWI=
12
+ data.tar.gz: !binary |-
13
+ ZjgyZjMwMGY5ZTdmMjVhNTdmM2VlYTFkNTc3YTc4NmQ3NjMwZjI5YzhiYmJh
14
+ NTY1NDRlOTMxNDFiYTEzZDAyNGVkMTk1YzgxNGZjZjNhNmNlMjQyMTcwNTgy
15
+ ODM1YTFlOWNjZGYwYjVkOGZhZGJmOTBlZTFhZTBiNWY3YTU4MTU=
data/lib/envyous.rb ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require 'envyous/core'
@@ -0,0 +1,95 @@
1
+
2
+ require 'confickle'
3
+
4
+ module Envyous
5
+ class EnvironmentNotSpecified < Exception
6
+ end
7
+
8
+ class EnvironmentNameIsEmpty < Exception
9
+ end
10
+
11
+ class EnvironmentRootDoesNotExist < Exception
12
+ end
13
+
14
+ def self.config(options)
15
+ c = Context.new(options)
16
+
17
+ retval = c.confickle
18
+
19
+ unless File.exists?(retval.root)
20
+ raise EnvironmentRootDoesNotExist.new(retval.root)
21
+ end
22
+
23
+ retval
24
+ end
25
+
26
+
27
+ class Context
28
+
29
+ # The root config folder. Contains the
30
+ # config folders for all environments.
31
+ attr_reader :root
32
+
33
+ # Name of the environment variable that will
34
+ # be used as the environment switch.
35
+ #
36
+ # Default value: 'ENV'
37
+ #
38
+ attr_reader :env_var
39
+
40
+
41
+ # Options that will be passed to confickle.
42
+ # Note: Envyous will override the :root option.
43
+ attr_reader :confickle_opts
44
+
45
+ def initialize(options)
46
+ if options.is_a? String
47
+ options = {root: options}
48
+ end
49
+
50
+ @root = options.fetch(:root)
51
+ @env_var = options.fetch(:env_var, 'ENV').to_s
52
+ @confickle_opts = options.fetch(:confickle_opts, {})
53
+ end
54
+
55
+ def envyous_opts
56
+ @envyous_opts ||= begin
57
+ File.open(File.join(root, "envyous.json")) do |fin|
58
+ JSON.parse(fin.read, symbolize_names: true)
59
+ end
60
+ end
61
+ end
62
+
63
+
64
+
65
+ def env_name
66
+ @env_name ||= begin
67
+ name = ENV.fetch(env_var) do
68
+ envyous_opts.fetch(:env) do
69
+ raise EnvironmentNotSpecified
70
+ end
71
+ end
72
+
73
+ if name.empty?
74
+ raise EnvironmentNameIsEmpty
75
+ end
76
+
77
+ name
78
+ end
79
+ end
80
+
81
+
82
+ def confickle_root
83
+ @confickle_root ||= File.join(root, "environments", env_name)
84
+ end
85
+
86
+ def confickle
87
+ opts = confickle_opts.merge(
88
+ root: confickle_root
89
+ )
90
+
91
+ Confickle.new(opts)
92
+ end
93
+ end
94
+
95
+ end
@@ -0,0 +1 @@
1
+
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: envyous
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.alpha.1
5
+ platform: ruby
6
+ authors:
7
+ - Brian Lauber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: confickle
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Environmentally-friendly config!
42
+ email: constructible.truth@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/envyous/core.rb
48
+ - lib/envyous/rake.rb
49
+ - lib/envyous.rb
50
+ homepage:
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>'
66
+ - !ruby/object:Gem::Version
67
+ version: 1.3.1
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.1.11
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Environmentally-friendly config!
74
+ test_files: []