pythonScript.ts 972 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

'use strict';

import { spawn } from 'child_process';
import { Logger, getLogger } from './log';

const python = process.platform === 'win32' ? 'python.exe' : 'python3';

export async function runPythonScript(script: string, logger?: Logger): Promise<string> {
    const proc = spawn(python, [ '-c', script ]);

    const procPromise = new Promise<void>((resolve, reject) => {
        proc.on('error', (err: Error) => { reject(err); });
        proc.on('exit', () => { resolve(); });
    });
    await procPromise;

    const stdout = proc.stdout.read().toString();
    const stderr = proc.stderr.read().toString();

    if (stderr) {
        if (logger === undefined) {
liuzhe-lz's avatar
liuzhe-lz committed
25
            logger = getLogger('pythonScript');
26
27
28
29
30
31
32
33
        }
        logger.warning('python script has stderr.');
        logger.warning('script:', script);
        logger.warning('stderr:', stderr);
    }

    return stdout;
}