/** * @file Command.h * @author apio (cloudapio.eu) * @brief Command parsing and execution. * * @copyright Copyright (c) 2024, the Luna authors. * */ #pragma once #include "sh.h" #include <luna/OwnedPtr.h> #include <luna/String.h> #include <luna/Vector.h> #include <os/File.h> struct Command { Vector<String> args; }; Result<void> init_builtins(); Result<Option<String>> read_command(SharedPtr<os::File> file); Result<OwnedPtr<Command>> parse_command(StringView command); [[noreturn]] void execute_command(OwnedPtr<Command> command); [[noreturn]] void execute_command_or_builtin(OwnedPtr<Command> command); Result<void> run_builtin(const Vector<String>& args, shell_builtin_t builtin); shell_builtin_t* check_builtin(Command& command); Result<int> execute_command_in_subprocess(OwnedPtr<Command> command, SharedPtr<os::File> input_file, bool interactive);