intreface.cli
Version:
Intreface Dev Tools
54 lines (53 loc) • 2.44 kB
JavaScript
;
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));
};