homebridge-lg-airco
Version:
Homebridge plugin to control a Smart Thinq enabled LG airco unit. Makes use of WideQ => https://github.com/sampsyo/wideq
43 lines (35 loc) • 1.46 kB
text/typescript
const {spawn} = require('child_process');
export class PythonUtils {
public static logDebug: Function;
public static async executePython3(workingDir: string, scriptName: string, args: string[], forceCloseProcessAfterOutput: boolean = false): Promise<string> {
const pythonArgs: string[] = [];
for (const arg of args) {
if(arg) {
pythonArgs.push(arg.trim());
}
}
return new Promise((resolve, reject) => {
let data: string[] = [];
this.logDebug('python3 -u example.py ' + pythonArgs.join(' '));
const process = spawn('python3', ['-u', 'example.py'].concat(pythonArgs), {cwd: workingDir});
process.stdout.on('data', (output: any) => {
this.logDebug(output.toString());
data.push(output.toString());
if (forceCloseProcessAfterOutput) {
process.kill("SIGINT");
}
});
process.stderr.on('data', (output: any) => {
console.error(output.toString());
//This is not always an error, could just be debug info!
});
process.on('close', (exitCode: number) => {
if (exitCode === 0) {
resolve(data.join('\n'));
} else {
reject('python error!')
}
});
});
}
}