public static class CommandLine.RunLast extends java.lang.Object implements CommandLine.IParseResultHandler
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"); }
Constructor and Description |
---|
CommandLine.RunLast() |
Modifier and Type | Method and Description |
---|---|
java.util.List<java.lang.Object> |
handleParseResult(java.util.List<CommandLine> parsedCommands,
java.io.PrintStream out,
CommandLine.Help.Ansi ansi)
Prints help if requested, and otherwise executes the most specific
Runnable or Callable subcommand. |
public java.util.List<java.lang.Object> handleParseResult(java.util.List<CommandLine> parsedCommands, java.io.PrintStream out, CommandLine.Help.Ansi ansi)
Runnable
or Callable
subcommand.
If the last (sub)command does not implement either Runnable
or Callable
, a ExecutionException
is thrown detailing the problem and capturing the offending CommandLine
object.handleParseResult
in interface CommandLine.IParseResultHandler
parsedCommands
- the CommandLine
objects that resulted from successfully parsing the command line argumentsout
- the PrintStream
to print help to if requestedansi
- for printing help messages using ANSI styles and colorsCallable
, or a null
element if the last (sub)command was a Runnable
CommandLine.ExecutionException
- if a problem occurred while processing the parse results; use
CommandLine.ExecutionException.getCommandLine()
to get the command or subcommand where processing failed