UNPKG

intreface.cli

Version:

Intreface Dev Tools

54 lines (53 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.timeout = exports.prettyJSON = exports.writeConfig = exports.readConfig = exports.serverNginxRestart = exports.isServiceRunning = exports.getDirectoryList = exports.isWin = void 0; const fs = require("fs"); const objectMerge = require("deepmerge"); const objectPath = require("object-path"); const path = require("path"); const child_process = require("child_process"); const io_1 = require("./io"); const configDirectory = `${global.process.env.LOCALAPPDATA}\\intreface\\cli`; const configFile = `${configDirectory}\\config.json`; exports.isWin = process.platform === "win32"; exports.getDirectoryList = (directory) => fs.readdirSync(directory, { withFileTypes: true }) .filter(dirent => dirent.isDirectory()) .map(dirent => dirent.name); exports.isServiceRunning = (name) => { let result = child_process.execSync(`tasklist /FI "imagename eq ${name}*"`).toString(); let regex = new RegExp(`${name}[a-z0-9_\-]*?\.exe`, 'i'); return !!result.match(regex); }; exports.serverNginxRestart = async () => { const config = objectPath(exports.readConfig()); const executable = path.join(config.get('directory.server', ''), '/bin/nginx/nginx.exe'); try { child_process.execSync(`${executable} -s quit`, { stdio: 'ignore', cwd: path.dirname(executable) }); } catch (e) { } await exports.timeout(2000); // @note: Workaround. Exists strange issue with nignx which doesn't allow to complete process. @todo try to fix child_process.spawn(`${executable}`, ['-c', `${path.join(config.get('directory.server', ''), '/conf/nginx.conf')}`], { stdio: 'inherit', detached: true, cwd: path.dirname(executable) }).unref(); }; exports.readConfig = () => { if (!io_1.isFileExist(configFile)) { return {}; } return JSON.parse(fs.readFileSync(configFile, 'utf8')); }; exports.writeConfig = (config) => { if (!io_1.isDirectoryExist(configDirectory)) { fs.mkdirSync(configDirectory, { recursive: true }); } fs.writeFileSync(configFile, JSON.stringify(objectMerge(exports.readConfig(), config)), { flag: 'w', encoding: 'utf8' }); }; exports.prettyJSON = (obj) => { return JSON.stringify(obj, null, 4); }; exports.timeout = (ms) => { return new Promise(resolve => setTimeout(resolve, ms)); };