[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/eytangro/vscode-python/master/pythonFiles/shell_exec.py [Back]  [Original]

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

import os
import sys
import subprocess

# This is a simple solution to waiting for completion of commands sent to terminal.
# 1. Intercept commands send to a terminal
# 2. Send commands to our script file with an additional argument
# 3. In here create a file that'll log the progress.
# 4. Calling code monitors the contents of the file to determine state of execution.

# Last argument is a file that's used for synchronizing the actions in the terminal with the calling code in extension.
lock_file = sys.argv[-1]
shell_args = sys.argv[1:-1]

print('Executing command in shell >> ' + ' '.join(shell_args))

with open(lock_file, 'w') as fp:
    try:
        # Signal start of execution.
        fp.write('START\n')
        fp.flush()

        subprocess.check_call(shell_args, stdout=sys.stdout, stderr=sys.stderr)

        # Signal start of execution.
        fp.write('END\n')
        fp.flush()
    except Exception:
        import traceback
        print(traceback.format_exc())
        # Signal end of execution with failure state.
        fp.write('FAIL\n')
        fp.flush()

Web Proxy Viewer  |  New URL  |  Original Page