39 lines
708 B
Crystal
39 lines
708 B
Crystal
|
module Senf
|
||
|
VERSION = {{ `shards version`.stringify.chomp.downcase }}
|
||
|
|
||
|
class SafeEnv
|
||
|
private property keys
|
||
|
|
||
|
def initialize(@keys = {} of String => String?)
|
||
|
end
|
||
|
|
||
|
def initialize(keys : Array(String))
|
||
|
@keys = {} of String => String?
|
||
|
keys.each { |k| self.<< k }
|
||
|
end
|
||
|
|
||
|
def <<(key : String) : self
|
||
|
@keys[key] = ENV[key]?
|
||
|
|
||
|
self
|
||
|
end
|
||
|
|
||
|
def []?(key : String) : String?
|
||
|
if @keys.has_key?(key)
|
||
|
@keys[key]?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def [](key : String) : String
|
||
|
if @keys.has_key?(key)
|
||
|
val = @keys[key]?
|
||
|
raise "ENV[#{key}] is nil" unless val
|
||
|
|
||
|
val
|
||
|
else
|
||
|
raise "No such key: #{key}"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|