All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jline.ConsoleRunner Maven / Gradle / Ivy

There is a newer version: 3.3.0-4.1
Show newest version
/*
 * Copyright (c) 2002-2007, Marc Prud'hommeaux. All rights reserved.
 *
 * This software is distributable under the BSD license. See the terms of the
 * BSD license in the documentation provided with this software.
 */
package jline;

import java.io.*;
import java.util.*;

/**
 *  

* A pass-through application that sets the system input stream to a * {@link ConsoleReader} and invokes the specified main method. *

* @author Marc Prud'hommeaux */ public class ConsoleRunner { public static final String property = "jline.history"; public static void main(final String[] args) throws Exception { String historyFileName = null; List argList = new ArrayList(Arrays.asList(args)); if (argList.size() == 0) { usage(); return; } historyFileName = System.getProperty(ConsoleRunner.property, null); // invoke the main() method String mainClass = (String) argList.remove(0); // setup the inpout stream ConsoleReader reader = new ConsoleReader(); if (historyFileName != null) { reader.setHistory(new History (new File (System.getProperty("user.home"), ".jline-" + mainClass + "." + historyFileName + ".history"))); } else { reader.setHistory(new History(new File (System.getProperty("user.home"), ".jline-" + mainClass + ".history"))); } String completors = System.getProperty (ConsoleRunner.class.getName() + ".completors", ""); List completorList = new ArrayList(); for (StringTokenizer tok = new StringTokenizer(completors, ","); tok.hasMoreTokens();) { completorList.add ((Completor) Class.forName(tok.nextToken()).newInstance()); } if (completorList.size() > 0) { reader.addCompletor(new ArgumentCompletor(completorList)); } ConsoleReaderInputStream.setIn(reader); try { Class.forName(mainClass). getMethod("main", new Class[] { String[].class }). invoke(null, new Object[] { argList.toArray(new String[0]) }); } finally { // just in case this main method is called from another program ConsoleReaderInputStream.restoreIn(); } } private static void usage() { System.out.println("Usage: \n java " + "[-Djline.history='name'] " + ConsoleRunner.class.getName() + " [args]" + "\n\nThe -Djline.history option will avoid history" + "\nmangling when running ConsoleRunner on the same application." + "\n\nargs will be passed directly to the target class name."); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy