#!/usr/bin/ruby

require 'bundler/setup'
require 'psych'

require 'mmi'
require 'mmi/interactive'

CLI::UI::StdoutRouter.enable

def processor(file)
	content = Psych.load_file(file)
	
	begin
		Mmi::ModFileProcessor.new(content)
	rescue Mmi::ValidationError => e
		puts e
		Kernel.exit 1
	end
end

if ARGV.length>0
	file         = ARGV.shift
	action_param = ARGV.shift
	action       = action_param.nil? ? :install : action_param.to_sym
	
	case action
	when :install
		processor(file).install
	when :validate
		processor(file)
		
		puts 'File is valid.'
	when :update
		Mmi::Interactive.update(processor(file), file)
	else
		STDERR.puts "Unknown action: #{action_param.inspect}."
		Kernel.exit 1
	end
else
	puts 'No file given.'
	Kernel.exit 1
end