public static List<Completer> getCompleters(Iterable<CommandHandler> handlers){ List<Completer> completers = new LinkedList<Completer>(); for (CommandHandler handler : handlers) { String[] commandNames = handler.getNames(); if (commandNames != null) { for (String commandName : commandNames) { List<Completer> compl = new LinkedList<Completer>(); compl.add(new StringsCompleter(BeeLine.COMMAND_PREFIX + commandName)); compl.addAll(Arrays.asList(handler.getParameterCompleters())); compl.add(new NullCompleter()); // last param no complete completers.add(new AggregateCompleter(compl.toArray(new Completer[compl.size()]))); } } } return completers; } }
@Inject public void installCompleters(final @Named("alias-name") Completer c1, final @Named("commands") Completer c2) { assert c1 != null; assert c2 != null; setCompleters(new AggregateCompleter(c1, c2)); }
@Inject public HelpCommand installCompleters(final @Named("alias-name") Completer c1, final @Named("node-path") Completer c2, final @Named("meta-help-page-name") Completer c3) { setCompleters(new AggregateCompleter(c1, c2, c3), null); return this; }
public static List<Completer> getCompleters(BeeLine beeLine){ List<Completer> completers = new LinkedList<Completer>(); for (int i = 0; i < beeLine.commandHandlers.length; i++) { String[] cmds = beeLine.commandHandlers[i].getNames(); for (int j = 0; cmds != null && j < cmds.length; j++) { List<Completer> compl = new LinkedList<Completer>(); compl.add(new StringsCompleter(BeeLine.COMMAND_PREFIX + cmds[j])); compl.addAll(Arrays.asList(beeLine.commandHandlers[i].getParameterCompleters())); compl.add(new NullCompleter()); // last param no complete completers.add(new AggregateCompleter(compl.toArray(new Completer[0]))); } } return completers; } }
public static List<Completer> getCompleters(BeeLine beeLine){ List<Completer> completers = new LinkedList<Completer>(); for (int i = 0; i < beeLine.commandHandlers.length; i++) { String[] cmds = beeLine.commandHandlers[i].getNames(); for (int j = 0; cmds != null && j < cmds.length; j++) { List<Completer> compl = new LinkedList<Completer>(); compl.add(new StringsCompleter(BeeLine.COMMAND_PREFIX + cmds[j])); compl.addAll(Arrays.asList(beeLine.commandHandlers[i].getParameterCompleters())); compl.add(new NullCompleter()); // last param no complete completers.add(new AggregateCompleter(compl.toArray(new Completer[0]))); } } return completers; } }
public static List<Completer> getCompleters(Iterable<CommandHandler> handlers){ List<Completer> completers = new LinkedList<Completer>(); for (CommandHandler handler : handlers) { String[] commandNames = handler.getNames(); if (commandNames != null) { for (String commandName : commandNames) { List<Completer> compl = new LinkedList<Completer>(); compl.add(new StringsCompleter(BeeLine.COMMAND_PREFIX + commandName)); compl.addAll(Arrays.asList(handler.getParameterCompleters())); compl.add(new NullCompleter()); // last param no complete completers.add(new AggregateCompleter(compl.toArray(new Completer[compl.size()]))); } } } return completers; } }
private void setupCompleter(ConsoleReader reader) { reader.addCompleter(new AggregateCompleter(defaultCompleters())); }
private void updateCompletors() { logger.trace("updating completors"); List<Completer> completors = new ArrayList<>(); try { Lexicon lex = queryEngine.getLexicon(); synchronized (lex) { completors.add(lex.getCompletor()); } ArrayList<String> directives = new ArrayList<>(); directives.add("@help"); directives.add("@list"); directives.add("@prefix"); directives.add("@quit"); directives.add("@relist"); directives.add("@show"); directives.add("@unlist"); directives.add("@unprefix"); completors.add( new DirectiveCompletor(directives)); try { // This makes candidates from multiple completors available at once. Completer multiCompletor = new AggregateCompleter(completors); reader.addCompleter(multiCompletor); } catch (Throwable t) { throw new RippleException(t); } } catch (RippleException e) { logger.error("failed to update completors", e); } }
private void initCommands() { List<Completer> compList = new ArrayList<>(); for (Class clazz : registeredCommands) { TajoShellCommand cmd = null; try { Constructor cons = clazz.getConstructor(new Class[] {TajoCliContext.class}); cmd = (TajoShellCommand) cons.newInstance(context); } catch (Exception e) { System.err.println(e.getMessage()); throw new RuntimeException(e.getMessage()); } // make completers for console auto-completion compList.add(cmd.getArgumentCompleter()); commands.put(cmd.getCommand(), cmd); for (String alias : cmd.getAliases()) { commands.put(alias, cmd); } } cliCompleter = new AggregateCompleter(compList); sqlCompleter = new ArgumentCompleter( new ArgumentCompleter.AbstractArgumentDelimiter() { @Override public boolean isDelimiterChar(CharSequence buf, int pos) { char c = buf.charAt(pos); return Character.isWhitespace(c) || !(Character.isLetterOrDigit(c)) && c != '_'; } }, new StringsCompleter(getKeywords()) ); }
private Completer getCommandCompleter() { List<Completer> customCompletor = new ArrayList<Completer>(); Set<String> candidateStrings = new HashSet<String>(); try { for (String key : CommandParserUtils.getAllCommandKewWords()) { candidateStrings.add(key.toUpperCase()); candidateStrings.add(key.toLowerCase()); } } catch (AssertionError e) { return null; } if (!candidateStrings.isEmpty()) { // odps key word completer, use default whitespace for arg delimiter ArgumentCompleter keyCompleter = new ArgumentCompleter(new StringsCompleter(candidateStrings)); keyCompleter.setStrict(false); customCompletor.add(keyCompleter); } // file patch completer, use default whitespace for arg delimiter ArgumentCompleter pathCompleter = new ArgumentCompleter(new FileNameCompleter()); pathCompleter.setStrict(false); customCompletor.add(pathCompleter); // aggregate two argument comepletor AggregateCompleter aggregateCompleter = new AggregateCompleter(customCompletor); return aggregateCompleter; }
public CommandCompleter(ConsoleReader consoleReader, ArgumentDelimiter argumentDelimiter, Iterable<Command> commands) { this.console = consoleReader; List<String> names = new ArrayList<>(); for (Command command : commands) { this.commands.add(command); names.add(command.getName()); List<String> options = new ArrayList<>(); for (OptionHelp optionHelp : command.getOptionsHelp()) { options.addAll(optionHelp.getOptions()); } AggregateCompleter argumentCompleters = new AggregateCompleter( new StringsCompleter(options), new FileNameCompleter()); ArgumentCompleter argumentCompleter = new ArgumentCompleter(argumentDelimiter, argumentCompleters); argumentCompleter.setStrict(false); this.commandCompleters.put(command.getName(), argumentCompleter); } getStrings().addAll(names); }
public CommandCompleter(ConsoleReader consoleReader, ArgumentDelimiter argumentDelimiter, Iterable<Command> commands) { this.console = consoleReader; List<String> names = new ArrayList<String>(); for (Command command : commands) { this.commands.add(command); names.add(command.getName()); List<String> options = new ArrayList<String>(); for (OptionHelp optionHelp : command.getOptionsHelp()) { options.addAll(optionHelp.getOptions()); } AggregateCompleter arguementCompleters = new AggregateCompleter( new StringsCompleter(options), new FileNameCompleter()); ArgumentCompleter argumentCompleter = new ArgumentCompleter( argumentDelimiter, arguementCompleters); argumentCompleter.setStrict(false); this.commandCompleters.put(command.getName(), argumentCompleter); } getStrings().addAll(names); }
private ConsoleReader getConsoleReader() { ConsoleReader reader; try { reader = new ConsoleReader(); } catch (IOException e) { throw KEMException.internalError("IO error detected interacting with console", e); } reader.setBellEnabled(false); List<String> singleLevelCommands = Arrays.<String>asList("step", "s", "S", "b", "B", "back-step", "j", "J", "jump-to", "quit", "abort", "exit", "src", "source", "checkpoint", "ch", "resume", "run", "r", "p", "peek", "remwatch", "xwatch", "show", "get-states", "gs", "select", "copy", "cp", "watch", "w"); List<String> multiLevelCommands = Arrays.<String>asList("source", "src"); List<Completer> completers = singleLevelCommands .stream() .map(command -> (Completer) new ArgumentCompleter(new StringsCompleter(command), new NullCompleter())) .collect(Collectors.toList()); multiLevelCommands.stream() .forEach(command -> completers.add(new ArgumentCompleter(new StringsCompleter(command), new FileNameCompleter()))); reader.addCompleter(new AggregateCompleter(completers)); return reader; }
List<Completer> completors = new LinkedList<Completer>(); completors.add( new AggregateCompleter( new ArgumentCompleter(new StringsCompleter("show"), new NullCompleter()), new ArgumentCompleter(new StringsCompleter("show"), new StringsCompleter("aaa", "access-expression", "access-lists", "accounting", "adjancey"), new NullCompleter()), new ArgumentCompleter(new StringsCompleter("show"), new StringsCompleter("ip"), new StringsCompleter("access-lists", "accounting", "admission", "aliases", "arp"), new NullCompleter()), new ArgumentCompleter(new StringsCompleter("show"), new StringsCompleter("ip"), new StringsCompleter("interface"), new StringsCompleter("ATM", "Async", "BVI"), new NullCompleter()) ) ); for (Completer c : completors) { reader.addCompleter(c); }
console.addCompleter(new AggregateCompleter(new GraQLCompleter(this), new ShellCommandCompleter()));