module.exports = { ReadFile: ReadFile, WriteFile: WriteFile, writeFileAsync: WriteFileAsync, AppendToFile: AppendToFile, Beep: Beep, WriteBackup: WriteBackup, FileExists: FileExists, CreatePath: CreatePath, GetAllFilesFromFolder: GetAllFilesFromFolder }; var fs = require('fs'); var logger = require('./logger.js'); const recievedFile = "stats/recieved"; const manFile = "public/man.html"; const logFile = "stats/logs"; const dataFile = "public/data.json"; function ReadFile(name) { if (!FileExists(name)) throw "No such file: " + name; return fs.readFileSync(name, "utf8"); } function FileExists(path) { return fs.existsSync(path); } function CreatePath(path, onlyPath) { if (FileExists(path)) return; var p = path.split("/"); var currDir = p[0]; for (var i = 1; i < p.length; i++) { if (currDir != "" && !fs.existsSync(currDir)) { try { fs.mkdirSync(currDir); } catch (e) { console.log("Failed to make " + currDir + " directory... "); } } currDir += "/" + p[i]; } if (onlyPath == undefined || onlyPath == false) fs.writeFileSync(path, ""); else fs.mkdirSync(path); } function WriteFile(content, path) { CreatePath(path); fs.writeFileSync(path, content); } function WriteFileAsync(content, path) { CreatePath(path); fs.writeFile(path, content, function(err) { if (err) { logger.Log("Error writing file: " + path + " (sync)", logger.GetColor("redbg")); } }); } function AppendToFile(data, file) { CreatePath(file); fs.appendFile(file, "\n" + data, function(err) { if (err) logger.Log("Error writing log file: " + file + " (sync)", logger.GetColor("redbg")); }); } function Beep() { try { process.stdout.write('\x07'); } catch (e) { console.log("error beepin"); } } function WriteBackup() { try { WriteFileAsync(ReadFile(dataFile), 'public/backs/data_' + new Date().toString()); } catch (e) { logger.Log("Error backing up data json file!", logger.GetColor("redbg")); console.log(e); } } function GetAllFilesFromFolder(dir) { var results = []; fs.readdirSync(dir).forEach(function(file) { file = dir + '/' + file; var stat = fs.statSync(file); if (stat && stat.isDirectory()) { results = results.concat(_getAllFilesFromFolder(file)); } else results.push(file); }); return results; }