Skip to content

Instantly share code, notes, and snippets.

@lawliet89
Created May 28, 2021 08:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lawliet89/2e69ecba5646bafacab2947d8087413c to your computer and use it in GitHub Desktop.
Save lawliet89/2e69ecba5646bafacab2947d8087413c to your computer and use it in GitHub Desktop.
Vault Token Helper
#!/usr/bin/env ruby
require 'json'
require 'date'
unless ENV['VAULT_ADDR']
STDERR.puts "No VAULT_ADDR environment variable set. Set it and run me again!"
exit 100
end
begin
tokens = JSON.parse(File.read("#{ENV['HOME']}/.vault_tokens"))
rescue Errno::ENOENT => e
# file doesn't exist so create a blank hash for it
tokens = {}
end
write = true
case ARGV.first
when 'get'
print tokens[ENV['VAULT_ADDR']] if tokens[ENV['VAULT_ADDR']]
write = false
when 'store'
tokens[ENV['VAULT_ADDR']] = STDIN.read
when 'erase'
tokens.delete!(ENV['VAULT_ADDR'])
end
log = "#{ENV['HOME']}/.vault-token-helper.log"
begin
log_size = File.size(log)
rescue Errno::ENOENT => e
log_size = 0
end
File.write(log, "#{DateTime.now()}: #{ARGV.first} #{ENV['VAULT_ADDR']} #{tokens.key?(ENV['VAULT_ADDR'])}\n", log_size || 0, mode: 'a')
if write
File.open("#{ENV['HOME']}/.vault_tokens", 'w') { |file| file.write(tokens.to_json) }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment