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, &quot;Error in runnable &quot; + command, ex);
          }
      } else if (command instanceof Callable) {
          try {
              result = ((Callable) command).call();
          } catch (Exception ex) {
              throw new ExecutionException(last, &quot;Error in callable &quot; + command, ex);
          }
      } else {
          throw new ExecutionException(last, &quot;Parsed command (&quot; + command + &quot;) is not Runnable or Callable&quot;);
      }
      last.setExecutionResult(result);
      return Arrays.asList(result);
  

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