mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-25 19:52:36 +01:00
88 lines
1.8 KiB
JavaScript
88 lines
1.8 KiB
JavaScript
const path = require("path");
|
|
const fs = require("fs");
|
|
const { env } = require("process");
|
|
const { execSync } = require("child_process");
|
|
const { argv, stdout, exit } = require("process");
|
|
|
|
const projectRoot = path.resolve(path.join(__dirname, ".."));
|
|
|
|
function copyRecursiveSync(src, dest) {
|
|
//if (verbose) console.log(`cpsync: ${src} -> ${dest}`);
|
|
let exists = fs.existsSync(src);
|
|
if (!exists) {
|
|
console.log(src + " doesn't exist, not copying!");
|
|
return;
|
|
}
|
|
let stats = exists && fs.statSync(src);
|
|
let isDirectory = exists && stats.isDirectory();
|
|
if (isDirectory) {
|
|
fs.mkdirSync(dest, { recursive: true });
|
|
fs.readdirSync(src).forEach(function (childItemName) {
|
|
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
|
});
|
|
} else {
|
|
fs.copyFileSync(src, dest);
|
|
}
|
|
}
|
|
|
|
function execIn(cmd, workdir, opts) {
|
|
try {
|
|
return execSync(cmd, {
|
|
cwd: workdir,
|
|
shell: true,
|
|
env: process.env,
|
|
encoding: "utf-8",
|
|
...opts
|
|
});
|
|
} catch (error) {
|
|
return error.stdout;
|
|
}
|
|
}
|
|
|
|
function getLines(output) {
|
|
return output.split("\n").length;
|
|
}
|
|
|
|
function getDirs(dir) {
|
|
return fs.readdirSync(dir).filter((x) => {
|
|
try {
|
|
fs.readdirSync(dir.join(dir, x));
|
|
return true;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
|
|
function walk(dir) {
|
|
let results = [];
|
|
let list = fs.readdirSync(dir);
|
|
list.forEach(function (file) {
|
|
file = dir + "/" + file;
|
|
let stat = fs.statSync(file);
|
|
if (stat && stat.isDirectory()) {
|
|
/* Recurse into a subdirectory */
|
|
results = results.concat(walk(file));
|
|
} else {
|
|
results.push(file);
|
|
}
|
|
});
|
|
return results;
|
|
}
|
|
|
|
function sanitizeVarName(str) {
|
|
return str.replace("-", "_").replace(/[^\w\s]/gi, "");
|
|
}
|
|
|
|
module.exports = {
|
|
//consts
|
|
projectRoot,
|
|
//functions
|
|
copyRecursiveSync,
|
|
execIn,
|
|
getLines,
|
|
getDirs,
|
|
walk,
|
|
sanitizeVarName
|
|
};
|