vagrant/lib/hobo/env.rb

62 lines
1.4 KiB
Ruby
Raw Normal View History

2010-01-30 04:25:10 +00:00
require 'yaml'
2010-01-22 07:38:23 +00:00
module Hobo
class Env
HOME = File.expand_path('~/.hobo')
CONFIG = { File.join(HOME, 'config.yml') => '/config/default.yml' }
ENSURE = {
:files => CONFIG.merge({}), #additional files go mhia!
:dirs => [HOME] #additional dirs go mhia!
}
2010-01-26 08:01:17 +00:00
class << self
def load!
load_config!
load_uuid!
end
2010-01-26 08:01:17 +00:00
def ensure_directories
ENSURE[:dirs].each do |name|
Dir.mkdir(name) unless File.exists?(name)
end
2010-01-22 07:38:23 +00:00
end
2010-01-26 08:01:17 +00:00
def ensure_files
ENSURE[:files].each do |target, default|
File.copy(File.join(PROJECT_ROOT, default), target) unless File.exists?(target)
end
end
def load_config!
2010-01-26 08:01:17 +00:00
ensure_directories
ensure_files
HOBO_LOGGER.info "Loading config from #{CONFIG.keys.first}"
2010-01-30 06:39:45 +00:00
parsed = YAML.load_file(CONFIG.keys.first)
2010-01-26 08:01:17 +00:00
Hobo.config!(parsed)
2010-01-22 07:38:23 +00:00
end
def load_uuid!
@@persisted_uuid = load_dotfile
end
def load_dotfile(path=Pathname.new(Dir.pwd))
return nil if path.to_s == '/'
file = "#{path}/#{Hobo.config[:dotfile_name]}"
if File.exists?(file)
# TODO check multiple lines after the first for information
return File.open(file, 'r').first
end
load_dotfile(path.parent)
end
def persisted_uuid
@@persisted_uuid
end
2010-01-22 07:38:23 +00:00
end
end
end