class ShieldVault::Commander
Public Instance Methods
add(key, value)
click to toggle source
# File lib/shield-vault.rb, line 35 def add(key, value) check_seal do current_values = get_current_values current_values[key.to_sym] = value Vault.logical.write(main_key, current_values) puts "Added/updated environment variable in #{main_key}: #{key}" end end
fetch()
click to toggle source
# File lib/shield-vault.rb, line 14 def fetch check_seal do values = get_current_values if values File.open(file_name, 'w+') do |file| file.truncate(0) values.keys.each do |key| file.puts "#{key}=#{values[key]}\n" end end puts "Fetched environment variables and updated local #{file_name} file" else puts "No environment variables set for #{main_key} environment." end end end
remove(key)
click to toggle source
# File lib/shield-vault.rb, line 56 def remove(key) check_seal do current_values = get_current_values if current_values[key.to_sym] current_values.delete key.to_sym if current_values.empty? Vault.logical.delete(main_key) else Vault.logical.write(main_key, current_values) end puts "Removed environment variable from #{main_key}: #{key}" else puts "Environment variable on #{main_key} does not exist: #{key}" end end end
update(key, value)
click to toggle source
# File lib/shield-vault.rb, line 48 def update(key, value) invoke :add end
Private Instance Methods
app()
click to toggle source
# File lib/shield-vault.rb, line 79 def app #assume current directory is app name if option not passed in options[:app] || Dir.pwd.split('/').last end
check_seal(&block)
click to toggle source
# File lib/shield-vault.rb, line 106 def check_seal(&block) if Vault.sys.seal_status.sealed puts "Vault is sealed. You must unseal it to interact with it." return end block.call end
environment()
click to toggle source
# File lib/shield-vault.rb, line 75 def environment options[:environment] || "development" end
file_name()
click to toggle source
# File lib/shield-vault.rb, line 93 def file_name @file_name ||= case environment when 'development' File.join(Dir.pwd, '.env') when 'staging' File.join(Dir.pwd, '.env.staging') when 'production' File.join(Dir.pwd, '.env.production') else nil end end
get_current_values()
click to toggle source
# File lib/shield-vault.rb, line 84 def get_current_values values = Vault.logical.read(main_key) values ? values.data : {} end
main_key()
click to toggle source
# File lib/shield-vault.rb, line 89 def main_key "secret/#{app}_#{environment}_env_vars" end