Procházet zdrojové kódy

Shell: Support extremely naive shell script execution

This patch allows passing a script as an argument to the Shell program.
We will read the specified line by line and pass them through the Shell
command interpreter.

This is not very powerful, but it's a start :^)
Andreas Kling před 5 roky
rodič
revize
b7bedab28a
1 změnil soubory, kde provedl 18 přidání a 0 odebrání
  1. 18 0
      Shell/main.cpp

+ 18 - 0
Shell/main.cpp

@@ -360,6 +360,9 @@ static int run_command(const String& cmd)
     if (cmd.is_empty())
     if (cmd.is_empty())
         return 0;
         return 0;
 
 
+    if (cmd.starts_with("#"))
+        return 0;
+
     auto commands = Parser(cmd).parse();
     auto commands = Parser(cmd).parse();
 
 
 #ifdef SH_DEBUG
 #ifdef SH_DEBUG
@@ -642,6 +645,21 @@ int main(int argc, char** argv)
         return 0;
         return 0;
     }
     }
 
 
+    if (argc == 2 && argv[1][0] != '-') {
+        CFile file(argv[1]);
+        if (!file.open(CIODevice::ReadOnly)) {
+            fprintf(stderr, "Failed to open %s: %s\n", file.filename().characters(), file.error_string());
+            return 1;
+        }
+        for (;;) {
+            auto line = file.read_line(4096);
+            if (line.is_null())
+                break;
+            run_command(String::copy(line, Chomp));
+        }
+        return 0;
+    }
+
     {
     {
         auto* cwd = getcwd(nullptr, 0);
         auto* cwd = getcwd(nullptr, 0);
         g.cwd = cwd;
         g.cwd = cwd;