Class CommandLine.RunLast
java.lang.Object
org.apache.logging.log4j.core.tools.picocli.CommandLine.RunLast
- All Implemented Interfaces:
CommandLine.IParseResultHandler
- Enclosing class:
CommandLine
Command line parse result handler that prints help if requested, and otherwise executes the most specific
Runnable or Callable subcommand.
For use in the parseWithHandler methods.
Something like this:
// RunLast implementation: print help if requested, otherwise execute the most specific subcommand
if (CommandLine.printHelpIfRequested(parsedCommands, System.err, Help.Ansi.AUTO)) {
return emptyList();
}
CommandLine last = parsedCommands.get(parsedCommands.size() - 1);
Object command = last.getCommand();
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) {
Object result;
try {
result = ((Callable) command).call();
} catch (Exception ex) {
throw new ExecutionException(last, "Error in callable " + command, ex);
}
// ...do something with result
} else {
throw new ExecutionException(last, "Parsed command (" + command + ") is not Runnable or Callable");
}
- Since:
- 2.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionhandleParseResult(List<CommandLine> parsedCommands, PrintStream out, CommandLine.Help.Ansi ansi) Prints help if requested, and otherwise executes the most specificRunnableorCallablesubcommand.
-
Constructor Details
-
RunLast
public RunLast()
-
-
Method Details
-
handleParseResult
public List<Object> handleParseResult(List<CommandLine> parsedCommands, PrintStream out, CommandLine.Help.Ansi ansi) Prints help if requested, and otherwise executes the most specificRunnableorCallablesubcommand. If the last (sub)command does not implement eitherRunnableorCallable, aExecutionExceptionis thrown detailing the problem and capturing the offendingCommandLineobject.- Specified by:
handleParseResultin interfaceCommandLine.IParseResultHandler- Parameters:
parsedCommands- theCommandLineobjects that resulted from successfully parsing the command line argumentsout- thePrintStreamto print help to if requestedansi- for printing help messages using ANSI styles and colors- Returns:
- an empty list if help was requested, or a list containing a single element: the result of calling the
Callable, or anullelement if the last (sub)command was aRunnable - Throws:
CommandLine.ExecutionException- if a problem occurred while processing the parse results; useCommandLine.ExecutionException.getCommandLine()to get the command or subcommand where processing failed
-