Skip to content
Snippets Groups Projects
start 4.73 KiB
Newer Older
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
#!/bin/sh
# vim: set shiftwidth=4 softtabstop=4:
# 
# This script start odoo for development
#
# You can set ODOO_DATA_DIR and ODOO_DB_HOST if you want to avoid using the default value ($HOME/var/tmp and localhost)
#
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
# Version 2.13
here=$(dirname $0)
project_home=$(cd $here && cd .. && echo $PWD)
python="/usr/bin/env python"
# odoo7, odoo8, odoo10, odoo11 or bzr
ODOO_TYPE=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print c.get('odoo_scripts', 'odoo_type', 'odoo8')")

echo "INFO - Starting odoo for development"

#
# Do some magic to find the odoo command to run
#

# First test if odoo command exists
echo "DEBUG - Trying odoo command"
if [ -x "$(command -v odoo)" ];
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
then
    odoo_bin=odoo
    echo "DEBUG - Odoo command found"
else
    echo "DEBUG - No odoo command found"
    echo "DEBUG - Trying import in python"
    if [ "$ODOO_TYPE" = "odoo11" ] || [ "$ODOO_TYPE" = "odoo10" ];
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    then
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        print_statement="import os;import odoo;print os.path.abspath(odoo.__file__)"
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        print_statement="import os;import openerp;print os.path.abspath(openerp.__file__)"
    fi
    # module_path will be .../<directory>/openerp/__init__.pyc
    module_path=$(python -B -c "$print_statement" 2> /dev/null)
    if [ "$ODOO_TYPE" = "odoo11" ] || [ "$ODOO_TYPE" = "odoo10" ];
    then
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        odoo_bin=odoo-bin
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        odoo_bin=openerp-server
    fi
    if test -z "$module_path";
    then
    echo "DEBUG - No odoo found by using module path"
    virtualenv_name=$(basename $(readlink -f $(dirname start)))
    echo "DEBUG - Trying $virtualenv_name virtualenvwrapper"
    # assume you use virtualenvwrapper, and try the same env name as the project
    venv_python=$WORKON_HOME/$virtualenv_name/bin/python
    if [ -e "$venv_python" ];
    then
        module_path=$($venv_python -B -c "$print_statement" 2> /dev/null)
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    fi
    if test -z "$module_path";
    then
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        echo "DEBUG - No odoo found by using virtuenvwrapper"
        echo "DEBUG - Trying in /opt/odoo/sources/odoo"
        if test -e "/opt/odoo/sources/odoo/$odoo_bin";
        then
            echo "DEBUG - Found in /opt/odoo/sources/odoo"
            odoo_bin=/opt/odoo/sources/odoo/$odoo_bin
	    module_path="/opt/odoo/sources/odoo/odoo/__init__.py"
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
            else
                echo "FATAL - No odoo found"
                echo "INFO - Maybe you forgot to activate your environment?"
                exit 1    
            fi
        else
            echo "DEBUG - Odoo found by using virtuenvwrapper"
        fi
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        echo "DEBUG - Odoo found by using module path"
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    fi
    odoo=$(dirname $(dirname $module_path))
    
    if expr match $odoo  ^.*\.egg$ ;
    then
        odoo="/usr/local/bin"
        odoo_addons_path=${ODOO_ADDONS_PATH:-/opt/odoo/sources/odoo}
    else
        odoo_addons_path=${ODOO_ADDONS_PATH:-$odoo}
    fi
#
# Try to handle argument to this program to give them back to odoo without duplicating them
#
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed

args=$*
if echo $args | grep -q -e "\( \|^\)--db_host";
then
    db_host=""
else
    db_host="--db_host=localhost"
fi
if echo $args | grep -q -e "\( \|^\)-c" -e "\( \|^\)--config";
then
    config=""
    addons_path=""
else
    if [ -e "${project_home}/conf/dev/odoo.conf" ];
    then
        config="-c ${project_home}/conf/dev/odoo.conf"
    fi
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    if echo $args | grep -q -e "\( \|^\)--addons-path";
    then
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        addons_path=""
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    else
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
        if [ "$ODOO_TYPE" = "bzr" ];
        then
            addons_path="--addons-path=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['$HOME/src/openobject-server/openerp/addons','$HOME/src/openobject-addons','$HOME/src/openerp-web/addons']+['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")"
        else
	    if [ "$ODOO_TYPE" = "odoo7" ] || [ "$ODOO_TYPE" = "odoo8" ] || [ "$ODOO_TYPE" = "odoo10" ];
	    then
                pathes=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['$odoo_addons_path/addons']+['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")
	    else
                pathes=$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(','.join(['${project_home}/'+line for line in c.get('odoo_scripts', 'addon_dirs', '').split()]))")
	    fi
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
            if [ -n "$pathes" ];
            then
                addons_path="--addons-path=$pathes"
            fi
        fi
Vincent Hatakeyama's avatar
Vincent Hatakeyama committed
    fi
fi
echo "DEBUG - command line is: $odoo_bin $config $db_host $addons_path $args"
$odoo_bin $config $db_host $addons_path $args