#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); } } } }