class Vagrant::RsVagrantShim::Provisioners::RsVagrantShim::Config
Attributes
one_time_runlist_file[R]
run_list_dir[RW]
shim_dir[RW]
Public Instance Methods
validate(env, errors)
click to toggle source
TODO: Better error handling, verify shim dir and runlist dir exist, catch json errors when parsing runlists
Calls superclass method
# File lib/rs_vagrant_shim/vagrant/rs_vagrant_shim/provisioners/rs_vagrant_shim.rb, line 33 def validate(env, errors) errors.add(I18n.t("vagrant.config.rs_vagrant_shim.shim_dir_missing")) if !@shim_dir || @shim_dir.empty? errors.add(I18n.t("vagrant.config.rs_vagrant_shim.run_list_dir_missing")) if !@run_list_dir || @run_list_dir.empty? if @shim_dir && !@shim_dir.empty? && @run_list_dir && !@run_list_dir.empty? node_js_file = File.join(Dir.pwd, @shim_dir, 'node.js') dispatch_dir = File.join(Dir.pwd, @shim_dir, 'dispatch') FileUtils.mkdir_p dispatch_dir unless File.directory? dispatch_dir dispatch_files = Dir.entries(dispatch_dir).reject{|f| /^\.+/ =~ f}.sort_by{|f| File.mtime(File.join(dispatch_dir, f))} runlist = JSON.parse(File.read(File.join(Dir.pwd, @run_list_dir, 'default.json'))) if File.exist? node_js_file runlist.merge! JSON.parse(File.read(node_js_file))["normal"] end # A specified runlist trumps all, but still inherits from default if ENV['runlist'] runlist_file = File.join(Dir.pwd, @run_list_dir, "#{ENV['runlist']}.json") runlist.merge!(JSON.parse(File.read(runlist_file))) if File.exist? runlist_file elsif dispatch_files.length > 0 dispatch_file = File.join(dispatch_dir, dispatch_files.first) runlist.merge!(JSON.parse(File.read(dispatch_file))) @one_time_runlist_file = dispatch_file end @json = {:rs_vagrant_shim => to_hash}.merge(runlist) @run_list = runlist['run_list'] end super(env, errors) end