Files
openide/python/helpers/pycharm/django_manage.py

60 lines
1.6 KiB
Python

#!/usr/bin/env python
import os
import sys
from _jb_utils import FileChangesTracker, jb_escape_output
from fix_getpass import fixGetpass
from pycharm_run_utils import adjust_django_sys_path
try:
from runpy import run_module
except ImportError:
from runpy_compat import run_module
adjust_django_sys_path()
base_path = sys.argv.pop()
manage_file = os.getenv('PYCHARM_DJANGO_MANAGE_MODULE')
track_files_pattern = os.environ.get('PYCHARM_TRACK_FILES_PATTERN', None)
if not manage_file:
manage_file = 'manage'
class _PseudoTTY(object):
"""
Wraps stdin to return "true" for isatty() to fool
"""
def __init__(self, underlying):
self.__underlying = underlying
def __getattr__(self, name):
return getattr(self.__underlying, name)
def isatty(self):
return True
if __name__ == "__main__":
fixGetpass()
command = sys.argv[1]
if command in ["syncdb", "createsuperuser"]: # List of commands that need stdin to be cheated
sys.stdin = _PseudoTTY(sys.stdin)
def run_command():
run_module(manage_file, None, '__main__', True)
if track_files_pattern:
print("Tracking file by folder pattern: ", track_files_pattern)
file_changes_tracker = FileChangesTracker(os.getcwd(), track_files_pattern.split(":"))
run_command()
# Report files affected/created by commands. This info is used on Java side.
changed_files = list(file_changes_tracker.get_changed_files())
if changed_files:
print("\n" + jb_escape_output(",".join(changed_files)))
else:
print("File tracking disabled")
run_command()