public string Resolve(string path) { if (!string.IsNullOrEmpty(_resolver.Resolve("readlink"))) { var runner = _runnerFactory.CreateRunner("readlink " + path, false); return(runner.AsyncRun().Result); } return(null); }
public CommandResult Execute(string rawLine) { try { var command = rawLine.Trim(' '); if (string.IsNullOrEmpty(command)) { return(CommandResult.Continue); } if (command == "exit" || command == "quit") { return(CommandResult.Exit); } var tokens = CommandLine.Split(rawLine).ToList(); var first = tokens[0]; tokens = tokens.GetRange(1, tokens.Count - 1); IBuiltin builtin; if (_builtins.TryGetValue(first, out builtin)) { builtin.Execute(tokens); } else { if (string.IsNullOrEmpty(_resolver.Resolve(first))) { _console.Error.WriteLine($"lxsh: {first}: command not found"); } else { var runner = _runnerFactory.CreateRunner(command, true); var task = runner.AsyncRun(); while (!task.IsCompleted) { Task.Delay(50).Wait(); } } } } catch (Exception e) { _console.Error.WriteLine(e.Message); } return(CommandResult.Continue); }