public virtual void ExecuteCommand(string input) { foreach (var cmdTokens in ShellCommandTokenizer.Tokenize(input)) { ExecuteCommand(cmdTokens.ToArray()); } }
public void RunShell() { _readline = new Readline.Readline(History) { CtrlCInterrupts = CtrlCInterrupts, CtrlDIsEOF = CtrlDIsEOF, CtrlZIsEOF = CtrlZIsEOF }; _readline.WritePrompt += ReadlineOnWritePrompt; _readline.Interrupt += (sender, args) => ShellInterrupt?.Invoke(this, EventArgs.Empty); _readline.TabComplete += ReadlineOnTabComplete; _readline.PrintAlternatives += (sender, args) => OnPrintAlternatives(args); while (true) { var input = _readline.ReadLine(); if (string.IsNullOrWhiteSpace(input)) { continue; } input = input.Trim(); var allTokens = ShellCommandTokenizer.Tokenize(input); foreach (var cmdTokens in allTokens) { try { var tokenArr = cmdTokens.ToArray(); IShellCommand command = null; lock (_lock) { command = _container.FindCommand(this, tokenArr); } BeforeCommandExecute?.Invoke(this, new CommandExecuteEventArgs(input, null, command)); ExecuteCommand(tokenArr); AfterCommandExecute?.Invoke(this, new CommandExecuteEventArgs(input, CommandResult, command)); } catch (ShellCommandNotFoundException) { OnShellCommandNotFound(input); } } History.AddUnique(input); } }
public void ExecuteCommand(string input) { ExecuteCommand(ShellCommandTokenizer.Tokenize(input).ToArray()); }