dotenv 2.7.0 → 2.7.1

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
  SHA256:
3
- metadata.gz: fadc1aaf858a18707131513d5fa3dc015a6c6cd52f6402a92a873ea8b9bb1cda
4
- data.tar.gz: c07851bf8fa4dcd429420a416f099a1202e2790937413d96d1861a7e1580056e
3
+ metadata.gz: '0992bc73a32f12b64e16572e15cbde78e9767730ed5aae4ea2e986e8ef98d81f'
4
+ data.tar.gz: 3c9209567d61c87b38a6077550a9c489f3b3b5d441c247ca6563a17ac91f3923
5
5
  SHA512:
6
- metadata.gz: 3815788d3a7f2527dc89c57e15c67cf10bcdf7dd6d12ddb2f4c5eadc5be3c98ab55fd90077a2df829b431b4ce36c04e1e7a3f484f728f7fd498df85d41cc1c73
7
- data.tar.gz: 15788c3ecc0ab48db28ff231d4a2bc4a79c8d52786dd0994b5c3839aa709bd58b541205f8683d0dd4ad7101f6d3ca604f590814979165d0adffcce7b8fd5be13
6
+ metadata.gz: c3109086cd8ad5b552bca4d4f219fe2a6e670eb66430c034010be2e8e60bda81c177e80f0a0c32be01c13c3509252d924e4aa40c4916039a9867c6801045eb64
7
+ data.tar.gz: 2b59d23bde10b3d1521b681aa04cad979d127c965610c1e9995f12b3e14fa4d0bbb6e56485fbe5ff2bf3cc3eb12fc8c16b156b59ea04c38b41f95ca73881c913
@@ -6,10 +6,12 @@ module Dotenv
6
6
  # The CLI is a class responsible of handling all the command line interface
7
7
  # logic.
8
8
  class CLI
9
- attr_reader :argv
9
+ attr_reader :argv, :exec_args, :parser_args, :filenames
10
10
 
11
11
  def initialize(argv = [])
12
12
  @argv = argv.dup
13
+ @filenames = []
14
+ @flag_matchers = []
13
15
  end
14
16
 
15
17
  def run
@@ -20,48 +22,71 @@ module Dotenv
20
22
  rescue Errno::ENOENT => e
21
23
  abort e.message
22
24
  else
23
- exec(*@argv) unless @argv.empty?
25
+ exec(*@exec_args) unless @exec_args.empty?
24
26
  end
25
27
  end
26
28
 
27
29
  private
28
30
 
29
31
  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)
32
+ parser = create_option_parser
33
+ add_options(parser, @flag_matchers)
34
+ @parser_args, @exec_args = split_argv(argv.join(" "), @flag_matchers)
35
+ parser.parse! @parser_args
37
36
 
38
37
  @filenames
39
38
  end
40
39
 
41
- def add_options(parser)
42
- add_files_option(parser)
43
- add_help_option(parser)
44
- add_version_option(parser)
40
+ def add_options(parser, flag_matchers)
41
+ add_files_option(parser, flag_matchers)
42
+ add_help_option(parser, flag_matchers)
43
+ add_version_option(parser, flag_matchers)
45
44
  end
46
45
 
47
- def add_files_option(parser)
46
+ def add_files_option(parser, flag_matchers)
47
+ flag_matchers.push("-f \\S+")
48
48
  parser.on("-f FILES", Array, "List of env files to parse") do |list|
49
49
  @filenames = list
50
50
  end
51
51
  end
52
52
 
53
- def add_help_option(parser)
53
+ def add_help_option(parser, flag_matchers)
54
+ flag_matchers.push("-h", "--help")
54
55
  parser.on("-h", "--help", "Display help") do
55
56
  puts parser
56
57
  exit
57
58
  end
58
59
  end
59
60
 
60
- def add_version_option(parser)
61
+ def add_version_option(parser, flag_matchers)
62
+ flag_matchers.push("-v", "--version")
61
63
  parser.on("-v", "--version", "Show version") do
62
64
  puts "dotenv #{Dotenv::VERSION}"
63
65
  exit
64
66
  end
65
67
  end
68
+
69
+ # Detect dotenv flags vs executable args so we can parse properly and still
70
+ # take advantage of OptionParser for dotenv flags
71
+ def split_argv(arg_string, matchers)
72
+ matcher = /^((?:#{matchers.join("|")})\s?)?(.+)?$/
73
+ data = matcher.match(arg_string)
74
+ dotenv_args = []
75
+ exec_args = []
76
+
77
+ unless data.nil?
78
+ dotenv_args = (!data[1].nil? ? data[1].split(" ") : [])
79
+ exec_args = (!data[2].nil? ? data[2].split(" ") : [])
80
+ end
81
+
82
+ [dotenv_args, exec_args]
83
+ end
84
+
85
+ def create_option_parser
86
+ OptionParser.new do |parser|
87
+ parser.banner = "Usage: dotenv [options]"
88
+ parser.separator ""
89
+ end
90
+ end
66
91
  end
67
92
  end
@@ -1,3 +1,3 @@
1
1
  module Dotenv
2
- VERSION = "2.7.0".freeze
2
+ VERSION = "2.7.1".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.7.0
4
+ version: 2.7.1
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-02-22 00:00:00.000000000 Z
11
+ date: 2019-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake