Create the list of all supported commands
Get an instance of the requested command.
Get an instance of the requested command after the args are sent.
Get a configured dub instance.
Parses the general options and sets up the log level and the root_path
The list of commands that can be handled
General options parser
Can get the command names
CommandLineHandler handler; handler.commandGroups = getCommands(); assert(handler.commandNames == ["init", "run", "build", "test", "lint", "generate", "describe", "clean", "dustmite", "fetch", "install", "add", "remove", "uninstall", "upgrade", "add-path", "remove-path", "add-local", "remove-local", "list", "search", "add-override", "remove-override", "list-overrides", "clean-caches", "convert"]);
It sets the cwd as root_path by default
CommandLineHandler handler; auto args = new CommandArgs([]); handler.prepareOptions(args); assert(handler.options.root_path == getcwd());
It can set a custom root_path
CommandLineHandler handler; auto args = new CommandArgs(["--root=/tmp/test"]); handler.prepareOptions(args); assert(handler.options.root_path == "/tmp/test".absolutePath.buildNormalizedPath); args = new CommandArgs(["--root=./test"]); handler.prepareOptions(args); assert(handler.options.root_path == "./test".absolutePath.buildNormalizedPath);
It sets the info log level by default
scope(exit) setLogLevel(LogLevel.info); CommandLineHandler handler; auto args = new CommandArgs([]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.info);
It can set a custom error level
scope(exit) setLogLevel(LogLevel.info); CommandLineHandler handler; auto args = new CommandArgs(["--vverbose"]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.debug_); handler = CommandLineHandler(); args = new CommandArgs(["--verbose"]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.diagnostic); handler = CommandLineHandler(); args = new CommandArgs(["--vquiet"]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.none); handler = CommandLineHandler(); args = new CommandArgs(["--quiet"]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.warn); handler = CommandLineHandler(); args = new CommandArgs(["--verror"]); handler.prepareOptions(args); assert(getLogLevel() == LogLevel.error);
It returns the run command by default
CommandLineHandler handler; handler.commandGroups = getCommands(); assert(handler.getCommand("").name == "run");
It returns the help command when there is none set and the --help arg was set
CommandLineHandler handler; auto args = new CommandArgs(["--help"]); handler.prepareOptions(args); handler.commandGroups = getCommands(); assert(cast(HelpCommand)handler.getCommand("") !is null);
It returns the help command when the help command is sent
CommandLineHandler handler; handler.commandGroups = getCommands(); assert(cast(HelpCommand) handler.getCommand("help") !is null);
It returns the init command when the init command is sent
CommandLineHandler handler; handler.commandGroups = getCommands(); assert(handler.getCommand("init").name == "init");
It returns null when a missing command is sent
CommandLineHandler handler; handler.commandGroups = getCommands(); assert(handler.getCommand("missing") is null);
Handles the Command Line options and commands.