#!/bin/sh
# Upgrade my_company when the manifest version differs from the installed version.
set -e
CONF=/tmp/odoo.runtime.conf
cat /etc/odoo/odoo.conf > "$CONF"
if [ -n "$SODOO_ADMIN_PASSWORD" ]; then
  echo "admin_passwd = $SODOO_ADMIN_PASSWORD" >> "$CONF"
fi
if [ -n "$SODOO_DB_PASSWORD" ]; then
  echo "db_password = $SODOO_DB_PASSWORD" >> "$CONF"
fi

if [ ! -f /mnt/extra-addons/my_company/__manifest__.py ]; then
  echo "my_company addon not found — skipping upgrade."
  exit 0
fi

NEEDS=$(python3 <<PY
import ast
import odoo
from odoo.tools import config
config.parse_config(['-c', '${CONF}', '-d', 'odoo', '--no-http'])
with open('/mnt/extra-addons/my_company/__manifest__.py', 'r', encoding='utf-8') as manifest_file:
    manifest = ast.literal_eval(manifest_file.read())
manifest_version = manifest.get('version', '')
registry = odoo.registry('odoo')
with registry.cursor() as cr:
    env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
    mod = env['ir.module.module'].search([('name', '=', 'my_company')], limit=1)
    if not mod or mod.state != 'installed':
        print('no')
    else:
        installed = mod.latest_version or mod.installed_version or ''
        print('yes' if manifest_version != installed else 'no')
PY
)

if [ "$NEEDS" = "yes" ]; then
  echo "Upgrading my_company module ..."
  odoo -c "$CONF" -d odoo --stop-after-init -u my_company
  echo "my_company upgraded."
else
  echo "my_company is up to date."
fi
