package org.rubyforge.rawr;

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.InputStream; import java.io.IOException; import java.net.URL;

import java.util.ArrayList; import org.jruby.Ruby; import org.jruby.RubyInstanceConfig; import org.jruby.javasupport.JavaEmbedUtils;

public class Main {

public static void main(String[] args) throws Exception
{   
  RubyInstanceConfig config = new RubyInstanceConfig();
  config.setArgv(args);
  Ruby runtime = JavaEmbedUtils.initialize(new ArrayList(0), config);
  String mainRubyFile = "main";

  ArrayList<String> config_data = new ArrayList<String>();
  try{
    java.io.InputStream ins = Main.class.getClassLoader().getResourceAsStream("run_configuration");
    if (ins == null ) {
      System.err.println("Did not find configuration file 'run_configuration', using defaults.");
    } else {
      config_data = getConfigFileContents(ins);
    }
  }
  catch(IOException ioe)
  {
    System.err.println("Error loading run configuration file 'run_configuration', using defaults: " + ioe);
  }
  catch(java.lang.NullPointerException npe)
  {
    System.err.println("Error loading run configuration file 'run_configuration', using defaults: " + npe );
  }

  for(String line : config_data) {
      String[] parts = line.split(":");
      if("main_ruby_file".equals(parts[0].replaceAll(" ", ""))) {
          mainRubyFile = parts[1].replaceAll(" ", "");
      }
  }

  runtime.evalScriptlet("require '" + mainRubyFile + "'");
}

public static URL getResource(String path) {
    return Main.class.getClassLoader().getResource(path);
}

private static ArrayList<String> getConfigFileContents(InputStream input) throws IOException, java.lang.NullPointerException {
  BufferedReader reader = new BufferedReader(new InputStreamReader(input));
  String line;
  ArrayList<String> contents = new ArrayList<String>();

  while ((line = reader.readLine()) != null) {
    contents.add(line);
  }
  reader.close();
  return(contents);
}

}