dotenv 2.6.0 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a6cb2f17a09a77368aa3f18a06cfc18434adfef2d8dfa072fb541a7bb35100a
4
- data.tar.gz: da472aca7324a5c382f04239c6388672279642bc94822709dc0b4b8738347e74
3
+ metadata.gz: fadc1aaf858a18707131513d5fa3dc015a6c6cd52f6402a92a873ea8b9bb1cda
4
+ data.tar.gz: c07851bf8fa4dcd429420a416f099a1202e2790937413d96d1861a7e1580056e
5
5
  SHA512:
6
- metadata.gz: 4ec4da6c555c2b4532247ee733df7b365b7c77500723b3c45f3ae1246adf0929af729ac3c1d753da1aa04c546d32f6a7c7fdfeec8f803184154cc74de96d04f1
7
- data.tar.gz: af06a29d17da59c84f461d16102772d2927885983160b5c6a6c91d12e6c28e6a878fc44ae3cc610bc122241fc953a0407ed85c6316b2689d32e5de4f81233034
6
+ metadata.gz: 3815788d3a7f2527dc89c57e15c67cf10bcdf7dd6d12ddb2f4c5eadc5be3c98ab55fd90077a2df829b431b4ce36c04e1e7a3f484f728f7fd498df85d41cc1c73
7
+ data.tar.gz: 15788c3ecc0ab48db28ff231d4a2bc4a79c8d52786dd0994b5c3839aa709bd58b541205f8683d0dd4ad7101f6d3ca604f590814979165d0adffcce7b8fd5be13
data/README.md CHANGED
@@ -177,6 +177,16 @@ Dotenv.require_keys("SERVICE_APP_ID", "SERVICE_KEY", "SERVICE_SECRET")
177
177
 
178
178
  If any of the configuration keys above are not set, your application will raise an error during initialization. This method is preferred because it prevents runtime errors in a production application due to improper configuration.
179
179
 
180
+ ### Parsing
181
+
182
+ To parse a list of env files for programmatic inspection without modifying the ENV:
183
+
184
+ ```ruby
185
+ Dotenv.parse(".env.local", ".env")
186
+ # => {'S3_BUCKET' => 'YOURS3BUCKET', 'SECRET_KEY' => 'YOURSECRETKEYGOESHERE', ...}
187
+ ```
188
+
189
+ This method returns a hash of the ENV var name/value pairs.
180
190
 
181
191
  ## Frequently Answered Questions
182
192
 
@@ -190,7 +200,7 @@ If you use this gem to handle env vars for multiple Rails environments (developm
190
200
 
191
201
  ### What other .env* files can I use?
192
202
 
193
- `dotenv-rails` will override in the following order (highest defined varible overrides lower):
203
+ `dotenv-rails` will override in the following order (highest defined variable overrides lower):
194
204
 
195
205
  | Hierarchy Priority | Filename | Environment | Should I `.gitignore`it? | Notes |
196
206
  | ------------------ | ------------------------ | -------------------- | --------------------------------------------------- | ------------------------------------------------------------ |
@@ -45,6 +45,15 @@ module Dotenv
45
45
  end
46
46
  end
47
47
 
48
+ # returns a hash of parsed key/value pairs but does not modify ENV
49
+ def parse(*filenames)
50
+ with(*filenames) do |f|
51
+ ignoring_nonexistent_files do
52
+ Environment.new(f, false)
53
+ end
54
+ end
55
+ end
56
+
48
57
  # Internal: Helper to expand list of filenames.
49
58
  #
50
59
  # Returns a hash of all the loaded environment variables.
@@ -1,4 +1,6 @@
1
1
  require "dotenv"
2
+ require "dotenv/version"
3
+ require "optparse"
2
4
 
3
5
  module Dotenv
4
6
  # The CLI is a class responsible of handling all the command line interface
@@ -11,26 +13,55 @@ module Dotenv
11
13
  end
12
14
 
13
15
  def run
14
- filenames = parse_filenames || []
16
+ parse_argv!(@argv)
17
+
15
18
  begin
16
- Dotenv.load!(*filenames)
19
+ Dotenv.load!(*@filenames)
17
20
  rescue Errno::ENOENT => e
18
21
  abort e.message
19
22
  else
20
- exec(*argv) unless argv.empty?
23
+ exec(*@argv) unless @argv.empty?
21
24
  end
22
25
  end
23
26
 
24
27
  private
25
28
 
26
- def parse_filenames
27
- pos = argv.index("-f")
28
- return nil unless pos
29
- # drop the -f
30
- argv.delete_at pos
31
- # parse one or more comma-separated .env files
32
- require "csv"
33
- CSV.parse_line argv.delete_at(pos)
29
+ def parse_argv!(argv)
30
+ @filenames = []
31
+
32
+ OptionParser.new do |parser|
33
+ parser.banner = "Usage: dotenv [options]"
34
+ parser.separator ""
35
+ add_options(parser)
36
+ end.parse!(argv)
37
+
38
+ @filenames
39
+ end
40
+
41
+ def add_options(parser)
42
+ add_files_option(parser)
43
+ add_help_option(parser)
44
+ add_version_option(parser)
45
+ end
46
+
47
+ def add_files_option(parser)
48
+ parser.on("-f FILES", Array, "List of env files to parse") do |list|
49
+ @filenames = list
50
+ end
51
+ end
52
+
53
+ def add_help_option(parser)
54
+ parser.on("-h", "--help", "Display help") do
55
+ puts parser
56
+ exit
57
+ end
58
+ end
59
+
60
+ def add_version_option(parser)
61
+ parser.on("-v", "--version", "Show version") do
62
+ puts "dotenv #{Dotenv::VERSION}"
63
+ exit
64
+ end
34
65
  end
35
66
  end
36
67
  end
@@ -1,3 +1,3 @@
1
1
  module Dotenv
2
- VERSION = "2.6.0".freeze
2
+ VERSION = "2.7.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-05 00:00:00.000000000 Z
11
+ date: 2019-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -92,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.7.6
95
+ rubygems_version: 3.0.1
97
96
  signing_key:
98
97
  specification_version: 4
99
98
  summary: Loads environment variables from `.env`.