コード例 #1
0
 public string Resolve(string path)
 {
     if (!string.IsNullOrEmpty(_resolver.Resolve("readlink")))
     {
         var runner = _runnerFactory.CreateRunner("readlink " + path, false);
         return(runner.AsyncRun().Result);
     }
     return(null);
 }
コード例 #2
0
 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);
 }