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

log-entrypoint "Assemble addons path from ${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}..."

    # Search for module manifest files, get module paths, then parent directories
    odoo_addons_path=$(echo "$odoo_addons_path" | tr ',' '\n' | sort -u | while read -r dir; do
        if [[ -d "$dir" ]]; then
            rg -l -i --files-with-matches "version.*([0-9]+\.[0-9]+|[0-9]+\.[0-9]+\.[0-9]+|${ODOO_VERSION}(\.[0-9]+)+)" --glob="*__manifest__.py" "$dir"
        fi
    done | while read -r manifest; do
        dirname "$manifest"
    done | sort -u | uniq | while read -r module_dir; do
        dirname "$module_dir"
    done | sort -u | uniq | tr '\n' ',' | sed 's/,$//')

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

export ADDONS_PATH="$addons_path"
