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

log-entrypoint "Assemble addons path ${ODOO_ADDONS_PATH}..."

# Add extra addons path to addons path
if [[ -d '/mnt/extra-addons' ]]; then
    log-entrypoint 'Prepend /mnt/extra-addons to addons path.'
    odoo_addons_path="/mnt/extra-addons,$ODOO_ADDONS_PATH"
fi

# Add git path to addons path
if [[ -d '/var/lib/odoo/git' ]]; then
    log-entrypoint 'Prepend /var/lib/odoo/git to addons path.'
    odoo_addons_path="/var/lib/odoo/git,$odoo_addons_path"
fi

# Add enterprise path to addons path
odoo_enterprise_path=${ODOO_ENTERPRISE_PATH:="/var/lib/odoo/enterprise"}
if [[ -d "$odoo_enterprise_path" ]]; then
    log-entrypoint "Prepend $odoo_enterprise_path to addons path."
    odoo_addons_path=$(echo "${odoo_enterprise_path},${odoo_addons_path}")
fi

# Add test addons dir to addons path
if [[ -n "$TEST_ADDONS_DIR" ]]; then
    log-entrypoint "Append $TEST_ADDONS_DIR to addons path."
    odoo_addons_path=$(echo "${odoo_addons_path},${TEST_ADDONS_DIR}")
fi

if [[ -n "$odoo_addons_path" ]]; then
    log-entrypoint "Resolve addons path for Odoo ${ODOO_VERSION}..."

    odoo_addons_path=$(echo "$odoo_addons_path" | tr ',' '\n' | sort -u | while read -r dir; do
        if [[ -d "$dir" ]]; then
            find "$dir" -name "__manifest__.py" -type f 2>/dev/null | while read -r manifest; do
                version=$(grep '[\"'\'']version[\"'\'']:.[\"'\'']' "$manifest" | sed -E 's/.+[\"'\'']version[\"'\'']:.[\"'\'']([0-9].+)[\"'\''].+/\1/g')

                if [[ $version =~ ^[0-9]+\.[0-9]+$ ||
                      $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ||
                      $version =~ ^${ODOO_VERSION}\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
                    echo $(dirname $(dirname "$manifest"))
                fi
            done
        fi
    done | sort -u | paste -sd, )

    # Combine predefined addons path and odoo addons path
    addons_path=$(echo "${ADDONS_PATH},${odoo_addons_path}")
fi

echo $addons_path