env_parser 1.3.0 → 1.3.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.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +1 -1
  3. data/.rubocop.yml +25 -30
  4. data/.ruby-version +1 -1
  5. data/Gemfile.lock +51 -43
  6. data/README.md +1 -1
  7. data/docs/EnvParser/AutoregisterFileNotFound.html +9 -10
  8. data/docs/EnvParser/Error.html +8 -9
  9. data/docs/EnvParser/TypeAlreadyDefinedError.html +8 -9
  10. data/docs/EnvParser/Types/BaseTypes.html +12 -11
  11. data/docs/EnvParser/Types/ChronologyTypes.html +10 -9
  12. data/docs/EnvParser/Types/InternetTypes.html +10 -9
  13. data/docs/EnvParser/Types.html +9 -10
  14. data/docs/EnvParser/UnknownTypeError.html +8 -9
  15. data/docs/EnvParser/UnparseableAutoregisterSpec.html +9 -10
  16. data/docs/EnvParser/ValueNotAllowedError.html +10 -11
  17. data/docs/EnvParser/ValueNotConvertibleError.html +8 -10
  18. data/docs/EnvParser.html +123 -186
  19. data/docs/_index.html +8 -10
  20. data/docs/class_list.html +2 -2
  21. data/docs/css/style.css +3 -2
  22. data/docs/file.README.html +254 -284
  23. data/docs/file_list.html +2 -2
  24. data/docs/frames.html +2 -2
  25. data/docs/index.html +254 -284
  26. data/docs/js/app.js +14 -3
  27. data/docs/method_list.html +3 -11
  28. data/docs/top-level-namespace.html +7 -85
  29. data/env_parser.gemspec +14 -14
  30. data/lib/env_parser/errors.rb +18 -18
  31. data/lib/env_parser/types/base_types.rb +69 -69
  32. data/lib/env_parser/types/chronology_types.rb +54 -54
  33. data/lib/env_parser/types/internet_types.rb +51 -51
  34. data/lib/env_parser/types.rb +2 -2
  35. data/lib/env_parser/version.rb +1 -1
  36. data/lib/env_parser.rb +206 -217
  37. data/spec/env_parser/types/base_types_spec.rb +98 -0
  38. data/spec/env_parser/types/chronology_types_spec.rb +49 -0
  39. data/spec/env_parser/types/internet_types_spec.rb +45 -0
  40. data/spec/env_parser_spec.rb +192 -0
  41. data/spec/spec_helper.rb +14 -0
  42. metadata +54 -50
  43. data/.travis.yml +0 -5
@@ -0,0 +1,98 @@
1
+ RSpec.describe EnvParser::Types::BaseTypes do
2
+ it 'can parse strings' do
3
+ expect(EnvParser.parse(nil, as: :string)).to eq('')
4
+ expect(EnvParser.parse('', as: :string)).to eq('')
5
+
6
+ expect(EnvParser.parse('value', as: :string)).to eq('value')
7
+ end
8
+
9
+ it 'can parse symbols' do
10
+ expect(EnvParser.parse(nil, as: :symbol)).to eq(:'')
11
+ expect(EnvParser.parse('', as: :symbol)).to eq(:'')
12
+
13
+ expect(EnvParser.parse('value', as: :symbol)).to eq(:value)
14
+ end
15
+
16
+ it 'can parse booleans' do
17
+ expect(EnvParser.parse(nil, as: :boolean)).to eq(false)
18
+ expect(EnvParser.parse('', as: :boolean)).to eq(false)
19
+
20
+ expect(EnvParser.parse('0', as: :boolean)).to eq(false)
21
+ expect(EnvParser.parse('f', as: :boolean)).to eq(false)
22
+ expect(EnvParser.parse('false', as: :boolean)).to eq(false)
23
+
24
+ expect(EnvParser.parse('1', as: :boolean)).to eq(true)
25
+ expect(EnvParser.parse('t', as: :boolean)).to eq(true)
26
+ expect(EnvParser.parse('true', as: :boolean)).to eq(true)
27
+ end
28
+
29
+ it 'can parse integers' do
30
+ %i[int integer].each do |type|
31
+ expect(EnvParser.parse(nil, as: type)).to eq(0)
32
+ expect(EnvParser.parse('', as: type)).to eq(0)
33
+
34
+ expect(EnvParser.parse('-1.9', as: type)).to eq(-1)
35
+ expect(EnvParser.parse('-1.1', as: type)).to eq(-1)
36
+ expect(EnvParser.parse('-1', as: type)).to eq(-1)
37
+ expect(EnvParser.parse('0', as: type)).to eq(0)
38
+ expect(EnvParser.parse('1', as: type)).to eq(1)
39
+ expect(EnvParser.parse('1.1', as: type)).to eq(1)
40
+ expect(EnvParser.parse('1.9', as: type)).to eq(1)
41
+
42
+ expect(EnvParser.parse('non-numeric', as: type)).to eq(0)
43
+ end
44
+ end
45
+
46
+ it 'can parse floats' do
47
+ %i[float decimal number].each do |type|
48
+ expect(EnvParser.parse(nil, as: type)).to eq(0.0)
49
+ expect(EnvParser.parse('', as: type)).to eq(0.0)
50
+
51
+ expect(EnvParser.parse('-1.9', as: type)).to eq(-1.9)
52
+ expect(EnvParser.parse('-1.1', as: type)).to eq(-1.1)
53
+ expect(EnvParser.parse('-1', as: type)).to eq(-1.0)
54
+ expect(EnvParser.parse('0', as: type)).to eq(0.0)
55
+ expect(EnvParser.parse('1', as: type)).to eq(1.0)
56
+ expect(EnvParser.parse('1.1', as: type)).to eq(1.1)
57
+ expect(EnvParser.parse('1.9', as: type)).to eq(1.9)
58
+
59
+ expect(EnvParser.parse('non-numeric', as: type)).to eq(0.0)
60
+ end
61
+ end
62
+
63
+ it 'can parse json' do
64
+ expect(EnvParser.parse(nil, as: :json)).to eq(nil)
65
+ expect(EnvParser.parse('', as: :json)).to eq(nil)
66
+
67
+ expect { EnvParser.parse('non-json-parseable string', as: :json) }.to raise_error(JSON::ParserError)
68
+
69
+ expect(EnvParser.parse('null', as: :json)).to eq(nil)
70
+ expect(EnvParser.parse('true', as: :json)).to eq(true)
71
+ expect(EnvParser.parse('false', as: :json)).to eq(false)
72
+ expect(EnvParser.parse('1', as: :json)).to eq(1)
73
+ expect(EnvParser.parse('1.1', as: :json)).to eq(1.1)
74
+ expect(EnvParser.parse('"some string"', as: :json)).to eq('some string')
75
+ expect(EnvParser.parse('["one", 2, "three"]', as: :json)).to eq(['one', 2, 'three'])
76
+ expect(EnvParser.parse('{ "one": 1, "two": 2, "three": "three" }', as: :json)).to eq('one' => 1, 'two' => 2, 'three' => 'three')
77
+ end
78
+
79
+ it 'can parse arrays' do
80
+ expect(EnvParser.parse(nil, as: :array)).to eq([])
81
+ expect(EnvParser.parse('', as: :array)).to eq([])
82
+
83
+ expect { EnvParser.parse('non-json-parseable string', as: :array) }.to raise_error(JSON::ParserError)
84
+ expect { EnvParser.parse('"parseable json, but not an array"', as: :array) }.to raise_error(EnvParser::ValueNotConvertibleError)
85
+
86
+ expect(EnvParser.parse('["one", 2, "three"]', as: :array)).to eq(['one', 2, 'three'])
87
+ end
88
+
89
+ it 'can parse hashes' do
90
+ expect(EnvParser.parse(nil, as: :hash)).to eq({})
91
+ expect(EnvParser.parse('', as: :hash)).to eq({})
92
+
93
+ expect { EnvParser.parse('non-json-parseable string', as: :hash) }.to raise_error(JSON::ParserError)
94
+ expect { EnvParser.parse('"parseable json, but not a hash"', as: :hash) }.to raise_error(EnvParser::ValueNotConvertibleError)
95
+
96
+ expect(EnvParser.parse('{ "one": 1, "two": 2, "three": "three" }', as: :hash)).to eq('one' => 1, 'two' => 2, 'three' => 'three')
97
+ end
98
+ end
@@ -0,0 +1,49 @@
1
+ RSpec.describe EnvParser::Types::ChronologyTypes do
2
+ it 'can parse dates' do
3
+ expect(EnvParser.parse(nil, as: :date)).to eq(nil)
4
+ expect(EnvParser.parse('', as: :date)).to eq(nil)
5
+
6
+ expect(EnvParser.parse('11/05/1955 06:00', as: :date)).to eq(Date.new(1955, 11, 5))
7
+ expect(EnvParser.parse('11/12/1955 22:04', as: :date)).to eq(Date.new(1955, 11, 12))
8
+ expect(EnvParser.parse('1885-09-02 08:00', as: :date)).to eq(Date.new(1885, 9, 2))
9
+ expect(EnvParser.parse('1885-09-07', as: :date)).to eq(Date.new(1885, 9, 7))
10
+
11
+ expect(EnvParser.parse('tomorrow', as: :date)).to eq(Date.today + 1.day)
12
+
13
+ expect { EnvParser.parse('not a date', as: :date) }.to raise_error(EnvParser::ValueNotConvertibleError)
14
+ expect { EnvParser.parse('2018-02-29', as: :date) }.to raise_error(EnvParser::ValueNotConvertibleError)
15
+ end
16
+
17
+ it 'can parse times' do
18
+ %i[time datetime].each do |type|
19
+ expect(EnvParser.parse(nil, as: type)).to eq(nil)
20
+ expect(EnvParser.parse('', as: type)).to eq(nil)
21
+
22
+ expect(EnvParser.parse('11/05/1955 06:00', as: type)).to eq(Time.new(1955, 11, 5, 6, 0))
23
+ expect(EnvParser.parse('11/12/1955 22:04', as: type)).to eq(Time.new(1955, 11, 12, 22, 4))
24
+ expect(EnvParser.parse('1885-09-02 08:00', as: type)).to eq(Time.new(1885, 9, 2, 8, 0))
25
+ expect(EnvParser.parse('1885-09-07', as: type)).to eq(Time.new(1885, 9, 7))
26
+
27
+ expect(EnvParser.parse('today at 07:15', as: type)).to eq(Date.today + 7.hours + 15.minutes)
28
+
29
+ expect { EnvParser.parse('not a date/time', as: type) }.to raise_error(EnvParser::ValueNotConvertibleError)
30
+ expect { EnvParser.parse('today at 33:25', as: type) }.to raise_error(EnvParser::ValueNotConvertibleError)
31
+ end
32
+ end
33
+
34
+ it 'can parse durations' do
35
+ expect(EnvParser.parse(nil, as: :duration)).to eq(nil)
36
+ expect(EnvParser.parse('', as: :duration)).to eq(nil)
37
+
38
+ expect(EnvParser.parse('12 seconds', as: :duration)).to eq(12)
39
+ expect(EnvParser.parse('5 minutes', as: :duration)).to eq(5 * 60)
40
+ expect(EnvParser.parse('24 hours', as: :duration)).to eq(24 * 60 * 60)
41
+ expect(EnvParser.parse('1.5 days', as: :duration)).to eq(1.5 * 24 * 60 * 60)
42
+ expect(EnvParser.parse('1 day', as: :duration)).to eq(24 * 60 * 60)
43
+ expect(EnvParser.parse('2 weeks, 1 day', as: :duration)).to eq((2 * 7 * 24 * 60 * 60) + (24 * 60 * 60))
44
+ expect(EnvParser.parse('P2W1DT3H', as: :duration)).to eq((2 * 7 * 24 * 60 * 60) + (24 * 60 * 60) + (3 * 60 * 60))
45
+
46
+ expect { EnvParser.parse('not a duration', as: :duration) }.to raise_error(EnvParser::ValueNotConvertibleError)
47
+ expect { EnvParser.parse('37 dinglebops', as: :duration) }.to raise_error(EnvParser::ValueNotConvertibleError)
48
+ end
49
+ end
@@ -0,0 +1,45 @@
1
+ RSpec.describe EnvParser::Types::InternetTypes do
2
+ it 'can parse ipv4 addresses' do
3
+ expect(EnvParser.parse(nil, as: :ipv4_address)).to eq(nil)
4
+ expect(EnvParser.parse('', as: :ipv4_address)).to eq(nil)
5
+
6
+ expect(EnvParser.parse('localhost', as: :ipv4_address)).to eq('127.0.0.1')
7
+ expect(EnvParser.parse('192.168.000.001', as: :ipv4_address)).to eq('192.168.0.1')
8
+
9
+ expect { EnvParser.parse('not an ip address', as: :ipv4_address) }.to raise_error(EnvParser::ValueNotConvertibleError)
10
+ end
11
+
12
+ it 'can parse ipv6 addresses' do
13
+ expect(EnvParser.parse(nil, as: :ipv6_address)).to eq(nil)
14
+ expect(EnvParser.parse('', as: :ipv6_address)).to eq(nil)
15
+
16
+ expect(EnvParser.parse('::', as: :ipv6_address)).to eq('::')
17
+ expect(EnvParser.parse('::1', as: :ipv6_address)).to eq('::1')
18
+ expect(EnvParser.parse('abcd::abcd:abcd', as: :ipv6_address)).to eq('abcd::abcd:abcd')
19
+
20
+ expect { EnvParser.parse('not an ip address', as: :ipv6_address) }.to raise_error(EnvParser::ValueNotConvertibleError)
21
+ end
22
+
23
+ it 'can parse network ports' do
24
+ %i[network_port port].each do |type|
25
+ expect(EnvParser.parse(nil, as: type)).to eq(nil)
26
+ expect(EnvParser.parse('', as: type)).to eq(nil)
27
+
28
+ expect(EnvParser.parse('80', as: type)).to eq(80)
29
+ expect(EnvParser.parse('8080', as: type)).to eq(8080)
30
+
31
+ expect { EnvParser.parse('99999999', as: type) }.to raise_error(EnvParser::ValueNotAllowedError)
32
+ expect { EnvParser.parse('not a port number', as: type) }.to raise_error(EnvParser::ValueNotConvertibleError)
33
+ end
34
+ end
35
+
36
+ it 'can parse email addresses' do
37
+ expect(EnvParser.parse(nil, as: :email_address)).to eq(nil)
38
+ expect(EnvParser.parse('', as: :email_address)).to eq(nil)
39
+
40
+ expect(EnvParser.parse('email@example.com', as: :email_address)).to eq('email@example.com')
41
+ expect(EnvParser.parse('some.user@gmail.com', as: :email_address)).to eq('some.user@gmail.com')
42
+
43
+ expect { EnvParser.parse('not an email address', as: :email_address) }.to raise_error(EnvParser::ValueNotConvertibleError)
44
+ end
45
+ end
@@ -0,0 +1,192 @@
1
+ require 'tempfile'
2
+
3
+ module Sample; end
4
+
5
+ RSpec.describe EnvParser do
6
+ it 'has a version number' do
7
+ expect(EnvParser::VERSION).not_to be nil
8
+ end
9
+
10
+ describe 'EnvParser.define_type' do
11
+ it 'exists' do
12
+ expect(EnvParser).to respond_to(:define_type)
13
+ end
14
+
15
+ it 'can register new types' do
16
+ EnvParser.define_type(:thirty) { |_| 30 }
17
+ expect(EnvParser.parse('dummy value', as: :thirty)).to eq(30)
18
+ end
19
+ end
20
+
21
+ describe 'EnvParser.parse' do
22
+ it 'exists' do
23
+ expect(EnvParser).to respond_to(:parse)
24
+ end
25
+
26
+ it 'returns the requested default when necessary' do
27
+ expect(EnvParser.parse(nil, as: :integer, if_unset: 25)).to eq(25)
28
+ expect(EnvParser.parse('', as: :integer, if_unset: 25)).to eq(25)
29
+
30
+ expect(EnvParser.parse('99', as: :float, if_unset: 25.0)).to eq(99.0)
31
+ end
32
+
33
+ it 'only allows values from a limited set' do
34
+ expect(EnvParser.parse('25', as: :integer, from_set: [20, 25, 30])).to eq(25)
35
+ expect { EnvParser.parse('25', as: :integer, from_set: [1, 2, 3]) }.to raise_error(EnvParser::ValueNotAllowedError)
36
+
37
+ expect(EnvParser.parse(nil, as: :integer, if_unset: 9, from_set: [1, 2, 3])).to eq(9)
38
+ end
39
+
40
+ it 'only allows values that pass user-defined validation' do
41
+ expect(EnvParser.parse('abc', as: :string)).to eq('abc')
42
+ expect(EnvParser.parse('abc', as: :string) { |_| true }).to eq('abc')
43
+ expect { EnvParser.parse('abc', as: :string) { |_| false } }.to raise_error(EnvParser::ValueNotAllowedError)
44
+
45
+ expect(EnvParser.parse('abc', as: :string)).to eq('abc')
46
+ expect(EnvParser.parse('abc', as: :string, validated_by: ->(_) { true })).to eq('abc')
47
+ expect { EnvParser.parse('abc', as: :string, validated_by: ->(_) { false }) }.to raise_error(EnvParser::ValueNotAllowedError)
48
+ end
49
+ end
50
+
51
+ describe 'EnvParse.register' do
52
+ it 'exists' do
53
+ expect(EnvParser).to respond_to(:register)
54
+ end
55
+
56
+ it 'ceates global constants' do
57
+ source_hash = { ABC: '123' }
58
+ EnvParser.register(:ABC, from: source_hash, as: :integer)
59
+ expect(ABC).to eq(123)
60
+ end
61
+
62
+ it 'creates module constants' do
63
+ source_hash = { XYZ: '456' }
64
+ EnvParser.register(:XYZ, from: source_hash, as: :integer, within: Sample)
65
+ expect(Sample::XYZ).to eq(456)
66
+ end
67
+
68
+ it 'will accept a hash keyed by variable names' do
69
+ source_hash = { FIRST: 'first', SECOND: '99', THIRD: 'third' }
70
+ EnvParser.register(
71
+ FIRST: { from: source_hash, as: :string, if_unset: 'no first' },
72
+ SECOND: { from: source_hash, as: :integer, if_unset: 'no second' },
73
+ THIRD: { from: source_hash, as: :string, if_unset: 'no third' },
74
+ FOURTH: { from: source_hash, as: :boolean, if_unset: 'no fourth' }
75
+ )
76
+
77
+ expect(FIRST).to eq('first')
78
+ expect(SECOND).to eq(99)
79
+ expect(THIRD).to eq('third')
80
+ expect(FOURTH).to eq('no fourth')
81
+ end
82
+ end
83
+
84
+ describe 'EnvParser.add_env_bindings' do
85
+ before(:context) { EnvParser.add_env_bindings }
86
+
87
+ it 'exists' do
88
+ expect(EnvParser).to respond_to(:add_env_bindings)
89
+ end
90
+
91
+ describe 'ENV.parse' do
92
+ it 'now exists' do
93
+ expect(ENV).to respond_to(:parse)
94
+ end
95
+
96
+ it 'interprets input values as ENV keys' do
97
+ ENV['ABC'] = '123'
98
+ expect(ENV.parse('ABC', as: :integer)).to eq(123)
99
+ expect(ENV.parse(:ABC, as: :integer)).to eq(123)
100
+ end
101
+ end
102
+
103
+ describe 'ENV.register' do
104
+ it 'now exists' do
105
+ expect(ENV).to respond_to(:register)
106
+ end
107
+
108
+ it 'ceates global constants' do
109
+ ENV['ABCD'] = '1234'
110
+ ENV.register(:ABCD, as: :integer)
111
+ expect(ABCD).to eq(1234)
112
+ end
113
+
114
+ it 'creates module constants' do
115
+ ENV['WXYZ'] = '5678'
116
+ ENV.register(:WXYZ, as: :integer, within: Sample)
117
+ expect(Sample::WXYZ).to eq(5678)
118
+ end
119
+
120
+ it 'will accept a hash keyed by variable names' do
121
+ ENV['FIFTH'] = 'fifth'
122
+ ENV['SIXTH'] = '99'
123
+ ENV['SEVENTH'] = 'seventh'
124
+
125
+ ENV.register(
126
+ FIFTH: { as: :string, if_unset: 'no fifth' },
127
+ SIXTH: { as: :integer, if_unset: 'no sixth' },
128
+ SEVENTH: { as: :string, if_unset: 'no seventh' },
129
+ EIGHTH: { as: :boolean, if_unset: 'no eighth' }
130
+ )
131
+
132
+ expect(FIFTH).to eq('fifth')
133
+ expect(SIXTH).to eq(99)
134
+ expect(SEVENTH).to eq('seventh')
135
+ expect(EIGHTH).to eq('no eighth')
136
+ end
137
+ end
138
+ end
139
+
140
+ describe 'EnvParser.autoregister' do
141
+ it 'exists' do
142
+ expect(EnvParser).to respond_to(:autoregister)
143
+ end
144
+
145
+ it 'can autoregister constants' do
146
+ filename = Tempfile.open('EnvParser.autoregister.') do |file|
147
+ file.write <<~YAML.chomp
148
+ SOME_INT:
149
+ as: :integer
150
+ if_unset: 25
151
+
152
+ SOME_STRING:
153
+ as: :string
154
+ if_unset: "unexpected"
155
+
156
+ CLASS_CONSTANT:
157
+ as: :string
158
+ within: String
159
+ YAML
160
+
161
+ file.path
162
+ end
163
+
164
+ ENV['SOME_INT'] = '99'
165
+ ENV['SOME_STRING'] = 'twelve'
166
+ ENV['CLASS_CONSTANT'] = 'tricky'
167
+ EnvParser.autoregister filename
168
+
169
+ expect(SOME_INT).to eq(99)
170
+ expect(SOME_STRING).to eq('twelve')
171
+ expect(String::CLASS_CONSTANT).to eq('tricky')
172
+ end
173
+
174
+ it 'properly handles file-not-found' do
175
+ expect { EnvParser.autoregister 'nonexistent filename' }.to raise_error(EnvParser::AutoregisterFileNotFound)
176
+ end
177
+
178
+ it 'properly handles unparseable YAML' do
179
+ filename = Tempfile.open('EnvParser.autoregister.') do |file|
180
+ file.write <<~MALFORMED_YAML.chomp
181
+ SOME_INT:
182
+ as:
183
+ hello
184
+ MALFORMED_YAML
185
+
186
+ file.path
187
+ end
188
+
189
+ expect { EnvParser.autoregister filename }.to raise_error(EnvParser::UnparseableAutoregisterSpec)
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,14 @@
1
+ require 'bundler/setup'
2
+ require 'env_parser'
3
+
4
+ RSpec.configure do |config|
5
+ # Enable flags like --only-failures and --next-failure
6
+ config.example_status_persistence_file_path = '.rspec_status'
7
+
8
+ # Disable RSpec exposing methods globally on `Module` and `main`
9
+ config.disable_monkey_patching!
10
+
11
+ config.expect_with :rspec do |c|
12
+ c.syntax = :expect
13
+ end
14
+ end
metadata CHANGED
@@ -1,73 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nestor Custodio
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2022-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
19
+ version: 6.1.0
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: 6.1.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: chronic
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
33
+ version: '0'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: chronic_duration
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
47
+ version: '0'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec_junit_formatter
56
+ name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '2'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,41 +81,41 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: yard
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '3'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '3'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activesupport
98
+ name: rspec_junit_formatter
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 5.0.0
104
- type: :runtime
103
+ version: '0'
104
+ type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 5.0.0
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: chronic
112
+ name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
- type: :runtime
118
+ type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
@@ -123,20 +123,20 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: chronic_duration
126
+ name: yard
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
- type: :runtime
132
+ type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description:
139
+ description:
140
140
  email:
141
141
  - sakimorix@gmail.com
142
142
  executables: []
@@ -148,7 +148,6 @@ files:
148
148
  - ".rspec"
149
149
  - ".rubocop.yml"
150
150
  - ".ruby-version"
151
- - ".travis.yml"
152
151
  - ".yardopts"
153
152
  - Gemfile
154
153
  - Gemfile.lock
@@ -199,28 +198,33 @@ files:
199
198
  - lib/env_parser/types/chronology_types.rb
200
199
  - lib/env_parser/types/internet_types.rb
201
200
  - lib/env_parser/version.rb
201
+ - spec/env_parser/types/base_types_spec.rb
202
+ - spec/env_parser/types/chronology_types_spec.rb
203
+ - spec/env_parser/types/internet_types_spec.rb
204
+ - spec/env_parser_spec.rb
205
+ - spec/spec_helper.rb
202
206
  homepage: https://github.com/nestor-custodio/env_parser
203
207
  licenses:
204
208
  - MIT
205
- metadata: {}
206
- post_install_message:
209
+ metadata:
210
+ rubygems_mfa_required: 'true'
211
+ post_install_message:
207
212
  rdoc_options: []
208
213
  require_paths:
209
214
  - lib
210
215
  required_ruby_version: !ruby/object:Gem::Requirement
211
216
  requirements:
212
- - - ">="
217
+ - - "~>"
213
218
  - !ruby/object:Gem::Version
214
- version: '0'
219
+ version: '3.0'
215
220
  required_rubygems_version: !ruby/object:Gem::Requirement
216
221
  requirements:
217
222
  - - ">="
218
223
  - !ruby/object:Gem::Version
219
224
  version: '0'
220
225
  requirements: []
221
- rubyforge_project:
222
- rubygems_version: 2.6.13
223
- signing_key:
226
+ rubygems_version: 3.2.33
227
+ signing_key:
224
228
  specification_version: 4
225
229
  summary: A tool for painless parsing and validation of environment variables.
226
230
  test_files: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.2
5
- before_install: gem install bundler -v 1.16.0