@@ -1213,4 +1213,122 @@ void WsjcppLog::add(WsjcppColorModifier &clr, const std::string &sType, const st
12131213 }
12141214}
12151215
1216+ // ---------------------------------------------------------------------
1217+ // WsjcppResourceFile
1218+
1219+ WsjcppResourceFile::WsjcppResourceFile () {
1220+ WsjcppResourcesManager::add (this );
1221+ }
1222+
1223+ // ---------------------------------------------------------------------
1224+
1225+
1226+ // ---------------------------------------------------------------------
1227+ // WsjcppResourcesManager
1228+
1229+ std::vector<WsjcppResourceFile*> *g_pWsjcppResourceFiles = nullptr ;
1230+
1231+ void WsjcppResourcesManager::initGlobalVariables () {
1232+ if (g_pWsjcppResourceFiles == nullptr ) {
1233+ g_pWsjcppResourceFiles = new std::vector<WsjcppResourceFile*>();
1234+ }
1235+ }
1236+
1237+ // ---------------------------------------------------------------------
1238+
1239+ void WsjcppResourcesManager::add (WsjcppResourceFile* pStorage) {
1240+ WsjcppResourcesManager::initGlobalVariables ();
1241+ g_pWsjcppResourceFiles->push_back (pStorage);
1242+ }
1243+
1244+ // ---------------------------------------------------------------------
1245+
1246+ bool WsjcppResourcesManager::has (const std::string &sFilename ) {
1247+ WsjcppResourcesManager::initGlobalVariables ();
1248+ for (int i = 0 ; i < WsjcppResourcesManager::list ().size (); i++) {
1249+ if (WsjcppResourcesManager::list ()[i]->getFilename () == sFilename ) {
1250+ return true ;
1251+ }
1252+ }
1253+ return false ;
1254+ }
1255+
1256+ // ---------------------------------------------------------------------
1257+
1258+ WsjcppResourceFile* WsjcppResourcesManager::get (const std::string &sFilename ) {
1259+ WsjcppResourcesManager::initGlobalVariables ();
1260+ for (int i = 0 ; i < WsjcppResourcesManager::list ().size (); i++) {
1261+ if (WsjcppResourcesManager::list ()[i]->getFilename () == sFilename ) {
1262+ return WsjcppResourcesManager::list ()[i];
1263+ }
1264+ }
1265+ return nullptr ;
1266+ }
1267+
1268+ // ---------------------------------------------------------------------
1269+
1270+ const std::vector<WsjcppResourceFile*> &WsjcppResourcesManager::list () {
1271+ return *g_pWsjcppResourceFiles;
1272+ }
1273+
1274+ // ---------------------------------------------------------------------
1275+
1276+ /*
1277+ bool WsjcppResourcesManager::make(const std::string &sWorkspace) {
1278+ if (!WsjcppResourcesManager::createFolders(sWorkspace)) {
1279+ return false;
1280+ }
1281+ return WsjcppResourcesManager::extractFiles(sWorkspace);
1282+ }
1283+
1284+ // ---------------------------------------------------------------------
1285+
1286+ bool WsjcppResourcesManager::createFolders(const std::string &sWorkspace) {
1287+ // prepare folders
1288+ std::vector<std::string> vCreateDirs;
1289+ vCreateDirs.push_back(sWorkspace + "/logs");
1290+ vCreateDirs.push_back(sWorkspace + "/teams");
1291+ vCreateDirs.push_back(sWorkspace + "/checkers");
1292+ vCreateDirs.push_back(sWorkspace + "/html");
1293+ vCreateDirs.push_back(sWorkspace + "/html/css");
1294+ vCreateDirs.push_back(sWorkspace + "/html/js");
1295+ vCreateDirs.push_back(sWorkspace + "/html/images");
1296+ vCreateDirs.push_back(sWorkspace + "/html/images/teams");
1297+ vCreateDirs.push_back(sWorkspace + "/html/images/states");
1298+
1299+ for(int i = 0; i < vCreateDirs.size(); i++) {
1300+ std::string sPath = vCreateDirs[i];
1301+ // check dir existing
1302+ if (!FS::dirExists(sPath)) {
1303+ // try make dir
1304+ if (!FS::makeDir(sPath)) {
1305+ std::cout << "Could not create folder " << sPath << std::endl;
1306+ return false;
1307+ } else {
1308+ std::cout << "Created folder " << sPath << std::endl;
1309+ }
1310+ }
1311+ }
1312+ return true;
1313+ }
1314+
1315+ // ---------------------------------------------------------------------
1316+
1317+ bool WsjcppResourcesManager::extractFiles(const std::string &sWorkspace) {
1318+ // TODO mkdir -p for files
1319+ const std::vector<WsjcppResourceFile*> list = WsjcppResourcesManager::list();
1320+ for(int i = 0; i < list.size(); i++) {
1321+ std::string sFilename = sWorkspace + "/" + list[i]->filename();
1322+ if (!FS::fileExists(sFilename)) {
1323+ if (!FS::writeFile(sFilename, list[i]->buffer(), list[i]->bufferSize())) {
1324+ std::cout << "Could not write file " << sFilename << std::endl;
1325+ return false;
1326+ } else {
1327+ std::cout << "Created file " << sFilename << std::endl;
1328+ }
1329+ }
1330+ }
1331+ return true;
1332+ }
1333+ */
12161334
0 commit comments