Class Cli


  • public final class Cli
    extends java.lang.Object
    This class provides a basic CLI abstraction.

    Why are we not using a library for this? Because parsing command line options isn't difficult, we don't need to take a dependency, this code uses no reflection to improve startup time. We can control exactly what CLI features are supported in case we want to migrate to a library or event a different language.

    • Constructor Summary

      Constructors 
      Constructor Description
      Cli​(Command command, java.lang.ClassLoader classLoader)
      Creates a new CLI with the given name.
    • Constructor Detail

      • Cli

        public Cli​(Command command,
                   java.lang.ClassLoader classLoader)
        Creates a new CLI with the given name.
        Parameters:
        command - CLI command to run.
        classLoader - ClassLoader to use when invoking commands.
    • Method Detail

      • run

        public int run​(java.lang.String[] args)
        Execute the command line using the given arguments.
        Parameters:
        args - Arguments to parse.
        Returns:
        Returns the exit code.
        Throws:
        CliError - on error.
      • colorFormatter

        public void colorFormatter​(ColorFormatter colorFormatter)
      • stdout

        public void stdout​(CliPrinter stdoutPrinter)
      • stderr

        public void stderr​(CliPrinter stderrPrinter)