Search in sources :

Example 1 with MemoryHistory

use of jline.console.history.MemoryHistory in project presto by prestodb.

the class Console method getHistory.

private static MemoryHistory getHistory() {
    MemoryHistory history;
    File historyFile = new File(getUserHome(), ".presto_history");
    try {
        history = new FileHistory(historyFile);
        history.setMaxSize(10000);
    } catch (IOException e) {
        System.err.printf("WARNING: Failed to load history file (%s): %s. " + "History will not be available during this session.%n", historyFile, e.getMessage());
        history = new MemoryHistory();
    }
    history.setAutoTrim(true);
    return history;
}
Also used : MemoryHistory(jline.console.history.MemoryHistory) IOException(java.io.IOException) File(java.io.File) FileHistory(jline.console.history.FileHistory)

Example 2 with MemoryHistory

use of jline.console.history.MemoryHistory in project apex-core by apache.

the class ApexCli method getLaunchAppPackageArgs.

String[] getLaunchAppPackageArgs(AppPackage ap, ConfigPackage cp, LaunchCommandLineInfo commandLineInfo, ConsoleReader reader) throws Exception {
    String matchAppName = null;
    if (commandLineInfo.args.length > 1) {
        matchAppName = commandLineInfo.args[1];
    }
    List<AppInfo> applications = new ArrayList<>(getAppsFromPackageAndConfig(ap, cp, commandLineInfo.useConfigApps));
    if (matchAppName != null) {
        Iterator<AppInfo> it = applications.iterator();
        while (it.hasNext()) {
            AppInfo ai = it.next();
            if ((commandLineInfo.exactMatch && !ai.name.equals(matchAppName)) || !ai.name.toLowerCase().matches(".*" + matchAppName.toLowerCase() + ".*")) {
                it.remove();
            }
        }
    }
    AppInfo selectedApp = null;
    if (applications.isEmpty()) {
        throw new CliException("No applications in Application Package" + (matchAppName != null ? " matching \"" + matchAppName + "\"" : ""));
    } else if (applications.size() == 1) {
        selectedApp = applications.get(0);
    } else {
        //Store the appNames sorted in alphabetical order and their position in matchingAppFactories list
        TreeMap<String, Integer> appNamesInAlphabeticalOrder = new TreeMap<>();
        // Display matching applications
        for (int i = 0; i < applications.size(); i++) {
            String appName = applications.get(i).name;
            appNamesInAlphabeticalOrder.put(appName, i);
        }
        //Create a mapping between the app display number and original index at matchingAppFactories
        int index = 1;
        HashMap<Integer, Integer> displayIndexToOriginalUnsortedIndexMap = new HashMap<>();
        for (Map.Entry<String, Integer> entry : appNamesInAlphabeticalOrder.entrySet()) {
            //Map display number of the app to original unsorted index
            displayIndexToOriginalUnsortedIndexMap.put(index, entry.getValue());
            //Display the app names
            System.out.printf("%3d. %s\n", index++, entry.getKey());
        }
        // Exit if not in interactive mode
        if (!consolePresent) {
            throw new CliException("More than one application in Application Package match '" + matchAppName + "'");
        } else {
            boolean useHistory = reader.isHistoryEnabled();
            reader.setHistoryEnabled(false);
            History previousHistory = reader.getHistory();
            History dummyHistory = new MemoryHistory();
            reader.setHistory(dummyHistory);
            List<Completer> completers = new ArrayList<>(reader.getCompleters());
            for (Completer c : completers) {
                reader.removeCompleter(c);
            }
            reader.setHandleUserInterrupt(true);
            String optionLine;
            try {
                optionLine = reader.readLine("Choose application: ");
            } finally {
                reader.setHandleUserInterrupt(false);
                reader.setHistoryEnabled(useHistory);
                reader.setHistory(previousHistory);
                for (Completer c : completers) {
                    reader.addCompleter(c);
                }
            }
            try {
                int option = Integer.parseInt(optionLine);
                if (0 < option && option <= applications.size()) {
                    int appIndex = displayIndexToOriginalUnsortedIndexMap.get(option);
                    selectedApp = applications.get(appIndex);
                }
            } catch (Exception ex) {
            // ignore
            }
        }
    }
    if (selectedApp == null) {
        throw new CliException("No application selected");
    }
    DTConfiguration launchProperties = getLaunchAppPackageProperties(ap, cp, commandLineInfo, selectedApp.name);
    String appFile = ap.tempDirectory() + "/app/" + selectedApp.file;
    List<String> launchArgs = new ArrayList<>();
    launchArgs.add("launch");
    launchArgs.add("-exactMatch");
    List<String> absClassPath = new ArrayList<>(ap.getClassPath());
    for (int i = 0; i < absClassPath.size(); i++) {
        String path = absClassPath.get(i);
        if (!path.startsWith("/")) {
            absClassPath.set(i, ap.tempDirectory() + "/" + path);
        }
    }
    if (cp != null) {
        StringBuilder files = new StringBuilder();
        for (String file : cp.getClassPath()) {
            if (files.length() != 0) {
                files.append(',');
            }
            files.append(cp.tempDirectory()).append(File.separatorChar).append(file);
        }
        if (!StringUtils.isBlank(files.toString())) {
            if (commandLineInfo.libjars != null) {
                commandLineInfo.libjars = files.toString() + "," + commandLineInfo.libjars;
            } else {
                commandLineInfo.libjars = files.toString();
            }
        }
        files.setLength(0);
        for (String file : cp.getFiles()) {
            if (files.length() != 0) {
                files.append(',');
            }
            files.append(cp.tempDirectory()).append(File.separatorChar).append(file);
        }
        if (!StringUtils.isBlank(files.toString())) {
            if (commandLineInfo.files != null) {
                commandLineInfo.files = files.toString() + "," + commandLineInfo.files;
            } else {
                commandLineInfo.files = files.toString();
            }
        }
    }
    StringBuilder libjarsVal = new StringBuilder();
    if (!absClassPath.isEmpty() || commandLineInfo.libjars != null) {
        if (!absClassPath.isEmpty()) {
            libjarsVal.append(org.apache.commons.lang3.StringUtils.join(absClassPath, ','));
        }
        if (commandLineInfo.libjars != null) {
            if (libjarsVal.length() > 0) {
                libjarsVal.append(",");
            }
            libjarsVal.append(commandLineInfo.libjars);
        }
    }
    if (appFile.endsWith(".json") || appFile.endsWith(".properties")) {
        if (libjarsVal.length() > 0) {
            libjarsVal.append(",");
        }
        libjarsVal.append(ap.tempDirectory()).append("/app/*.jar");
    }
    if (libjarsVal.length() > 0) {
        launchArgs.add("-libjars");
        launchArgs.add(libjarsVal.toString());
    }
    File launchPropertiesFile = new File(ap.tempDirectory(), "launch.xml");
    launchProperties.writeToFile(launchPropertiesFile, "");
    launchArgs.add("-conf");
    launchArgs.add(launchPropertiesFile.getCanonicalPath());
    if (commandLineInfo.localMode) {
        launchArgs.add("-local");
    }
    if (commandLineInfo.archives != null) {
        launchArgs.add("-archives");
        launchArgs.add(commandLineInfo.archives);
    }
    if (commandLineInfo.files != null) {
        launchArgs.add("-files");
        launchArgs.add(commandLineInfo.files);
    }
    if (commandLineInfo.origAppId != null) {
        launchArgs.add("-originalAppId");
        launchArgs.add(commandLineInfo.origAppId);
    }
    if (commandLineInfo.queue != null) {
        launchArgs.add("-queue");
        launchArgs.add(commandLineInfo.queue);
    }
    if (commandLineInfo.tags != null) {
        launchArgs.add("-tags");
        launchArgs.add(commandLineInfo.tags);
    }
    launchArgs.add(appFile);
    if (!appFile.endsWith(".json") && !appFile.endsWith(".properties")) {
        launchArgs.add(selectedApp.name);
    }
    LOG.debug("Launch command: {}", StringUtils.join(launchArgs, " "));
    return launchArgs.toArray(new String[] {});
}
Also used : MemoryHistory(jline.console.history.MemoryHistory) HashMap(java.util.HashMap) DTConfiguration(com.datatorrent.stram.client.DTConfiguration) ArrayList(java.util.ArrayList) FileNameCompleter(jline.console.completer.FileNameCompleter) AggregateCompleter(jline.console.completer.AggregateCompleter) Completer(jline.console.completer.Completer) StringsCompleter(jline.console.completer.StringsCompleter) ArgumentCompleter(jline.console.completer.ArgumentCompleter) TreeMap(java.util.TreeMap) FileHistory(jline.console.history.FileHistory) MemoryHistory(jline.console.history.MemoryHistory) History(jline.console.history.History) IOException(java.io.IOException) JSONException(org.codehaus.jettison.json.JSONException) URISyntaxException(java.net.URISyntaxException) FileNotFoundException(java.io.FileNotFoundException) ParseException(org.apache.commons.cli.ParseException) YarnException(org.apache.hadoop.yarn.exceptions.YarnException) AppInfo(com.datatorrent.stram.client.AppPackage.AppInfo) Entry(java.util.Map.Entry) ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) File(java.io.File)

Aggregations

File (java.io.File)2 IOException (java.io.IOException)2 FileHistory (jline.console.history.FileHistory)2 MemoryHistory (jline.console.history.MemoryHistory)2 AppInfo (com.datatorrent.stram.client.AppPackage.AppInfo)1 DTConfiguration (com.datatorrent.stram.client.DTConfiguration)1 FileNotFoundException (java.io.FileNotFoundException)1 URISyntaxException (java.net.URISyntaxException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Entry (java.util.Map.Entry)1 TreeMap (java.util.TreeMap)1 AggregateCompleter (jline.console.completer.AggregateCompleter)1 ArgumentCompleter (jline.console.completer.ArgumentCompleter)1 Completer (jline.console.completer.Completer)1 FileNameCompleter (jline.console.completer.FileNameCompleter)1 StringsCompleter (jline.console.completer.StringsCompleter)1 History (jline.console.history.History)1