#include "TessesFramework/TessesFramework.hpp" #include using namespace Tesses::Framework; using namespace Tesses::Framework::Filesystem; using namespace Tesses::Framework::Streams; int main(int argc, char **argv) { if (argc < 2) { printf("USAGE: %s \n", argv[0]); return 1; } std::string root = "./root"; std::string mountDemi = "./demi"; std::string mountJoelSlashJim = "./joelslashjim"; std::shared_ptr rootdir = std::make_shared(LocalFS, root); std::shared_ptr mountDemidir = std::make_shared(LocalFS, mountDemi); std::shared_ptr mountjohnslashjim = std::make_shared(LocalFS, mountJoelSlashJim); std::shared_ptr fs = std::make_shared(rootdir); fs->Mount(std::string("/demi"), mountDemidir); fs->Mount(std::string("/joel/jim"), mountjohnslashjim); std::string command = argv[1]; if (command == "ls") { std::string dir = "/"; if (argc > 2) dir = argv[2]; for (auto item : fs->EnumeratePaths(dir)) { std::cout << item.GetFileName() << std::endl; } } else if (command == "cat") { std::shared_ptr strm = std::make_shared(stdout, false, "wb", false); for (int a = 2; a < argc; a++) { std::string path = argv[a]; auto f = fs->OpenFile(path, "rb"); if (f != nullptr) { f->CopyTo(strm); } } } }