#!/usr/bin/env bash
# Désinstaller un thème comme Odoo le fait lui-même.
#
# « ./run.sh --uninstall theme_x » retire le MODULE, pas le THÈME. Choisir un
# thème (button_choose_theme, ce que pose --install-theme) fait DEUX choses :
# copier ses vues et ressources dans chaque site, et écrire dans
# user_values.scss une personnalisation qui DÉFINIT $o-theme-font-number et
# ses trois voisines. Le chemin de retrait d'Odoo, _theme_remove(), défait les
# deux.
#
# Le désinstaller sans lui laisse donc les copies, et surtout n'écrit jamais
# ces définitions. Mesuré sur une migration réelle 12 -> 13 : le bundle
# web.assets_frontend s'arrête sur « Undefined variable: $o-theme-font-number
# ». La variable venait des fichiers option_font_body_* d'Odoo 12, supprimés
# en 13.0 ; seul le thème la redéfinissait encore, et le retirer a mis à nu
# une personnalisation figée depuis des années.
#
# Usage : ./script/addons/uninstall_addons_theme.sh [config]
Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset
if [[ $# -lt 2 ]]; then
echo "Usage: $0 [config]"
exit 1
fi
DATABASE="$1"
THEME="$2"
CONFIG="${3:-./config.conf}"
if [[ $# -eq 3 ]]; then
./script/addons/check_addons_exist.py -m "$THEME" -c "$3"
else
./script/addons/check_addons_exist.py -m "$THEME"
fi
retVal=$?
if [[ $retVal -ne 0 ]]; then
echo -e "${Red}Error${Color_Off} check_addons_exist.py into uninstall_addons_theme.sh"
exit 1
fi
echo "Unload theme '$THEME' from every website of BD '$DATABASE'"
# Le déchargement passe par le shell : _theme_remove() n'a pas d'option de
# ligne de commande, et l'écrire ici évite d'ajouter une option au fork pour
# chaque version d'Odoo. Les journaux se mêlent à la sortie, d'où la
# sentinelle : on ne conclut que sur ce qui la suit.
./odoo_bin.sh shell -c "$CONFIG" -d "$DATABASE" --no-http --log-level=warn <