class Object

Public Instance Methods

aargh(message, exit_code = nil) click to toggle source
# File bin/edicta, line 12
def aargh(message, exit_code = nil)
  $stderr.puts message
  exit exit_code unless exit_code.nil?
end
check(lines, look_for, edicts, counter, output) click to toggle source
# File bin/edicta, line 109
def check(lines, look_for, edicts, counter, output)
  return if dict(lines, look_for, edicts, counter)
  return unless env(:text)
  lines.each { |line| output.puts(line) }
end
default_env(var, value) click to toggle source
# File bin/edicta, line 29
def default_env(var, value)
  v = env(var)
  env(var, value) if v.nil?
end
dict(lines, look_for, edicts, counter) click to toggle source
# File bin/edicta, line 86
def dict(lines, look_for, edicts, counter)
  return false if lines.empty?
  begin
    aargh("Decoding #{counter - lines.length}-#{counter - 1}") if env(:verbose)
    contents = YAML.safe_load(lines.join)
  rescue StandardError
    aargh('Failed.') if env(:verbose) && !env(:text)
    return false
  end
  return false unless contents.is_a? Hash
  return true if env(:text) # Result will go unused.
  contents.each_pair do |k, v|
    next unless look_for[k]
    aargh("Found #{k}") if env(:verbose)
    aargh("Duplicate key: #{k}", 2) if env(:duplicate) && edicts.key?(k)
    edicts[k] = v
    if look_for.default && !look_for.key?(k)
      look_for[k] = edicts.size # Retain order in which encountered.
    end
  end
  true
end
env(var, value = nil) click to toggle source
# File bin/edicta, line 17
def env(var, value = nil)
  k = var.to_s.upcase
  ENV[k] = { false => '0', true => '1' }.fetch(value, value) unless value.nil?
  v = ENV.fetch(k, nil)
  case v
  when '0' then false
  when '1' then true
  else
    v
  end
end
file(val, default, mode) click to toggle source
# File bin/edicta, line 72
def file(val, default, mode)
  val.empty? ? default : File.open(val, mode)
rescue StandardError
  aargh "Failed to open for #{mode}: #{val}", 1
end