require 'yaml'

def each_exy
 Dir.glob("*.exy") do |filename|
   yield filename
 end
end

def each_rb
 Dir.glob("*.rb") do |filename|
   yield filename
 end
end

def dependent_files recipe_file
 yaml = YAML.load(open(recipe_file).read)
 yaml["file"].map do |key, value|
   if value then
     value["file"]
   else
     key
   end
 end
end

def exy_file_task
 each_exy do |recipe|
   prerequisites = dependent_files recipe
   prerequisites.unshift recipe

   basename = File.basename(recipe,".exy")
   exename = "#{basename}.exe"

   desc "create #{exename}"
   file exename => prerequisites do |t|
     sh "exerb.bat -o #{t.name} #{recipe}"
   end
 end
end

rule ".exy" => ".rb" do |t|
 sh "mkexy.bat #{t.source}"
end

exy_file_task
