Skip to content
Snippets Groups Projects
entrypoint-scratch.sh 2.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/sh
    
    # set the postgres database host, port, user and password according to the environment
    # and pass them as arguments to the odoo process if not present in the config file
    : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}}
    : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}}
    : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}}
    : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}}
    
    check_config() {
        param="$1"
        value="$2"
        if ! grep -q -E "^\s*\b${param}\b\s*=" /opt/odoo/etc/odoo.conf ; then
            DB_ARGS="${DB_ARGS} --${param} ${value}"
        fi;
    }
    
    unaccent_db() {
        /usr/bin/python3 -c "import psycopg2
    
    try:
        conn = psycopg2.connect(database='postgres', user='${USER}', password='${PASSWORD}', host='${HOST}', port='${PORT}')
    except:
        print('err: init: fail to connect to database')
        exit(11)
    
    cur = conn.cursor()
    try:
        cur.execute(\"SELECT datname FROM pg_database WHERE datname='${PGDATABASE}'\")
    except:
        print('err: init: fail to execute request')
        cur.close()
        conn.close()
        exit(12)
    
    if not cur.fetchall():
        cur.close()
        conn.close()
        exit(1)
    
    try:
        cur.execute('CREATE EXTENSION IF NOT EXISTS unaccent')
    except:
        print('err: init: fail to execute request')
        cur.close()
        conn.close()
        exit(13)
    
    conn.commit()
    cur.close()
    conn.close()
    exit(0)"
    
        return $?
    }
    
    DB_ARGS=''
    check_config "db_host" "$HOST"
    check_config "db_port" "$PORT"
    check_config "db_user" "$USER"
    check_config "db_password" "$PASSWORD"
    
    unaccent_db
    return_code=$?
    [ "$return_code" -gt 10 ] && exit 1
    if [ "$return_code" == 1 ]; then
      	echo "info: init: database $PGDATABASE does not exist"
      	DB_ARGS="${DB_ARGS} --load-language fr_FR"
    fi
    
    case "$1" in
        -- | odoo)
            shift
            if [[ "$1" == "scaffold" ]] ; then
                exec /opt/odoo/odoo/odoo-bin -c /opt/odoo/etc/odoo.conf "$@"
            else
                exec /opt/odoo/odoo/odoo-bin -c /opt/odoo/etc/odoo.conf "$@" ${DB_ARGS}
            fi
            ;;
        -*)
            exec /opt/odoo/odoo/odoo-bin -c /opt/odoo/etc/odoo.conf "$@" ${DB_ARGS}
            ;;
        *)
            exec "$@"
    esac
    
    exit 1