mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 05:25:09 +00:00
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 :^)
This commit is contained in:
parent
e1481dcb42
commit
b7bedab28a
1 changed files with 18 additions and 0 deletions
|
@ -360,6 +360,9 @@ static int run_command(const String& cmd)
|
|||
if (cmd.is_empty())
|
||||
return 0;
|
||||
|
||||
if (cmd.starts_with("#"))
|
||||
return 0;
|
||||
|
||||
auto commands = Parser(cmd).parse();
|
||||
|
||||
#ifdef SH_DEBUG
|
||||
|
@ -642,6 +645,21 @@ int main(int argc, char** argv)
|
|||
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);
|
||||
g.cwd = cwd;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue