#pragma once #include #include "cmd/cmd_base.hpp" #include "cmd/cmd_batch.hpp" #include "cmd/cmd_date.hpp" #include "cmd/cmd_echo.hpp" #include "cmd/cmd_head.hpp" #include "cmd/cmd_misc.hpp" #include "cmd/cmd_time.hpp" #include "cmd/cmd_touch.hpp" #include "cmd/cmd_truncate.hpp" #include "cmd/cmd_tr.hpp" #include "cmd/cmd_prompt.hpp" #include "cmd/cmd_rm.hpp" #include "cmd/cmd_wc.hpp" namespace fsh { // Ovaj singleton odrzava podatke o komanadama 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 " + n); } return *(cmds[n]); } Command& operator[](const std::string n) { return get(n); } private: // Nove komande bi registrovali ovde: CommandRegistry() { cmds["tr"] = Command::register_cmd(); cmds["rm"] = Command::register_cmd(); cmds["wc"] = Command::register_cmd(); cmds["date"] = Command::register_cmd(); cmds["head"] = Command::register_cmd(); cmds["time"] = Command::register_cmd(); cmds["echo"] = Command::register_cmd(); cmds["exit"] = Command::register_cmd(); cmds["batch"] = Command::register_cmd(); cmds["touch"] = Command::register_cmd(); cmds["debug"] = Command::register_cmd(); cmds["prompt"] = Command::register_cmd(); cmds["truncate"] = Command::register_cmd(); } std::unordered_map > cmds; }; }