opm-cli
Version:
Unofficial package manager for Sponge's Ore Plugin Repository.
59 lines (58 loc) • 2.36 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const shell = require("shelljs");
const repl = require("repl");
const get_server_1 = require("../../util/get-server");
const config_1 = require("../../util/config");
let child = null;
let server = null;
function evaluate(cmd) {
if (child != null) {
child.stdin.write(cmd);
}
}
function start() {
return __awaiter(this, void 0, void 0, function* () {
const jarFile = yield get_server_1.default();
if (jarFile != null) {
const { launchProperties } = yield config_1.getConfig();
const execString = `java -Xms${launchProperties.minRam} -Xmx${launchProperties.maxRam} -jar ${jarFile}`;
child = shell.exec(execString, { async: true }, (code) => {
if (server != null) {
if (child != null) {
child.kill();
child = null;
}
server.close();
}
});
server = repl.start({
prompt: '> ',
eval: evaluate,
});
server.on('exit', () => {
if (child != null && !child.killed) {
console.log('Closing server. Force killing in 3 seconds.');
child.stdin.write('stop');
setTimeout(() => {
if (child != null) {
child.kill();
}
}, 3000);
}
});
}
else {
console.log('Unable to find server.');
}
});
}
exports.default = start;