@libotony/sharp-cli
Version:
Sharp command line helper
75 lines • 6.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable:max-line-length
const child_process_1 = require("child_process");
const events_1 = require("events");
const fs = require("fs");
const debug = require('debug')('sharp:runner:solo');
class SoloRunner extends events_1.EventEmitter {
constructor(path, port = 8668) {
super();
this.child = null;
this.exited = false;
if (port > 65535 || port < 0) {
throw new Error('invalid port number');
}
this.port = port;
fs.accessSync(path, fs.constants.F_OK | fs.constants.X_OK);
this.path = path;
}
start() {
this.child = child_process_1.spawn(this.path, ['solo', '--on-demand', '--api-addr', '127.0.0.1:' + this.port], { stdio: ['ignore', 'pipe', 'pipe'] });
this.child.on('exit', (code, signal) => {
this.exited = true;
this.emit('exit');
});
this.child.stderr.on('data', (msg) => {
debug(msg.toString().trim());
});
this.child.stdout.on('data', (msg) => {
debug(msg.toString().trim());
});
// 'Can not be spawned' error emitted by event other than synchronously
return new Promise((resolve, reject) => {
const child = this.child;
const onError = (e) => {
detachEvents();
return reject(e);
};
const onStdout = (data) => {
detachEvents();
if (data.toString().startsWith('Starting Thor solo')) {
child.on('error', (e) => {
debug('running solo node error', e);
});
return resolve();
}
else {
return reject(new Error('Failed to start solo node: ' + data.toString().trim()));
}
};
const detachEvents = () => {
child.removeListener('error', onError);
child.stdout.removeListener('data', onStdout);
};
child.once('error', onError);
child.stdout.once('data', onStdout);
});
}
close() {
return new Promise((resolve) => {
if (this.exited) {
return resolve();
}
this.child.on('close', () => {
resolve();
});
this.child.kill('SIGTERM');
});
}
get Exited() {
return this.exited;
}
}
exports.SoloRunner = SoloRunner;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sby1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc29sby1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsaURBQW1EO0FBQ25ELG1DQUFxQztBQUNyQyx5QkFBd0I7QUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFFbkQsTUFBYSxVQUFXLFNBQVEscUJBQVk7SUFNeEMsWUFBWSxJQUFZLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDakMsS0FBSyxFQUFFLENBQUE7UUFOSCxVQUFLLEdBQXNCLElBQUksQ0FBQTtRQUcvQixXQUFNLEdBQUcsS0FBSyxDQUFBO1FBS2xCLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtTQUN6QztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFFcEIsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVySSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUMxQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO1FBRUYsdUVBQXVFO1FBQ3ZFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQU0sQ0FBQTtZQUV6QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUN6QixZQUFZLEVBQUUsQ0FBQTtnQkFDZCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNwQixDQUFDLENBQUE7WUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUM5QixZQUFZLEVBQUUsQ0FBQTtnQkFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRTtvQkFDbEQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDcEIsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUN2QyxDQUFDLENBQUMsQ0FBQTtvQkFDRixPQUFPLE9BQU8sRUFBRSxDQUFBO2lCQUNuQjtxQkFBTTtvQkFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO2lCQUNuRjtZQUNMLENBQUMsQ0FBQTtZQUVELE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQ3RDLEtBQU0sQ0FBQyxNQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUNuRCxDQUFDLENBQUE7WUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM1QixLQUFLLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU0sS0FBSztRQUNSLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsT0FBTyxPQUFPLEVBQUUsQ0FBQTthQUNuQjtZQUVELElBQUksQ0FBQyxLQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFBO1lBQ2IsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsS0FBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDdEIsQ0FBQztDQUNKO0FBaEZELGdDQWdGQyJ9