Initial commit

This commit is contained in:
2024-12-02 06:30:40 +00:00
commit fd62fb822d
33 changed files with 1972 additions and 0 deletions

53
include/cmd/cmd.hpp Normal file
View File

@ -0,0 +1,53 @@
#pragma once
#include <unordered_map>
#include "cmd/cmd_base.hpp"
#include "cmd/cmd_wc.hpp"
#include "cmd/cmd_time.hpp"
#include "cmd/cmd_date.hpp"
#include "cmd/cmd_echo.hpp"
#include "cmd/cmd_touch.hpp"
#include "cmd/cmd_misc.hpp"
namespace fsh
{
class CommandRegistry {
public:
static CommandRegistry& instance() {
static CommandRegistry cmd_registry;
return cmd_registry;
}
Command& get(const std::string n) {
if(cmds.find(n) == cmds.end()) {
throw std::runtime_error("Command not found");
}
return *(cmds[n]);
}
Command& operator[](const std::string n) {
return get(n);
}
private:
CommandRegistry() {
cmds["wc" ] = Command::register_cmd<CmdWc>();
cmds["date" ] = Command::register_cmd<CmdDate>();
cmds["time" ] = Command::register_cmd<CmdTime>();
cmds["echo" ] = Command::register_cmd<CmdEcho>();
cmds["exit" ] = Command::register_cmd<CmdExit>();
cmds["touch"] = Command::register_cmd<CmdTouch>();
cmds["debug"] = Command::register_cmd<CmdPrintTree>();
}
std::unordered_map<std::string, std::unique_ptr<Command> > cmds;
};
}