#!/usr/bin/env python3
import os
import sys

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(BASE_DIR)
import scripts.lib.setup_path_on_import

if __name__ == "__main__":
    if 'posix' in os.name and os.geteuid() == 0:
        print("manage.py should not be run as root.  Use `su zulip` to drop root.")
        sys.exit(1)
    if (os.access('/etc/zulip/zulip.conf', os.R_OK) and not
            os.access('/etc/zulip/zulip-secrets.conf', os.R_OK)):
        # The best way to detect running manage.py as another user in
        # production before importing anything that would require that
        # access is to check for access to /etc/zulip/zulip.conf (in
        # which case it's a production server, not a dev environment)
        # and lack of access for /etc/zulip/zulip-secrets.conf (which
        # should be only readable by root and zulip)
        print("Error accessing Zulip secrets; manage.py in production must be run as the zulip user.")
        sys.exit(1)

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
    from django.conf import settings
    from django.core.management import execute_from_command_line
    from django.core.management.base import CommandError
    from scripts.lib.zulip_tools import log_management_command

    log_management_command(" ".join(sys.argv), settings.MANAGEMENT_LOG_PATH)

    os.environ.setdefault("PYTHONSTARTUP", os.path.join(BASE_DIR, "scripts/lib/pythonrc.py"))
    if "--no-traceback" not in sys.argv and len(sys.argv) > 1:
        sys.argv.append("--traceback")
    try:
        execute_from_command_line(sys.argv)
    except CommandError as e:
        print(e, file=sys.stderr)
        sys.exit(1)

[((6, 0, 6, 25), 'sys.path.append', 'sys.path.append', ({(6, 16, 6, 24): 'BASE_DIR'}, {}), '(BASE_DIR)', False, 'import sys\n'), ((5, 27, 5, 52), 'os.path.abspath', 'os.path.abspath', ({(5, 43, 5, 51): '__file__'}, {}), '(__file__)', False, 'import os\n'), ((24, 4, 24, 72), 'os.environ.setdefault', 'os.environ.setdefault', ({(24, 26, 24, 50): '"""DJANGO_SETTINGS_MODULE"""', (24, 52, 24, 71): '"""zproject.settings"""'}, {}), "('DJANGO_SETTINGS_MODULE', 'zproject.settings')", False, 'import os\n'), ((12, 8, 12, 19), 'sys.exit', 'sys.exit', ({(12, 17, 12, 18): '(1)'}, {}), '(1)', False, 'import sys\n'), ((13, 8, 13, 51), 'os.access', 'os.access', ({(13, 18, 13, 41): '"""/etc/zulip/zulip.conf"""', (13, 43, 13, 50): 'os.R_OK'}, {}), "('/etc/zulip/zulip.conf', os.R_OK)", False, 'import os\n'), ((22, 8, 22, 19), 'sys.exit', 'sys.exit', ({(22, 17, 22, 18): '(1)'}, {}), '(1)', False, 'import sys\n'), ((32, 43, 32, 92), 'os.path.join', 'os.path.join', ({(32, 56, 32, 64): 'BASE_DIR', (32, 66, 32, 91): '"""scripts/lib/pythonrc.py"""'}, {}), "(BASE_DIR, 'scripts/lib/pythonrc.py')", False, 'import os\n'), ((34, 8, 34, 38), 'sys.argv.append', 'sys.argv.append', ({(34, 24, 34, 37): '"""--traceback"""'}, {}), "('--traceback')", False, 'import sys\n'), ((36, 8, 36, 43), 'django.core.management.execute_from_command_line', 'execute_from_command_line', ({(36, 34, 36, 42): 'sys.argv'}, {}), '(sys.argv)', False, 'from django.core.management import execute_from_command_line\n'), ((10, 30, 10, 42), 'os.geteuid', 'os.geteuid', ({}, {}), '()', False, 'import os\n'), ((14, 12, 14, 63), 'os.access', 'os.access', ({(14, 22, 14, 53): '"""/etc/zulip/zulip-secrets.conf"""', (14, 55, 14, 62): 'os.R_OK'}, {}), "('/etc/zulip/zulip-secrets.conf', os.R_OK)", False, 'import os\n'), ((39, 8, 39, 19), 'sys.exit', 'sys.exit', ({(39, 17, 39, 18): '(1)'}, {}), '(1)', False, 'import sys\n')]