#!/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) # # Version 2.11 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)" ]; 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" ]; then print_statement="import os;import odoo;print os.path.abspath(odoo.__file__)" else 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 odoo_bin=odoo-bin else 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) fi if test -z "$module_path"; then 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 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 else echo "DEBUG - Odoo found by using module path" fi fi # # Try to handle argument to this program to give them back to odoo without duplicating them # args=$* if [ "$ODOO_TYPE" = "odoo8" ]; then if echo $args | grep -q -e "\( \|^\)--data-dir"; then data_dir="" else data_dir=" --data-dir=$odoo/var/tmp" fi else data_dir="" fi 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 config="-c ${project_home}/conf/dev/odoo.conf" if echo $args | grep -q -e "\( \|^\)--addons-path"; then addons_path="" else 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 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()]))") if [ -n "$pathes" ]; then addons_path="--addons-path=$pathes" fi fi fi fi # # Start odoo # echo "INFO - Version: $($odoo_bin --version)" echo "DEBUG - command line is: $odoo_bin $config $db_host $data_dir $addons_path $args" $odoo_bin $config $db_host $data_dir $addons_path $args