You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

75 lines
2.6 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import subprocess
import sys
from logging import DEBUG, INFO, WARNING
from doodbalib import logger, which
# Call this file linked from another file called `build` or `entrypoint`
mode = os.path.basename(__file__)
dir_odoo = "/opt/odoo"
dir_common = os.path.join(dir_odoo, "common", "%s.d" % mode)
dir_custom = os.path.join(dir_odoo, "custom", "%s.d" % mode)
# Find scripts
files = [(d, dir_common) for d in os.listdir(dir_common)]
try:
files += [(d, dir_custom) for d in os.listdir(dir_custom)]
except OSError:
pass
# Run scripts
for executable, folder in sorted(files):
command = os.path.join(folder, executable)
if os.access(command, os.X_OK):
logger.debug("Executing %s", command)
subprocess.check_call(command)
# Allow to omit 1st command and default to `odoo`
extra_command = sys.argv[1:]
if extra_command:
if extra_command[0] == "shell" or extra_command[0].startswith("-"):
extra_command.insert(0, "odoo")
# Set the DB creation language, if needed
if extra_command[0] in {"odoo", "/usr/local/bin/odoo"}:
if os.environ.get("INITIAL_LANG"):
from psycopg2 import OperationalError, connect
try:
connection = connect(dbname=os.environ.get("PGDATABASE"))
connection.close()
except OperationalError:
# No DB exists, set initial language
extra_command += ["--load-language", os.environ["INITIAL_LANG"]]
if os.environ.get("PTVSD_ENABLE") == "1":
# Warn deprecation
logger.log(
WARNING,
"ptvsd has beed deprecated for python debugging. "
"Please use debugpy (see https://github.com/Tecnativa/doodba#debugpy)",
)
# See `python -m ptvsd -h` to understand this
extra_command[0] = os.path.realpath(which(extra_command[0]))
extra_command = (
["python", "-m", "ptvsd"]
+ os.environ.get("PTVSD_ARGS", "").split()
+ extra_command
)
elif os.environ["DEBUGPY_ENABLE"] == "1":
# See `python -m debugpy -h` to understand this
extra_command[0] = os.path.realpath(which(extra_command[0]))
extra_command = (
["python", "-m", "debugpy"]
+ os.environ["DEBUGPY_ARGS"].split()
+ extra_command
)
logger.log(
DEBUG if extra_command[0] == "/qa/insider" else INFO,
"Executing %s",
" ".join(extra_command),
)
os.execvp(extra_command[0], extra_command)