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
         |