def self.compile!(input_filename, output_filename, plogic_filename=nil, lang='ruby', toppings={})
input = File.open(input_filename) { |f| f.flock(File::LOCK_SH); f.read() }
plogic = nil
if plogic_filename && FileTest.exist?(plogic_filename)
plogic = File.open(plogic_filename) { |f| f.flock(File::LOCK_SH); f.read() }
end
compiler = Kwartz::Compiler.new(lang, toppings)
output = compiler.compile(input, plogic)
File.open(output_filename, "w") { |f| f.flock(File::LOCK_EX); f.write(output) }
return output
end