envied 0.6.1 → 0.6.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f7249d9e47e9fb7837322ca6d5c4c13da3a0b71
4
- data.tar.gz: 5d7946abccb41ae923c3730fddef68c4e7dde5be
3
+ metadata.gz: 89f6ebe3012653a783d97fb3c1df78c4b747ec6b
4
+ data.tar.gz: 1fdc04401cd1a5d1dad6aa710e157e1bc0d4108e
5
5
  SHA512:
6
- metadata.gz: e3174fce263d5f6b1580e5fba893c9c690ed07091b1ab859b389ae6e9f2f8201b7004b8d283ce690376a7fefca3833576811b9c72cdaab3c1192473b59f9f4a5
7
- data.tar.gz: f5be4b540310a362c9c19558049745b851eed7b8757bb0e3af016bd1d4cc11075b9d6dd55919e0277b723a25273f01c125f027605ac71b8b23251158bf32bccd
6
+ metadata.gz: e72742c30e2590982a229849d225ae669bc9468e802155a1e9703fe409796b4209fd2d6fdc9faf6831a69a6c9c4f81f0af30d105008ca105b0c80f4935f4b210
7
+ data.tar.gz: 4a361ee32e03924384526ced8c4c22162a8060387831dd9c1cbd954efd7538c4d4aa1a13d93ff3eac27871e709ddcf32349619c12f8751885e8dde267f946932
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --warnings
@@ -1,6 +1,16 @@
1
+ # 0.6.2 / unreleased
2
+
3
+ * Add `envied check:heroku` to do a check on your Heroku app.
4
+
5
+ * Add `envied check:heroku:binstub` to generate script for convenient 'check:heroku'
6
+
7
+ # 0.6.1 / 2014-08-13
8
+
9
+ * Add `envied check` to check whether defined variables are present and valid.
10
+
1
11
  # 0.6.0 / 2014-08-13
2
12
 
3
- * Configuration should now be put in `Envfile`
13
+ * The configuration now lives in `Envfile` by default.
4
14
 
5
15
  # 0.5.0 / 2014-07-02
6
16
 
data/README.md CHANGED
@@ -159,9 +159,11 @@ ENVied.require(:default, ENV['RACK_ENV'], (ENV['CI'] ? :ci : :not_ci))
159
159
  ```bash
160
160
  $ envied help
161
161
  Commands:
162
- envied check # Checks whether all ENV-variables are present and valid
163
- envied help [COMMAND] # Describe available commands or one specific command
164
- envied init # Generates a default Envfile in the current working directory
162
+ envied check # Checks whether you environment contains the defined variables
163
+ envied check:heroku # Checks whether a Heroku config contains the defined variables
164
+ envied check:heroku:binstub # Generates a shell script for the check:heroku-task
165
+ envied help [COMMAND] # Describe available commands or one specific command
166
+ envied init # Generates a default Envfile in the current working directory
165
167
  ```
166
168
 
167
169
  ## Installation
data/Rakefile CHANGED
@@ -1,7 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rspec/core/rake_task'
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ RSpec::Core::RakeTask.new(:spec) do |s|
5
+ s.ruby_opts = %w(-w)
6
+ end
5
7
 
6
8
  desc "Run the specs"
7
9
  task default: :spec
@@ -33,7 +33,7 @@ class ENVied
33
33
  end
34
34
 
35
35
  def self.enable_defaults
36
- @enable_defaults.respond_to?(:call) ?
36
+ (@enable_defaults ||= false).respond_to?(:call) ?
37
37
  @enable_defaults.call :
38
38
  @enable_defaults
39
39
  end
@@ -46,7 +46,7 @@ class ENVied
46
46
  class << self
47
47
  alias_method :defaults_enabled?, :enable_defaults
48
48
  alias_method :enable_defaults=, :enable_defaults!
49
- attr_accessor :current_group
49
+ attr_writer :current_group
50
50
  end
51
51
 
52
52
  def self.current_group
@@ -101,15 +101,15 @@ class ENVied
101
101
 
102
102
  def self.ensure_configured!
103
103
  # Backward compat: load Envfile only when it's present
104
- configure_via_envfile if envfile_exists?
104
+ configure_via_envfile if envfile_exist?
105
105
  end
106
106
 
107
107
  def self.envfile
108
108
  File.expand_path('Envfile')
109
109
  end
110
110
 
111
- def self.envfile_exists?
112
- File.exists?(envfile)
111
+ def self.envfile_exist?
112
+ File.exist?(envfile)
113
113
  end
114
114
 
115
115
  def self.configure_via_envfile
@@ -158,7 +158,7 @@ class ENVied
158
158
  # A list of all configured variable names.
159
159
  #
160
160
  # @example
161
- # ENVied.configured_variable_names
161
+ # ENVied.required_variable_names
162
162
  # # => [:DATABASE_URL]
163
163
  #
164
164
  # @return [Array<Symbol>] the list of variable names
@@ -11,9 +11,9 @@ class ENVied
11
11
  template("Envfile.tt")
12
12
  end
13
13
 
14
- desc "check", "Checks whether all ENV-variables are present and valid"
14
+ desc "check", "Checks whether you environment contains the defined variables"
15
15
  long_desc <<-LONG
16
- Checks whether all ENV-variables are present and valid.
16
+ Checks whether defined variables are present and valid in your shell.
17
17
 
18
18
  On success the process will exit with status 0.
19
19
  Else the missing/invalid variables will be shown, and the process will exit with status 1.
@@ -21,7 +21,59 @@ class ENVied
21
21
  option :groups, type: :array, default: %w(default), banner: 'default production'
22
22
  def check
23
23
  ENVied.require(*options[:groups])
24
- puts "All ENV-variables for group(s) #{options[:groups]} are ok!"
24
+ puts "All variables for group(s) #{options[:groups]} are present and valid"
25
+ end
26
+
27
+ desc "check:heroku", "Checks whether a Heroku config contains the defined variables"
28
+
29
+ long_desc <<-LONG
30
+ Checks the config of your Heroku app against the local Envfile.
31
+
32
+ The Heroku config should be piped to this task:
33
+
34
+ heroku config | bundle exec envied check:heroku
35
+
36
+ It's more convenient to generate a shell script using the check:heroku:binstub-task.
37
+
38
+ On success the process will exit with status 0.
39
+ Else the missing/invalid variables will be shown, and the process will exit with status 1.
40
+ LONG
41
+ option :groups, type: :array, default: %w(default production), banner: 'default production'
42
+ define_method "check:heroku" do
43
+ if STDIN.tty?
44
+ error <<-ERR
45
+ Please pipe the contents of `heroku config` to this task.
46
+ I.e. `heroku config | bundle exec envied check:heroku`"
47
+ ERR
48
+ exit 1
49
+ end
50
+ config = STDIN.read
51
+ heroku_env = Hash[config.split("\n")[1..-1].each_with_object([]) do |i, res|
52
+ res << i.split(":", 2).map(&:strip)
53
+ end]
54
+ ENV.replace({}).update(heroku_env)
55
+ ENVied.require(*options[:groups])
56
+ puts "All variables for group(s) #{options[:groups]} are present and valid in your Heroku app"
57
+ end
58
+
59
+ desc "check:heroku:binstub", "Generates a shell script for the check:heroku-task"
60
+ long_desc <<-LONG
61
+ Generates a shell script to check the Heroku config against the local Envfile.
62
+
63
+ The same as the check:heroku-task, but all in one script (no need to pipe `heroku config` to it etc.).
64
+
65
+ LONG
66
+ option :dest, banner: "where to put the script", default: 'bin/heroku-env-check'
67
+ option :app, banner: "name of Heroku app"
68
+ option :groups, type: :array, default: %w(default production), banner: 'default production'
69
+ define_method "check:heroku:binstub" do
70
+ require 'fileutils'
71
+ @app = options[:app]
72
+ @dest = @app ? File.join(*%W(bin #{@app}-env-check)) : options[:dest]
73
+ @groups = options[:groups]
74
+ full_dest = File.expand_path(@dest)
75
+ template("heroku-env-check.tt", full_dest)
76
+ FileUtils.chmod 0755, full_dest
25
77
  end
26
78
  end
27
79
  end
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+
3
+ # Check the config of a Heroku app against the defined variables in `Envfile`
4
+
5
+ <%- if @app %>
6
+ HEROKU_APP=<%= @app %> exec heroku config | bundle exec envied check:heroku --groups <%= @groups.join(",") %>
7
+ <%- else %>
8
+ exec heroku config | bundle exec envied check:heroku --groups <%= @groups.join(",") %>
9
+ <%- end %>
@@ -1,3 +1,3 @@
1
1
  class ENVied
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
@@ -69,7 +69,7 @@ describe ENVied do
69
69
  specify do
70
70
  expect {
71
71
  ENVied.require
72
- }.to raise_error /set the following ENV-variables: a/
72
+ }.to raise_error(/set the following ENV-variables: a/)
73
73
  end
74
74
  end
75
75
 
@@ -79,7 +79,7 @@ describe ENVied do
79
79
  specify do
80
80
  expect {
81
81
  ENVied.require
82
- }.to raise_error /ENV\['A'\] \('NaN' can't be coerced to Integer/
82
+ }.to raise_error(/ENV\['A'\] \('NaN' can't be coerced to Integer/)
83
83
  end
84
84
  end
85
85
 
@@ -175,7 +175,7 @@ describe ENVied do
175
175
  it 'is required when requiring the group' do
176
176
  expect {
177
177
  described_class.require(:foo)
178
- }.to raise_error /bar/
178
+ }.to raise_error(/bar/)
179
179
  end
180
180
 
181
181
  it 'is not required when requiring another group' do
@@ -197,7 +197,7 @@ describe ENVied do
197
197
  [:default, 'default'].each do |groups|
198
198
  expect {
199
199
  described_class.require(*groups)
200
- }.to raise_error /moar/
200
+ }.to raise_error(/moar/)
201
201
  end
202
202
  end
203
203
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: envied
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-16 00:00:00.000000000 Z
11
+ date: 2014-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -103,6 +103,7 @@ extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
105
  - ".gitignore"
106
+ - ".rspec"
106
107
  - ".travis.yml"
107
108
  - CHANGELOG.md
108
109
  - Gemfile
@@ -114,6 +115,7 @@ files:
114
115
  - lib/envied.rb
115
116
  - lib/envied/cli.rb
116
117
  - lib/envied/templates/Envfile.tt
118
+ - lib/envied/templates/heroku-env-check.tt
117
119
  - lib/envied/version.rb
118
120
  - spec/envied_spec.rb
119
121
  - spec/spec_helper.rb