Class CommandLine.RunLast
- java.lang.Object
-
- picocli.CommandLine.AbstractHandler<R,CommandLine.AbstractParseResultHandler<R>>
-
- picocli.CommandLine.AbstractParseResultHandler<List<Object>>
-
- picocli.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 specificRunnableorCallablesubcommand. For use by theexecutemethod.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,
RunLastis used to implement therunandcallconvenience methods.- Since:
- 2.0
-
-
Constructor Summary
Constructors Constructor Description RunLast()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<CommandLine.IExitCodeGenerator>extractExitCodeGenerators(CommandLine.ParseResult parseResult)protected List<Object>handle(CommandLine.ParseResult parseResult)Executes the most specificRunnableorCallablesubcommand.List<Object>handleParseResult(List<CommandLine> parsedCommands, PrintStream out, CommandLine.Help.Ansi ansi)Prints help if requested, and otherwise executes the most specificRunnableorCallablesubcommand.protected CommandLine.RunLastself()Returnsthisto allow method chaining when calling the setters for a fluent API.-
Methods inherited from class picocli.CommandLine.AbstractParseResultHandler
execute, handleParseResult
-
Methods inherited from class picocli.CommandLine.AbstractHandler
andExit, ansi, colorScheme, err, exit, exitCode, hasExitCode, out, returnResultOrExit, throwOrExit, useAnsi, useErr, useOut
-
-
-
-
Method Detail
-
handleParseResult
public List<Object> handleParseResult(List<CommandLine> parsedCommands, PrintStream out, CommandLine.Help.Ansi ansi)
Prints help if requested, and otherwise executes the most specificRunnableorCallablesubcommand.For repeatable subcommands, this method may execute multiple subcommands: the most deeply nested subcommands that have the same parent command.
Finally, either a list of result objects is returned, or the JVM is terminated if an exit code was set.
If the last (sub)command does not implement either
RunnableorCallable, anExecutionExceptionis 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.ParameterException- if theHelpCommandwas invoked for an unknown subcommand. AnyParameterExceptionsthrown from this method are treated as if this exception was thrown during parsing and passed to theCommandLine.IExceptionHandlerCommandLine.ExecutionException- if a problem occurred while processing the parse results; useCommandLine.ExecutionException.getCommandLine()to get the command or subcommand where processing failed
-
handle
protected List<Object> handle(CommandLine.ParseResult parseResult) throws CommandLine.ExecutionException
Executes the most specificRunnableorCallablesubcommand.For repeatable subcommands, this method may execute multiple subcommands: the most deeply nested subcommands that have the same parent command.
If the user object of the executed (sub)command does not implement either
RunnableorCallableand is not aMethod, anExecutionExceptionis thrown detailing the problem and capturing the offendingCommandLineobject.- Specified by:
handlein classCommandLine.AbstractParseResultHandler<List<Object>>- Parameters:
parseResult- theParseResultthat resulted from successfully parsing the command line arguments- 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- Since:
- 3.0
-
extractExitCodeGenerators
protected List<CommandLine.IExitCodeGenerator> extractExitCodeGenerators(CommandLine.ParseResult parseResult)
- Overrides:
extractExitCodeGeneratorsin classCommandLine.AbstractParseResultHandler<List<Object>>
-
self
protected CommandLine.RunLast self()
Description copied from class:CommandLine.AbstractHandlerReturnsthisto allow method chaining when calling the setters for a fluent API.- Specified by:
selfin classCommandLine.AbstractHandler<List<Object>,CommandLine.AbstractParseResultHandler<List<Object>>>
-
-