blob: 2a4785d248093b0c0fbed446b0e7cf769b108837 [file] [log] [blame]
# Expects two env variables:
# PYCHARM_ENGULF_SCRIPT = which script should be engulfed.
# PYCHARM_PREPEND_SYSPATH = which entries should be added to the beginning of sys.path;
# items must be separated by path separator. May be unset.
#
# Given script is loaded and compiled, then sys.path is prepended as requested.
# On win32, getpass is changed to insecure but working version.
# Then the compiled script evaluated, as if it were run by python interpreter itself.
# Works OK with debugger.
import os
import sys
target = os.getenv("PYCHARM_ENGULF_SCRIPT")
print("Running script through buildout: " + target)
assert target, "PYCHARM_ENGULF_SCRIPT must be set"
filepath = os.path.abspath(target)
f = None
try:
f = open(filepath, "r")
source = "\n".join((s.rstrip() for s in f.readlines()))
finally:
if f:
f.close()
from fix_getpass import fixGetpass
fixGetpass()
#prependable = os.getenv("PYCHARM_PREPEND_SYSPATH")
#if prependable:
# sys.path[0:0] = [x for x in prependable.split(os.path.pathsep)]
# include engulfed's path, everyone expects this
our_path = os.path.dirname(filepath)
if our_path not in sys.path:
sys.path.append(our_path)
compile(source, target, "exec")
exec(source)
# here we come