package jeql; import java.io.PrintWriter; import jeql.api.JeqlOptions; import jeql.api.JeqlRunner; import jeql.api.error.ExitException; import jeql.api.error.JeqlException; import jeql.api.table.Table; import jeql.command.io.TableTextWriter; import jeql.engine.BasicScope; import jeql.engine.ConfigurationException; import jeql.engine.EngineContext; import jeql.engine.JeqlEngine; import jeql.man.ManGenerator; import jeql.monitor.Monitor; import jeql.util.CmdArgParser; import jeql.util.ExceptionUtil; import jeql.util.FileUtil; import com.vividsolutions.jts.util.Stopwatch; public class JeqlCmd { public static void main(String args[]) { JeqlCmd runner = new JeqlCmd(); try { runner.run(args); } catch (Exception ex) { ex.printStackTrace(); } } private JeqlOptions options = new JeqlOptions(); public JeqlCmd() { } /** * * @param args * @return true if script executed successfully * @throws Exception */ public boolean run(String[] args) throws Exception { boolean isScriptRequired = true; CmdArgParser cmdParser = new CmdArgParser(args); if (cmdParser.hasEngineArg(CmdArgParser.ARG_DEBUG)) { options.setDebug(true); } if (cmdParser.hasEngineArg(CmdArgParser.ARG_QUIET)) { options.setVerbose(false); } if (cmdParser.hasEngineArg(CmdArgParser.ARG_VERBOSE)) { options.setVerbose(true); } if (cmdParser.hasEngineArg(CmdArgParser.ARG_HELP)) { System.out.println(JeqlVersion.COPYRIGHT_JAVAVER); printHelp(); return true; } if (cmdParser.hasEngineArg(CmdArgParser.ARG_MON)) { options.setMonitorView(true); isScriptRequired = false; } if (cmdParser.hasEngineArg(CmdArgParser.ARG_MAN)) { isScriptRequired = false; } String scriptName = null; String scriptValue = null; if (cmdParser.hasEngineArg(CmdArgParser.ARG_STDIN)) { // read script from stdin scriptName = JeqlStrings.STDIN; } else if (cmdParser.hasEngineArg(CmdArgParser.ARG_SCRIPT)) { // read script from cmd arg scriptName = JeqlStrings.SCRIPT; scriptValue = cmdParser.getScriptName(); } else { String cmdScriptName = cmdParser.getScriptName(); if (cmdScriptName != null) scriptName = cmdScriptName; } // action if no script provided if (isScriptRequired && scriptName == null) { System.out.println("**** No script specified ****"); printHelp(); return false; } JeqlRunner runner = new JeqlRunner(); runner.init(options); if (cmdParser.hasEngineArg(CmdArgParser.ARG_MAN)) { ManGenerator.generate(runner.getContext(), new PrintWriter(System.out)); return true; } boolean retCode = true; if (scriptValue != null) retCode = runner.execScript(scriptValue, cmdParser.getScriptArgs()); else retCode = runner.execScriptFile(scriptName, cmdParser.getScriptArgs()); return retCode; } private void printHelp() { System.out.println(JeqlVersion.COPYRIGHT_JAVAVER); System.out.println("jeql [ options ] [ <scriptname> <script_arg> ...]"); System.out.println(""); System.out.println("Options:"); System.out.println(" -debug - sets Debug mode"); System.out.println(" -help - prints help message"); System.out.println(" -man - prints listing of functions and commands"); System.out.println(" -mon - displays monitor during script execution"); System.out.println(" -stdin - reads script from standard input"); System.out.println(" -script <text> - reads script from string argument"); System.out.println(" -verbose - runs in verbose mode"); } private static String[] getScriptArgs(String[] args) { String[] scriptArgs = new String[args.length - 1]; System.arraycopy(args, 1, scriptArgs, 0, args.length - 1); return scriptArgs; } }