hotkeys/bin/updateCopies.js
2023-09-29 17:45:29 +02:00

102 lines
3.3 KiB
JavaScript

const path = require("path");
const exec = require('child_process').exec;
const fs = require('fs');
const packageName = require("../package.json").name;
let pathsToProjects = [
"/Users/sguenter/Projekte/Privat/dnd",
// "/home/silas/Projekte/web/nextjsTest/poc-nextjs",
// "/home/silas/Projekte/web/project-echo",
// "/home/silas/Projekte/web/smd-mail",
// "/home/silas/Projekte/web/dnd",
// "/home/silas/Projekte/web/bat",
// "/home/silas/Projekte/web/typeorm-sync",
// "/home/silas/Projekte/web/typeorm-sync-nextjs",
// "/home/silas/Projekte/web/worktime",
// "/home/silas/Projekte/web/TaskList",
// "/home/silas/Projekte/web/hoffnungsfest",
// "/home/silas/Projekte/web/geometry",
// "/home/silas/Projekte/web/react-bootstrap-mobile",
// "/home/silas/Projekte/web/react-bootstrap-mobile",
// "/home/silas/Projekte/chrome/dmscreen",
// "/home/silas/Projekte/web/smd-mail",
// "/home/silas/Projekte/web/prayercircle",
// "/home/silas/Projekte/Web/stories",
// "/home/silas/Projekte/web/cordova-sites",
// "/home/silas/Projekte/web/cordova-sites-easy-sync",
// "/home/silas/Projekte/Web/cordova-sites-user-management",
// "/home/silas/Projekte/i9/mbb",
// "/home/silas/Projekte/Web/bible-lexicon",
// "/var/www/i9/mbb",
// "/home/silas/PhpstormProjects/cordova-sites-user-management",
// "/home/silas/PhpstormProjects/project-echo",
];
const deleteFolderRecursive = function(path) {
if (fs.existsSync(path)) {
fs.readdirSync(path).forEach(function(file, index){
let curPath = path + "/" + file;
if (fs.lstatSync(curPath).isDirectory()) { // recurse
deleteFolderRecursive(curPath);
} else { // delete file
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(path);
}
};
async function execPromise(command) {
return new Promise((resolve, reject) => {
console.log("executing " + command + "...");
exec(command, (err, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (err) {
reject([err, stdout, stderr]);
} else {
resolve([stdout, stderr]);
}
});
});
}
execPromise("npm pack").then(async (std) => {
let thisPath = process.cwd();
let name = std[0].trim();
let pathToTar = path.resolve(thisPath, name);
if (!fs.existsSync("tmp")) {
fs.mkdirSync("tmp");
}
process.chdir("tmp");
await execPromise("tar -xvzf " + pathToTar + " -C ./");
process.chdir("package");
fs.unlinkSync("package.json");
let promise = Promise.resolve();
pathsToProjects.forEach((project) => {
promise = promise.then(async () => {
let resultDir = path.resolve(project, "node_modules", packageName);
console.log(resultDir, fs.existsSync(resultDir));
if (!fs.existsSync(resultDir)) {
fs.mkdirSync(resultDir);
}
return execPromise("cp -r ./* "+resultDir);
});
});
await promise;
process.chdir(thisPath);
fs.unlinkSync(name);
deleteFolderRecursive("tmp");
// fs.unlinkSync("tmp");
console.log("done!");
}).catch(e => {
console.error(e);
});