#!/bin/bash
set -e

# Get script name
SCRIPT=$(basename "$0")
VERSION="1.0.0"

# Display Help
Help() {
    echo
    echo "$SCRIPT"
    echo
    echo "Description: Install Odoo database in Docker container."
    echo "Syntax: $SCRIPT [-c|-d|-i|-l|-w|-v|help]"
    echo "Example: $SCRIPT -c odoo01 -d erp -i hr_timesheet -l de_CH -w"
    echo "options:"
    echo "  -c    Docker container. Defaults to 'odoo'."
    echo "  -d    Database name."
    echo "  -i    List of odoo modules. Defaults to 'base'."
    echo "  -l    Odoo language. Defaults to 'en_US'."
    echo "  -w    With demo data."
    echo "  -v    Show $SCRIPT version."
    echo "  help  Show $SCRIPT manual."
    echo
}

# Show help and exit
if [[ "$1" == "help" ]]; then
    Help
    exit
fi

# Set defaults
WITHOUT_DEMO="--without-demo=all"

# Process params
while getopts ":c: :d: :i: :l: :w :v" opt; do
    case $opt in
        c) CONTAINER="$OPTARG";;
        d) DATABASE="$OPTARG";;
        i) MODULES="$OPTARG";;
        l) ODOO_LANGUAGE="$OPTARG";;
        w) WITHOUT_DEMO="";;
        v) echo "$SCRIPT version $VERSION"
        exit 0
        ;;
        \?) echo "Invalid option -$OPTARG" >&2
        Help
        exit;;
    esac
done

# Fallback to environment vars and default values
: ${CONTAINER:='odoo'}
: ${MODULES:='base'}
: ${ODOO_LANGUAGE:='en_US'}

# Verify variables
[[ -z "$DATABASE" ]] && { echo "Parameter -d|database is empty" ; exit 1; }

# Switch container name with id
CONTAINER_ID=$(docker ps -f "name=$CONTAINER" -q | tail -n1)

# Set alias
docker_exec_bash="docker exec $CONTAINER_ID /bin/bash -c"

# Install modules on database
echo "Install modules $MODULES with langague $ODOO_LANGUAGE on database $DATABASE."
$docker_exec_bash "odoo -i $MODULES -d $DATABASE --db_host \$HOST -r \$USER -w \$PASSWORD $WITHOUT_DEMO --load-language $ODOO_LANGUAGE --stop-after-init --no-http"
