envred 0.0.1 → 0.1.0
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 +4 -4
- data/README.md +15 -2
- data/bin/envred +59 -9
- data/lib/envred.rb +30 -10
- data/lib/envred/version.rb +1 -1
- data/spec/{envred_spec.rb → loader_spec.rb} +35 -10
- data/spec/setter_spec.rb +34 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93212e392b8cf3ccff6398d91037ca897c1e63e9
|
4
|
+
data.tar.gz: 556de3856293cdd8ad8893093f78cbfca296c5ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37450b7ac0190fc8b55ee69ff7ba5cbf2c7e5ced5c56a480957fcef2c21ed9fa03f5039fead20752b30326d51c28236dc6c99d16192b1650e46a97970c41c052
|
7
|
+
data.tar.gz: 6a76c3fcc701975bbda8227f3a85396203c987f6ed75e20f829193de905c5079834c238456a67fb39dcc49eca4b1ac1c41667d915712f97e5f01fec0ce8e8b59
|
data/README.md
CHANGED
@@ -14,14 +14,27 @@ Install via rubygems:
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
-
|
17
|
+
Set some variables first:
|
18
18
|
|
19
|
-
$ envred localhost:6379/0/~myapp
|
19
|
+
$ envred localhost:6379/0/~myapp --set FOO=1 BAR=2 BAZ=3
|
20
20
|
|
21
21
|
The `localhost:6379` is host anf port of Redis server, `0` is the number of
|
22
22
|
the database to load stuff from, finally, `myapp` is the key which keeps
|
23
23
|
the data as hash.
|
24
24
|
|
25
|
+
Now you can run any application with environment loaded from Redis server:
|
26
|
+
|
27
|
+
$ envred localhost:6379/0/~myapp myapp --do something
|
28
|
+
|
29
|
+
To list all your variables use:
|
30
|
+
|
31
|
+
$ envred localhost:6379/0/~myapp --list
|
32
|
+
|
33
|
+
You can remove specific keys or purge all config:
|
34
|
+
|
35
|
+
$ envred localhost:6379/0/~myapp --unset FOO BAR
|
36
|
+
$ envred localhost:6379/0/~myapp --purge
|
37
|
+
|
25
38
|
## Hacking
|
26
39
|
|
27
40
|
If you wanna hack on the repo for some reason, first clone it, then run:
|
data/bin/envred
CHANGED
@@ -3,18 +3,68 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'envred'
|
5
5
|
|
6
|
+
$app_name = 'envred'
|
7
|
+
|
8
|
+
def validate_argc(condition)
|
9
|
+
if condition
|
10
|
+
$stderr.write("ERROR: Invalid parameters. Run with `-h' flag for help.\n")
|
11
|
+
exit(1)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def safe
|
16
|
+
yield
|
17
|
+
rescue => err
|
18
|
+
$stderr.write("ERROR: #{err.to_s}\n")
|
19
|
+
exit(146)
|
20
|
+
end
|
21
|
+
|
6
22
|
case ARGV[0]
|
7
23
|
when "-h", "--help"
|
8
|
-
puts "usage:
|
24
|
+
puts "usage: #{$app_name} CENTRAL COMMAND"
|
25
|
+
puts " #{$app_name} [-s|--set] CENTRAL KEY VALUE [KEY VALUE...]"
|
26
|
+
puts " #{$app_name} [-u|--unset] CENTRAL KEY [KEY...]"
|
27
|
+
puts " #{$app_name} [-l|--list] CENTRAL"
|
28
|
+
puts " #{$app_name} [-p|--purge] CENTRAL"
|
29
|
+
puts " #{$app_name} [-h|--help]"
|
9
30
|
exit
|
10
31
|
when "-v", "--version"
|
11
|
-
puts "
|
32
|
+
puts "#{$app_name} v#{Envred::VERSION}"
|
12
33
|
exit
|
34
|
+
when "-s", "--set"
|
35
|
+
ARGV.shift
|
36
|
+
validate_argc(ARGV.size < 3)
|
37
|
+
safe do
|
38
|
+
Envred::Setter.new(ARGV.shift).set(*ARGV)
|
39
|
+
puts "Ok!"
|
40
|
+
end
|
41
|
+
when "-u", "--unset"
|
42
|
+
ARGV.shift
|
43
|
+
validate_argc(ARGV.size < 2)
|
44
|
+
safe do
|
45
|
+
Envred::Setter.new(ARGV.shift).unset(*ARGV)
|
46
|
+
puts "Ok!"
|
47
|
+
end
|
48
|
+
when "-l", "--list"
|
49
|
+
ARGV.shift
|
50
|
+
validate_argc(ARGV.size < 1)
|
51
|
+
safe do
|
52
|
+
Envred::Loader.new(ARGV.shift).each do |key, val|
|
53
|
+
puts "#{key}=#{val.inspect}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
when "-p", "--purge"
|
57
|
+
ARGV.shift
|
58
|
+
validate_argc(ARGV.size < 1)
|
59
|
+
safe do
|
60
|
+
Envred::Purgator.new(ARGV.shift).purge
|
61
|
+
puts "Ok!"
|
62
|
+
end
|
63
|
+
else
|
64
|
+
validate_argc(ARGV.size < 2)
|
65
|
+
safe do
|
66
|
+
Envred::Loader.new(ARGV.shift).apply do
|
67
|
+
system ARGV.join(" ")
|
68
|
+
end
|
69
|
+
end
|
13
70
|
end
|
14
|
-
|
15
|
-
if ARGV.size < 2
|
16
|
-
$stderr.write("ERROR: Invalid parameters. Run with `-h' flag for help.\n")
|
17
|
-
exit(1)
|
18
|
-
end
|
19
|
-
|
20
|
-
Envred.wrap(ARGV.shift, ARGV.join(" "))
|
data/lib/envred.rb
CHANGED
@@ -2,28 +2,48 @@ require "envred/version"
|
|
2
2
|
require "redis"
|
3
3
|
|
4
4
|
module Envred
|
5
|
-
class
|
5
|
+
class Central
|
6
6
|
def initialize(central)
|
7
7
|
@server, @app = central.split("/~")
|
8
8
|
@redis = Redis.new(url: "redis://#{@server}")
|
9
|
-
|
10
|
-
load and yield if block_given?
|
11
9
|
end
|
10
|
+
end
|
12
11
|
|
12
|
+
class Loader < Central
|
13
13
|
def load
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
@redis.hgetall(@app)
|
15
|
+
end
|
16
|
+
|
17
|
+
def each(*args, &block)
|
18
|
+
load.each(*args, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def apply
|
22
|
+
each do |key, val|
|
23
|
+
if val == ''
|
18
24
|
ENV.delete(key)
|
25
|
+
else
|
26
|
+
ENV[key] = val if ENV[key] === nil
|
19
27
|
end
|
20
28
|
end
|
29
|
+
|
30
|
+
yield if block_given?
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Setter < Central
|
35
|
+
def set(*values)
|
36
|
+
@redis.hmset(@app, *values)
|
37
|
+
end
|
38
|
+
|
39
|
+
def unset(*keys)
|
40
|
+
@redis.hdel(@app, *keys)
|
21
41
|
end
|
22
42
|
end
|
23
43
|
|
24
|
-
|
25
|
-
|
26
|
-
|
44
|
+
class Purgator < Central
|
45
|
+
def purge
|
46
|
+
@redis.del(@app)
|
27
47
|
end
|
28
48
|
end
|
29
49
|
end
|
data/lib/envred/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path("../spec_helper.rb", __FILE__)
|
2
2
|
|
3
|
-
describe Envred do
|
3
|
+
describe Envred::Loader do
|
4
4
|
let(:server) do
|
5
5
|
ENV['REDIS_URL'].split('redis://').last.split('/').first
|
6
6
|
end
|
@@ -13,22 +13,47 @@ describe Envred do
|
|
13
13
|
Redis.new(url: "redis://#{server}/0")
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
let(:setenv) do
|
17
|
+
{ foo: 1, bar: 2 }
|
18
|
+
end
|
19
|
+
|
20
|
+
before do
|
21
|
+
redis.mapped_hmset("test", setenv)
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#load" do
|
25
|
+
it "loads list of set variables" do
|
26
|
+
all = Envred::Loader.new(central).load
|
27
|
+
all.should have(2).items
|
28
|
+
all['foo'].should == '1'
|
29
|
+
all['bar'].should == '2'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#load" do
|
34
|
+
it "loads list of set variables and produces an iterator for it" do
|
35
|
+
all = {}
|
36
|
+
|
37
|
+
Envred::Loader.new(central).each do |key, val|
|
38
|
+
all[key] = val
|
39
|
+
end
|
40
|
+
|
41
|
+
all.should have(2).items
|
42
|
+
all['foo'].should == '1'
|
43
|
+
all['bar'].should == '2'
|
19
44
|
end
|
45
|
+
end
|
20
46
|
|
47
|
+
describe "#apply" do
|
21
48
|
before do
|
22
49
|
ENV.delete('foo')
|
23
50
|
ENV.delete('bar')
|
24
|
-
|
25
|
-
redis.mapped_hmset("test", setenv)
|
26
51
|
end
|
27
52
|
|
28
53
|
it "should load proper configuration and set env" do
|
29
54
|
env = nil
|
30
55
|
|
31
|
-
Envred::
|
56
|
+
Envred::Loader.new(central).apply do
|
32
57
|
env = ENV
|
33
58
|
end
|
34
59
|
|
@@ -39,7 +64,7 @@ describe Envred do
|
|
39
64
|
it "should property pass env to commands" do
|
40
65
|
res = nil
|
41
66
|
|
42
|
-
Envred::
|
67
|
+
Envred::Loader.new(central).apply do
|
43
68
|
res = `echo $foo $bar`.strip
|
44
69
|
end
|
45
70
|
|
@@ -59,7 +84,7 @@ describe Envred do
|
|
59
84
|
it "should not change existing keys" do
|
60
85
|
res = nil
|
61
86
|
|
62
|
-
Envred::
|
87
|
+
Envred::Loader.new(central).apply do
|
63
88
|
res = `echo $foo $bar`.strip
|
64
89
|
end
|
65
90
|
|
@@ -69,7 +94,7 @@ describe Envred do
|
|
69
94
|
it "should remove key if value is empty" do
|
70
95
|
res = nil
|
71
96
|
|
72
|
-
Envred::
|
97
|
+
Envred::Loader.new(central).apply do
|
73
98
|
res = `echo $foo $bar $baz`.strip
|
74
99
|
end
|
75
100
|
|
data/spec/setter_spec.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.expand_path("../spec_helper.rb", __FILE__)
|
2
|
+
|
3
|
+
describe Envred::Setter do
|
4
|
+
let(:server) do
|
5
|
+
ENV['REDIS_URL'].split('redis://').last.split('/').first
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:central) do
|
9
|
+
"#{server}/0/~test"
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:redis) do
|
13
|
+
Redis.new(url: "redis://#{server}/0")
|
14
|
+
end
|
15
|
+
|
16
|
+
before do
|
17
|
+
redis.flushdb()
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#set" do
|
21
|
+
it "should save given variable if non empty" do
|
22
|
+
Envred::Setter.new(central).set("foo", 1)
|
23
|
+
redis.hget("test", "foo").should == "1"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#unset" do
|
28
|
+
it "should save given variable if non empty" do
|
29
|
+
Envred::Setter.new(central).set("foo", 1)
|
30
|
+
Envred::Setter.new(central).unset("foo")
|
31
|
+
redis.hget("test", "foo").should == nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envred
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Kovalik
|
@@ -84,7 +84,8 @@ files:
|
|
84
84
|
- envred.gemspec
|
85
85
|
- lib/envred.rb
|
86
86
|
- lib/envred/version.rb
|
87
|
-
- spec/
|
87
|
+
- spec/loader_spec.rb
|
88
|
+
- spec/setter_spec.rb
|
88
89
|
- spec/spec_helper.rb
|
89
90
|
- wercker.yml
|
90
91
|
homepage: https://github.com/kkvlk/envred
|
@@ -112,5 +113,6 @@ signing_key:
|
|
112
113
|
specification_version: 4
|
113
114
|
summary: Redis backend env setup proxy.
|
114
115
|
test_files:
|
115
|
-
- spec/
|
116
|
+
- spec/loader_spec.rb
|
117
|
+
- spec/setter_spec.rb
|
116
118
|
- spec/spec_helper.rb
|