in src/azService.ts [171:205]
private spawn(pythonLocation: string, processOptions?: SpawnOptions) {
const process = spawn(join(__dirname, `../../service/az-service${isWindows ? '.bat' : ''}`), [pythonLocation], processOptions);
process.stdout.setEncoding('utf8');
process.stdout.on('data', data => {
this.data += data;
const nl = this.data.indexOf('\n');
if (nl !== -1) {
const line = this.data.substr(0, nl);
this.data = this.data.substr(nl + 1);
const response = JSON.parse(line);
const listener = this.listeners[response.sequence];
if (listener) {
delete this.listeners[response.sequence];
listener(undefined, response);
}
}
});
process.stderr.setEncoding('utf8');
process.stderr.on('data', data => {
console.error(data);
});
process.on('error', err => {
console.error(err);
});
process.on('exit', (code, signal) => {
console.error(`Exit code ${code}, signal ${signal}`);
this.process = undefined;
for (const sequence in this.listeners) {
const listener = this.listeners[sequence];
delete this.listeners[sequence];
listener(`Python process terminated with exit code ${code}, signal ${signal}.`, undefined);
}
});
return process;
}