erplibre/script/maintenance/format_python.sh

37 lines
1.4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# © 2021-2026 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
#
# Un fichier Python, le formateur de SON contexte.
#
# Un module Odoo et un script d'outillage ne suivent pas la même norme et ne
# tournent pas sur le même interpréteur : les addons vivent dans des dépôts
# séparés, dont la communauté fixe le style, quand script/ n'engage que ce
# dépôt. Un réglage unique servait donc mal les deux.
#
# addons/…, odoo*/addons/… isort + black, cible py37 : les séries d'Odoo
# encore supportées descendent jusque-là.
# tout le reste ruff, réglé par .ruff.toml à la racine.
VENV="$(xargs < conf/python-erplibre-venv 2> /dev/null)"
RUFF="./${VENV}/bin/ruff"
for fichier in "$@"; do
case "${fichier}" in
./addons/* | addons/* | ./odoo*/addons/* | odoo*/addons/*)
"./${VENV}/bin/isort" --profile black -l 79 "${fichier}"
./script/maintenance/black.sh "${fichier}"
;;
*)
if [[ ! -x "${RUFF}" ]]; then
echo "ruff absent de ${VENV} : ./script/install/install_erplibre.sh" >&2
exit 1
fi
# Le tri des imports d'abord : il déplace des lignes que le formatage
# remet ensuite à la bonne largeur.
"${RUFF}" check --select I --fix --quiet "${fichier}"
"${RUFF}" format --quiet "${fichier}"
;;
esac
done