הערה (קובץ קוד)
קובץ זה הוא קובץ קוד מסוג C.
#pragma once
#include <memory>
#include <string>
#include <vector>
#include "Action.h"
#include "Directory.h"
#include "TextFile.h"
/**
* @class FileSystem
* Singleton that manages the file system operations and executions.
*/
class FileSystem {
std::vector<std::string> history;
std::unique_ptr<Directory> root;
FileSystem();
FileSystem(const FileSystem&) = delete;
FileSystem& operator=(const FileSystem&) = delete;
// handlers to handle the different types of actions
std::unique_ptr<Action> handleHelp(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleCreate(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleDelete(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleList(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleRead(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleWrite(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleSearch(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleImport(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleExport(const std::vector<std::string>& args) const;
std::unique_ptr<Action> handleHistory(const std::vector<std::string>& args) const;
// helper functions for the handlers
enum ActionType { HELP, CREATE, DELETE, LIST, READ, WRITE, SEARCH, IMPORT, EXPORT, HISTORY };
static void checkAmountOfArgs(ActionType action, unsigned int num, const std::string& type = "");
Directory& getDirectoryFromPath(const std::vector<std::string>& pathVector,
const std::string& errorMessage) const;
TextFile& getTextFileFromPath(const std::vector<std::string>& pathVector) const;
public:
~FileSystem() = default;
/**
* @return The instance of the FileSystem used by the program.
*/
static FileSystem& getInstance();
/**
* Runs the file system cli.
*/
void run();
};