diff src/luan/tools/CmdLine.java @ 120:8d7730a5e3b4

move standalone logic from Java to Luan git-svn-id: https://luan-java.googlecode.com/svn/trunk@121 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Mon, 02 Jun 2014 04:43:45 +0000
parents e935581cf9fb
children 486a0641bca4
line wrap: on
line diff
--- a/src/luan/tools/CmdLine.java	Sun Jun 01 09:38:40 2014 +0000
+++ b/src/luan/tools/CmdLine.java	Mon Jun 02 04:43:45 2014 +0000
@@ -14,99 +14,14 @@
 
 	public static void main(String[] args) {
 		LuanState luan = LuanState.newStandard();
-		boolean interactive = false;
-		boolean showVersion = false;
-		int i = 0;
-		if( args.length == 0 ) {
-			interactive = true;
-			showVersion = true;
-		} else {
-			while( i < args.length ) {
-				String arg = args[i];
-				if( !arg.startsWith("-") || arg.equals("--") )
-					break;
-				if( arg.equals("-i") ) {
-					interactive = true;
-				} else if( arg.equals("-v") ) {
-					showVersion = true;
-				} else if( arg.equals("-e") ) {
-					if( ++i == args.length )
-						error("'-e' needs argument");
-					String cmd = args[i];
-					try {
-						LuanFunction fn = BasicLib.load(luan,cmd,"(command line)",false);
-						luan.JAVA.call(fn,null);
-					} catch(LuanException e) {
-						System.err.println("command line error: "+e.getMessage());
-						System.exit(-1);
-					}
-				} else if( arg.equals("-") ) {
-					try {
-						BasicLib.do_file(luan,"stdin");
-					} catch(LuanException e) {
-						System.err.println(e.getMessage());
-						System.exit(-1);
-					}
-					System.exit(0);
-				} else {
-					error("unrecognized option '"+arg+"'");
-				}
-				i++;
-			}
+		try {
+			LuanFunction standalone = (LuanFunction)luan.get("Basic.standalone");
+			luan.JAVA.call(standalone,"standalone",args);
+		} catch(LuanException e) {
+			System.err.println(e.getMessage());
+			System.exit(-1);
 		}
-		if( showVersion )
-			System.out.println(Luan.version);
-		if( i < args.length ) {
-			String file = args[i++];
-			Object[] varArgs = new Object[args.length-1];
-			System.arraycopy(args,1,varArgs,0,varArgs.length);
-			LuanTable argsTable = new LuanTable();
-			for( int j=0; j<args.length; j++ ) {
-				argsTable.put( j, args[j] );
-			}
-			luan.global().put("arg",argsTable);
-			try {
-				LuanFunction fn = BasicLib.load_file(luan,file);
-				luan.JAVA.call(fn,null,varArgs);
-			} catch(LuanException e) {
-//				System.err.println("error: "+e.getMessage());
-				e.printStackTrace();
-				System.exit(-1);
-			}
-		}
-		if( interactive )
-			interactive(luan);
-	}
-
-	private static void error(String msg) {
-		System.err.println(msg);
-		System.err.println("usage: java luan.CmdLine [options] [script [args]]");
-		System.err.println("Available options are:");
-		System.err.println("  -e stat  execute string 'stat'");
-		System.err.println("  -i       enter interactive mode after executing 'script'");
-//		System.err.println("  -l name  require library 'name'");
-		System.err.println("  -v       show version information");
-//		System.err.println("  -E       ignore environment variables");
-		System.err.println("  --       stop handling options");
-		System.err.println("  -        stop handling options and execute stdin");
-		System.exit(-1);
-	}
-
-	static void interactive(LuanState luan) {
-		Console console = System.console();
-		LuanFunction print = (LuanFunction)luan.global().get("print");
-		while( true ) {
-			String input = console.readLine("> ");
-			if( input==null )
-				break;
-			try {
-				Object[] rtn = Luan.array(luan.eval(input,"stdin",true));
-				if( rtn.length > 0 )
-					luan.JAVA.call(print,"print",rtn);
-			} catch(LuanException e) {
-				System.out.println(e.getMessage());
-			}
-		}
+		System.exit(0);
 	}
 
 }