#!/usr/bin/env bash
set -e

export DB_NAME=${DB_NAME:=""}
export DB_SYSTEM=${DB_SYSTEM:=postgres}
export DB_MAXCONN=${DB_MAXCONN:=64}
export SMTP_SERVER=${SMTP_SERVER:=""}
export SMTP_PORT=${SMTP_PORT:=0}
export SMTP_SSL=${SMTP_SSL:=False}
export SMTP_USER=${SMTP_USER:=""}
export SMTP_PASSWORD=${SMTP_PASSWORD:=""}
export EMAIL_FROM=${EMAIL_FROM:=""}
export RUNNING_ENV=${RUNNING_ENV:=development}
export WITHOUT_DEMO=${WITHOUT_DEMO:=True}
export SERVER_WIDE_MODULES="base,web,$SERVER_WIDE_MODULES"
export PROXY_MODE=${PROXY_MODE:=True}
export LOG_LEVEL=${LOG_LEVEL:=info}
export MAX_CRON_THREADS=${MAX_CRON_THREADS:=2}
export LIST_DB=${LIST_DB:=False}
export LOG_DB=${LOG_DB:=""}
export LOG_HANDLER=${LOG_HANDLER:=':INFO'}
export LOGFILE=${LOGFILE:=None}
export ADMIN_PASSWD=${ADMIN_PASSWD:=odoo}
export DB_FILTER=${DB_FILTER:=""}
export WORKERS=${WORKERS:=0}
export GEVENT_WORKERS=${GEVENT_WORKERS:=1}
export LIMIT_REQUEST=${LIMIT_REQUEST:=8192}
export LIMIT_TIME_CPU=${LIMIT_TIME_CPU:=60}
export LIMIT_TIME_REAL=${LIMIT_TIME_REAL:=120}
export LIMIT_MEMORY_HARD=${LIMIT_MEMORY_HARD:=2684354560}
export LIMIT_MEMORY_SOFT=${LIMIT_MEMORY_SOFT:=2147483648}
export LIMIT_MEMORY_HARD_GEVENT=${LIMIT_MEMORY_HARD_GEVENT:=False}
export LIMIT_MEMORY_SOFT_GEVENT=${LIMIT_MEMORY_SOFT_GEVENT:=False}
export MODULE_AUTO_INSTALL_DISABLED=${MODULE_AUTO_INSTALL_DISABLED:=""}
export ADDITIONAL_ODOO_RC=${ADDITIONAL_ODOO_RC:=""}
export IR_CONFIG_PARAMETER=${IR_CONFIG_PARAMETER:=""}

# ODOO_MAX_HTTP_THREADS is read directly from the environment by Odoo.
# Only export it if explicitly set; otherwise Odoo computes its own default.
if [[ -n "${ODOO_MAX_HTTP_THREADS:-}" ]]; then
    export ODOO_MAX_HTTP_THREADS
fi

# Append SSH keys to ir config parameters
if [[ -n "$GIT_SSH_PRIVATE_KEY" ]]; then
    git_ssh_private_key=$(echo -e "$GIT_SSH_PRIVATE_KEY" | base64 -w0)
    IR_CONFIG_PARAMETER+=$'\n'"git.ssh_private_key = \"$git_ssh_private_key\""
fi
if [[ -n "$GIT_SSH_PUBLIC_KEY" ]]; then
    IR_CONFIG_PARAMETER+=$'\n'"git.ssh_public_key = \"$GIT_SSH_PUBLIC_KEY\""
fi
export IR_CONFIG_PARAMETER

template_file="${ODOO_ENVSUBST_TEMPLATE_FILE:-/etc/odoo/odoo.conf.template}"
output_file="${ODOO_ENVSUBST_OUTPUT_FILE:-/etc/odoo/odoo.conf}"
filter="${ODOO_ENVSUBST_FILTER:-}"

source set-addons-path

defined_envs=$(printf '${%s} ' $(awk "END { for (name in ENVIRON) { print ( name ~ /${filter}/ ) ? name : \"\" } }" < /dev/null ))

if [[ -f "$template_file" ]]; then
    log-entrypoint "Run envsubst on $template_file and output: $output_file"
    envsubst "$defined_envs" < "$template_file" > "$output_file"
fi