public void Run(string[] args) { _commandMode = args.Length > 0; var commands = GetCommands(args); var flags = GetFlags(args); ShowAssemblyInfo(); var commandIndex = 0; _rootCommand.Initiate(); while (_running) { var entry = _commandMode ? GetCommandModeEntry(commands, ref commandIndex, flags) : _rootCommand.QueryParam <string>("> "); if (!ExecuteCommand(entry)) { break; } } }