require 'fileutils'
raise unless ARGV.length == 4
template_file_name = ARGV.shift
output_directory = ARGV.shift
lang_abbrev = ARGV.shift
module_name   = ARGV.shift

template = File.read(template_file_name)
template.gsub!(/LANGNAME/, lang_abbrev.upcase)
template.gsub!(/langname/, lang_abbrev.downcase)
template.gsub!(/LangName/, module_name)

c_file_name = File.join( output_directory, lang_abbrev + ".c" )
FileUtils.rm_f(c_file_name)
File.open(c_file_name, "w") {|f|
#  f.printf("/* %s generated automatically from %s */\n",
#           c_file_name, template_file_name)
  f.print template
}
#File.chmod(0444, c_file_name)