#!/usr/bin/ruby -Ke
#
# (c)2005 Takuya NISHIMOTO (nishi@hil.t.u-tokyo.ac.jp)
#
# $Id: galatea,v 1.36 2005/12/14 09:15:36 nishi Exp $
#
# - galatea.conf 񤭴
# - $tmppath 롣桼ν񤭹߸¤ɬס
# - ./galatea -setup 򣱲¹Ԥ
# - ./galatea ǥƥ൯ư
#

load 'galatea.conf'

$ssm_conf_chaone = "#{$java_bin} -jar #{$chaone_jar} -e=EUC-JP"

$gdm_mkdfa_file = "#{$dmpath}/SRM/bin/mkdfa.pl"
$gdm_grammar_work_dir = "#{$tmppath}"

$srm_opt_h = "phone_m/binhmm.mono16"
$srm_opt_lv = "2000"

$srm_log_julian = "#{$tmppath}/julian.log"
$srm_tmp_grammar_prefix = "#{$tmppath}/_tmpgrammar"
$srm_log_xml2julgrm = "#{$tmppath}/xslt.log"
$srm_log_julgrm2dfa = "#{$tmppath}/mkdfa.log"
$srm_mkdfa_tmpdir = "#{$tmppath}"
$srm_java_bin = "#{$java_bin}"

$lang = "ja_JP.eucJP";

$env = "export LANG=#{$lang};export LC_ALL=#{$lang};export LD_LIBRARY_PATH=#{$ld_library_path};unset LD_PRELOAD"

$gdm = "cd #{$dmpath}/Modules; #{$java_bin} -jar #{$gdm_jar} -c gdm.conf"
$am_conf = "#{$dmpath}/Modules/am.conf";

def expand_path(uri)
  if /^http:/ =~ uri || /^\// =~ uri
    arg = uri
  else	
    arg = File.expand_path(uri)
  end
  return arg
end

def setup
  convert_skel_file("Modules/gdm.conf")
  convert_skel_file("SSM/chasenrc")
  convert_skel_file("SSM/ssm.conf")
  convert_skel_file("SRM/GRM_Config.pl")
  convert_skel_file("SRM/SRM_Config.pl")
  convert_skel_file("SRM/bin/mkdfa.pl")
end

def convert_skel_file(file)
  infile = open("#{$dmpath}/skel/#{file}")
  outfile = open("#{$dmpath}/#{file}", "w")
  print "writing #{$dmpath}/#{file}\n"
  infile.each { |line|
    line.gsub!( /@GDM_MKDFA_FILE@/, $gdm_mkdfa_file )
    line.gsub!( /@GDM_GRAMMAR_WORK_DIR@/, $gdm_grammar_work_dir )
    line.gsub!( /@SSM_CHASENRC_GRAMMAR@/, $ssm_chasenrc_grammar )
    line.gsub!( /@SSM_CONF_CHASEN@/, $ssm_conf_chasen )
    line.gsub!( /@SSM_CONF_CHAONE@/, $ssm_conf_chaone )
    line.gsub!( /@SRM_LOG_JULIAN@/, $srm_log_julian )
    line.gsub!( /@SRM_TMP_GRAMMAR_PREFIX@/, $srm_tmp_grammar_prefix )
    line.gsub!( /@SRM_JAVA_BIN@/, $srm_java_bin )
    line.gsub!( /@SRM_LOG_XML2JULGRM@/, $srm_log_xml2julgrm )
    line.gsub!( /@SRM_LOG_JULGRM2DFA@/, $srm_log_julgrm2dfa )
    line.gsub!( /@SRM_OPT_H@/, $srm_opt_h )
    line.gsub!( /@SRM_OPT_LV@/, $srm_opt_lv )
    line.gsub!( /@SRM_MKDFA_TMPDIR@/, $srm_mkdfa_tmpdir )
    outfile.puts(line)
  }
  infile.close
  outfile.close
end

def deltmp
  system "\\rm -f #{$tmppath}/*.pid"
  system "\\rm -f #{$tmppath}/_am*"
  system "\\rm -f #{$tmppath}/_tmp*"
  system "\\rm -f #{$tmppath}/*.log"
  system "\\rm -f #{$tmppath}/*.dtd"
  system "\\rm -f #{$tmppath}/*.dfa"
  system "\\rm -f #{$tmppath}/*.dict"
  system "\\rm -f #{$tmppath}/*.grammar"
  system "\\rm -f #{$tmppath}/*.term"
  system "\\rm -f #{$tmppath}/*.voca"
  system "\\rm -f #{$tmppath}/*.xml"
end

# main is from here
if ARGV[0] == '-p' && ARGV[1] != nil
  arg = expand_path(ARGV[1])
  cmd = "#{$env}; #{$gdm} -p #{$arg}"
  setup
  system cmd
  exit
elsif ARGV[0] == '-v'
  cmd = "#{$env}; #{$gdm} -v"
  setup
  system cmd
  exit
elsif ARGV[0] == '-setup'
  setup
  exit
elsif ARGV[0] == '-deltmp'
  deltmp
  exit
else
  if ARGV[0] != nil
    dm_arg = expand_path(ARGV[0])
  else
    dm_arg = "#{$dmpath}/lib/default.vxml"
  end
  infile  = open($am_conf)
  outfile = open("#{$tmppath}/_am.conf", "w")
  infile.each { |line|
    line.gsub!( /@DOC@/, dm_arg )
    line.gsub!( /@JAVA_BIN@/, $java_bin )
    line.gsub!( /@GDM_JAR@/, $gdm_jar )
    outfile.puts(line)
  }
  infile.close
  outfile.close
  cmd = "#{$env}; cd #{$dmpath}/Modules; #{$perl_bin} ./AgentManager.pl -C #{$tmppath}/_am.conf"
  system cmd
  exit
end

# end of file
