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