def config(*args, &block)
unless defined?(@config)
require 'yaml' unless defined?(YAML)
if test(?s, config_path)
@config = Map.for(YAML.load(IO.read(config_path)))
else
config = args.last
lines =
case config
when Hash
config.to_yaml.split(/\n/)
when String
Util.unindent(config).split(/\n/)
else
[]
end
dash = lines.shift if lines.first.to_s =~ /^---/
FileUtils.mkdir_p(File.dirname(config_path))
open(config_path, 'w') do |fd|
fd.puts "## file: #{ config_path }"
fd.puts "#"
fd.puts
fd.puts lines
end
editor = ENV['EDITOR'] || ENV['EDIT'] || 'vi'
system("#{ editor.inspect } #{ config_path }")
@config = Map.for(YAML.load(IO.read(config_path)))
end
end
@config
end