Module info.picocli
Package picocli

Class CommandLine.RunLast

  • All Implemented Interfaces:
    CommandLine.IExecutionStrategy, CommandLine.IParseResultHandler, CommandLine.IParseResultHandler2<List<Object>>
    Enclosing class:
    CommandLine

    public static class CommandLine.RunLast
    extends CommandLine.AbstractParseResultHandler<List<Object>>
    implements CommandLine.IParseResultHandler
    Command line execution strategy that prints help if requested, and otherwise executes the most specific Runnable or Callable subcommand. For use by the execute method.

    Something like this:

    
         // RunLast implementation: print help if requested, otherwise execute the most specific subcommand
         List<CommandLine> parsedCommands = parseResult.asCommandLineList();
         if (CommandLine.printHelpIfRequested(parsedCommands, out(), err(), ansi())) {
             return emptyList();
         }
         CommandLine last = parsedCommands.get(parsedCommands.size() - 1);
         Object command = last.getCommand();
         Object result = null;
         if (command instanceof Runnable) {
             try {
                 ((Runnable) command).run();
             } catch (Exception ex) {
                 throw new ExecutionException(last, "Error in runnable " + command, ex);
             }
         } else if (command instanceof Callable) {
             try {
                 result = ((Callable) command).call();
             } catch (Exception ex) {
                 throw new ExecutionException(last, "Error in callable " + command, ex);
             }
         } else {
             throw new ExecutionException(last, "Parsed command (" + command + ") is not Runnable or Callable");
         }
         last.setExecutionResult(result);
         return Arrays.asList(result);
     

    From picocli v2.0, RunLast is used to implement the run and call convenience methods.

    Since:
    2.0