getenv 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 +7 -0
- data/getenv.rb +46 -0
- data/getenv_spec.rb +67 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 499cb457768257951b13ae681c4467ae512b6cb187a6be0e045ddf39f737944b
|
4
|
+
data.tar.gz: ca919fef327a08163c7377c7549efc92638893935cf11fc7a4826ba8166b0fab
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9591ab0557d2c7fce18d87ec40c063ec7db8fc66b7d92ffb92542e1c0436a7432396c288aab797c2f014ac35ca98b8280bbf3e01a82e1ac9d1e58014901a2f29
|
7
|
+
data.tar.gz: 972a9b140cd5789401501c462921317a051397c78d06ec9b89193a7d0b4568b5d2e79f5b9bfb7acccf31eeb731a04ae184021b3c98becdee243f303f3395e6c1
|
data/getenv.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# A simple wrapper around `ENV` that makes working with environment variables a
|
5
|
+
# bit cleaner.
|
6
|
+
#
|
7
|
+
# @example Getting a variable
|
8
|
+
# Getenv.HOME #=> "/Users/erlend"
|
9
|
+
# Getenv.LANG #=> "en_US.UTF-8"
|
10
|
+
#
|
11
|
+
# @example Setting a variable
|
12
|
+
# Getenv.LANG = "nb_NO.UTF-8" #=> "nb_NO.UTF-8"
|
13
|
+
# Getenv.LANG #=> "nb_NO.UTF-8"
|
14
|
+
#
|
15
|
+
# @example Check if a variable is set
|
16
|
+
# Getenv.LANG? #=> true
|
17
|
+
# Getenv.NOTHING #=> false
|
18
|
+
#
|
19
|
+
# @example Getting a variable or raise error if missing
|
20
|
+
# Getenv.LANG! #=> "en_US.UTF-8"
|
21
|
+
# Getenv.NOTHING! #=> raises Getenv::Error (key not found `NOTHING`)
|
22
|
+
module Getenv
|
23
|
+
class Error < StandardError; end
|
24
|
+
|
25
|
+
class << self
|
26
|
+
def method_missing(meth, value = nil)
|
27
|
+
key = meth.to_s
|
28
|
+
suffix = key[-1]
|
29
|
+
key = key[0..-2] if %w[? = !].include?(suffix)
|
30
|
+
|
31
|
+
case suffix
|
32
|
+
when '?' then ENV.key?(key)
|
33
|
+
when '=' then ENV[key] = value
|
34
|
+
when '!' then ENV.fetch(key) { raise Error, "key not found `#{key}`" }
|
35
|
+
else
|
36
|
+
key ? ENV[key] : super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Make {#respond_to?} always return true
|
42
|
+
def respond_to_missing?(*)
|
43
|
+
true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/getenv_spec.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require './getenv'
|
4
|
+
|
5
|
+
RSpec.describe Getenv do
|
6
|
+
let(:random_value) { rand(99).times.map { ('a'..'z').to_a.sample }.join }
|
7
|
+
|
8
|
+
describe 'getter' do
|
9
|
+
subject { Getenv.variable_name }
|
10
|
+
|
11
|
+
context 'when variable exists' do
|
12
|
+
before { ENV['variable_name'] = random_value }
|
13
|
+
|
14
|
+
it { is_expected.to eq random_value }
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when variable is missing' do
|
18
|
+
before { ENV.delete 'variable_name' }
|
19
|
+
|
20
|
+
it { is_expected.to eq nil }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'question' do
|
25
|
+
subject { Getenv.variable_name? }
|
26
|
+
|
27
|
+
context 'when variable exists' do
|
28
|
+
before { ENV['variable_name'] = random_value }
|
29
|
+
|
30
|
+
it { is_expected.to be true }
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when variable is missing' do
|
34
|
+
before { ENV.delete 'variable_name' }
|
35
|
+
|
36
|
+
it { is_expected.to be false }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'setter' do
|
41
|
+
subject { ENV['variable_name'] }
|
42
|
+
before { Getenv.variable_name = random_value }
|
43
|
+
|
44
|
+
it { is_expected.to eq random_value }
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'exclamation' do
|
48
|
+
context 'when variable exists' do
|
49
|
+
subject { Getenv.variable_name! }
|
50
|
+
before { ENV['variable_name'] = random_value }
|
51
|
+
|
52
|
+
it { is_expected.to eq random_value }
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when variable is missing' do
|
56
|
+
subject { -> { Getenv.variable_name! } }
|
57
|
+
before { ENV.delete 'variable_name' }
|
58
|
+
|
59
|
+
it { is_expected.to raise_error Getenv::Error }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#respond_to_missing?' do
|
64
|
+
subject { Getenv.respond_to? :variable_name }
|
65
|
+
it { is_expected.to be true }
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: getenv
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Erlend Finvåg
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '2.0'
|
19
|
+
name: bundler
|
20
|
+
prerelease: false
|
21
|
+
type: :development
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '10.0'
|
33
|
+
name: rake
|
34
|
+
prerelease: false
|
35
|
+
type: :development
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.0'
|
47
|
+
name: rspec
|
48
|
+
prerelease: false
|
49
|
+
type: :development
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.70'
|
61
|
+
name: rubocop
|
62
|
+
prerelease: false
|
63
|
+
type: :development
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.70'
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- erlend.finvag@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- getenv.rb
|
77
|
+
- getenv_spec.rb
|
78
|
+
homepage: https://github.com/erlend/getenv/
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
metadata: {}
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- "."
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
requirements: []
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 2.7.9
|
99
|
+
signing_key:
|
100
|
+
specification_version: 4
|
101
|
+
summary: Tiny gem for getting environment variables
|
102
|
+
test_files:
|
103
|
+
- getenv_spec.rb
|