import { exec } from "child_process"; import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync, } from "fs"; import path from "path"; export function copyFileSync(source, target) { var targetFile = target; // If target is a directory, a new file with the same name will be created if (existsSync(target)) { if (lstatSync(target).isDirectory()) { targetFile = path.join(target, path.basename(source)); } } writeFileSync(targetFile, readFileSync(source)); } export function copyFolderRecursiveSync(source, target) { var files = []; // Check if folder needs to be created or integrated var targetFolder = path.join(target, path.basename(source)); if (!existsSync(targetFolder)) { mkdirSync(targetFolder); } // Copy if (lstatSync(source).isDirectory()) { files = readdirSync(source); files.forEach(function (file) { var curSource = path.join(source, file); if (lstatSync(curSource).isDirectory()) { copyFolderRecursiveSync(curSource, targetFolder); } else { copyFileSync(curSource, targetFolder); } }); } } export function clearFolder(target) { if (existsSync(target)) { rmSync(target, { recursive: true, force: true }); } mkdirSync(target, { recursive: true }); } export function dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), "m+": (date.getMonth() + 1).toString(), "d+": date.getDate().toString(), "H+": date.getHours().toString(), "M+": date.getMinutes().toString(), "S+": date.getSeconds().toString(), }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace( ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"), ); } } return fmt; } export class Logger { static log(...args) { console.log(...args); } // red static error(...args) { console.error("\u001b[31m [ERROR]", ...args, "\u001b[0m"); } // yellow static warn(...args) { console.warn("\u001b[33m [WARN]", ...args, "\u001b[0m"); } // blue static debug(...args) { console.log("\u001b[34m [DEBUG]\u001b[0m", ...args); } // green static info(...args) { console.log("\u001b[32m [INFO]", ...args, "\u001b[0m"); } // cyan static trace(...args) { console.log("\u001b[36m [TRACE]\u001b[0m", ...args); } } export function isRunning(query, cb) { let platform = process.platform; let cmd = ""; switch (platform) { case "win32": cmd = `tasklist`; break; case "darwin": cmd = `ps -ax | grep ${query}`; break; case "linux": cmd = `ps -A`; break; default: break; } exec(cmd, (err, stdout, stderr) => { cb(stdout.toLowerCase().indexOf(query.toLowerCase()) > -1); }); }