Ajouter build_oca_modules.sh
This commit is contained in:
parent
b0f017daad
commit
e6099e88d2
1 changed files with 60 additions and 0 deletions
60
build_oca_modules.sh
Normal file
60
build_oca_modules.sh
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env bash
|
||||
# build_oca_modules.sh
|
||||
#
|
||||
# Concatene des fichiers .list en une seule liste de modules separes par des
|
||||
# virgules, prete pour "odoo -i" ou "odoo -u".
|
||||
#
|
||||
# Format des fichiers .list :
|
||||
# - un module par ligne
|
||||
# - commentaires avec # (ligne entiere ou en fin de ligne)
|
||||
# - lignes vides ignorees
|
||||
# - doublons supprimes (premier garde, ordre preserve)
|
||||
# - retours chariot Windows (CR) tolerees
|
||||
#
|
||||
# Usage :
|
||||
# OCA_MODULES="$(./build_oca_modules.sh ./modules.d)"
|
||||
# ./build_oca_modules.sh ./modules.d # affiche la liste
|
||||
# ./build_oca_modules.sh f1.list f2.list # fichiers explicites
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "Usage: $0 <repertoire | fichiers.list...>" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
files=()
|
||||
for arg in "$@"; do
|
||||
if [ -d "$arg" ]; then
|
||||
# tous les .list du repertoire, ordre alphabetique stable
|
||||
while IFS= read -r f; do
|
||||
files+=("$f")
|
||||
done < <(find "$arg" -maxdepth 1 -type f -name '*.list' | sort)
|
||||
elif [ -f "$arg" ]; then
|
||||
files+=("$arg")
|
||||
else
|
||||
echo "Chemin introuvable: $arg" >&2
|
||||
exit 2
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${#files[@]}" -eq 0 ]; then
|
||||
echo "Aucun fichier .list trouve" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
result="$(
|
||||
cat "${files[@]}" \
|
||||
| sed 's/#.*//' \
|
||||
| tr -d ' \t\r' \
|
||||
| grep -v '^$' \
|
||||
| awk '!seen[$0]++' \
|
||||
| paste -sd, -
|
||||
)" || true
|
||||
|
||||
if [ -z "$result" ]; then
|
||||
echo "Liste de modules vide (que des commentaires ou des lignes vides ?)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '%s\n' "$result"
|
||||
Loading…
Reference in a new issue