class SecretGarden::Map
Attributes
root[RW]
Public Class Methods
new(root: Dir.pwd)
click to toggle source
# File lib/secret_garden/map.rb, line 9 def initialize(root: Dir.pwd) self.root = root end
Public Instance Methods
[](name)
click to toggle source
# File lib/secret_garden/map.rb, line 17 def [](name) entries[name] end
defined?(name)
click to toggle source
# File lib/secret_garden/map.rb, line 13 def defined?(name) entries.key?(name) end
entries()
click to toggle source
# File lib/secret_garden/map.rb, line 25 def entries @entries ||= File.readlines(secretfile_path). map(&:strip). reject { |l| l =~ /^#/ }. map do |l| name, path, property = parse_secret l Secret.new name, path, property end. inject({}) do |hsh, secret| hsh.merge secret.name => secret end end
fetch_env_var(name)
click to toggle source
# File lib/secret_garden/map.rb, line 46 def fetch_env_var(name) unless val = ENV[name] STDERR.puts "WARNING: can't find environment variable #{name} needed in Secretfile" end val end
parse_secret(line)
click to toggle source
# File lib/secret_garden/map.rb, line 38 def parse_secret(line) name, path, property = line.scan(/([^\s]+)\s+([^:]+)(:.*)?/).first path.gsub!(/\$(?:([a-zA-Z_][a-zA-Z0-9_]*)|{([a-zA-Z_][a-zA-Z0-9_]*)})/) do fetch_env_var($1 || $2) end [name, path, property.to_s[1..-1]] end
secretfile_path()
click to toggle source
# File lib/secret_garden/map.rb, line 21 def secretfile_path @secretfile_path ||= File.join(root, 'Secretfile') end