use switch case for options and use variables

use variables instead of pure texts in help and script.
This commit is contained in:
rick 2023-02-23 00:56:24 +01:00
parent 58388c1153
commit e00cccab04
Signed by: Rick
GPG key ID: 424FAEF68309FB6E

View file

@ -21,7 +21,6 @@
set -e set -e
# liste des fichiers html à générer # liste des fichiers html à générer
#files="autres.html copaings.html index.html ou.html projets.html rss.html apropos.html"
langDir="lang" langDir="lang"
tmpHeader="/tmp/header.html" tmpHeader="/tmp/header.html"
annexes="css img" annexes="css img"
@ -39,24 +38,70 @@ org=1
function print_help { function print_help {
cat << EOF cat << EOF
Utilisation : Utilisation :
generate.sh [options] [<dossier>] $(basename $0) [options] [<dossier>]
génère les fichiers HTML du site. Il est possible de changer le dossier de génère les fichiers HTML du site. Il est possible de changer le dossier de
destination (www par défaut). destination ($target par défaut).
Options : Options :
-h génère ce message et arrête le script. -h génère ce message et arrête le script
-c nettoie les fichiers générés -c nettoie les fichiers générés
-o ne génère pas les fichiers org -o ne génère pas les fichiers org
-t lance un docker pour pouvoir tester le site -t lance un docker pour pouvoir tester le site
Les options suivantes seront codées dans un futur proche : Les options suivantes seront codées dans un futur proche :
-d défini la langue par défaut (son index sera mit à la racine); fr par défaut -d défini la langue par défaut (son index sera mit à la racine);
-n génère la langue dans le nom du fichier et non dans le chemin. fr par défaut
-n génère la langue dans le nom du fichier et non dans le chemin
(example.org/fr/index.html -> example.org/index.fr.html) (example.org/fr/index.html -> example.org/index.fr.html)
EOF EOF
} }
# pas besoin de continuer si on demande juste l'aide
if [[ $@ =~ "-h" ]]
then
print_help
exit 0
fi
# vérification des arguments passés
while [ -n "$1" ]
do
case $1 in
"-o") # pas de génération des fichiers org
org=0
;;
"-c") # on nettoie les fichiers
# TODO si on précise un dossier, nettoyer ce dossier
echo "Nettoyage de $target"
rm -rf $target
exit 0
;;
"-t") # lancer un docker de test
docker build . --tag site && echo -e \
"\n\033[32mSite de test déployé sur l'adresse" \
"localhost:8080\033[0m" || exit 1
echo -e "\033[32mC-c pour quitter\033[0m\n"
docker run --rm -p 8080:80 site
docker rmi site
exit 0
;;
"-d") ;&
"-n")
echo "Commande non implémentée."
exit 1
;;
"-"*)
print_help
exit 2
;;
*) target=$1 ;;
esac
shift
done
############################################################################### ###############################################################################
# Génère un fichier header propre à une langue # Génère un fichier header propre à une langue
# #
@ -88,36 +133,6 @@ function generate_header {
echo -e " </div>\n" >> $tmpHeader echo -e " </div>\n" >> $tmpHeader
} }
# vérification des arguments passés
if [[ $@ =~ "-h" ]]
then
print_help
exit 0
fi
if [[ $@ =~ "-c" ]]
then
rm -rf www
exit 0
fi
if [[ $@ =~ "-t" ]]
then
docker build . --tag site && echo -e \
"\n\033[32mSite de test déployé sur l'adresse localhost:8080\033[0m" \
|| exit 1
echo -e "\033[32mC-c pour quitter\033[0m\n"
docker run --rm -p 8080:80 site
docker rmi site
exit 0
fi
if [[ $@ =~ "-o" ]]
then
org=0
fi
if [ -d $target ] if [ -d $target ]
then then
# TODO demander à l'utilisateur # TODO demander à l'utilisateur
@ -159,8 +174,7 @@ do
sed -i -e "/%links%/a$newHeader" $file sed -i -e "/%links%/a$newHeader" $file
fi fi
cat $langDir/$l/$i >> $file cat $langDir/$l/$i $footer >> $file
cat $footer >> $file
# nettoyage des balises précédemment utilisées # nettoyage des balises précédemment utilisées
sed -i -e "/%links%/d" $file sed -i -e "/%links%/d" $file
sed -i -e "/%link%/,/%endlink%/d" $file sed -i -e "/%link%/,/%endlink%/d" $file
@ -174,6 +188,7 @@ do
done done
echo "Header links translation..." echo "Header links translation..."
# cf. la page info 4.2 du manuel Bash (transforme un fichier en tableau)
mapfile translateHeader < $langDir/links.config mapfile translateHeader < $langDir/links.config
langs=${translateHeader[0]} langs=${translateHeader[0]}
nbLang=$(echo "$langs" | grep -c "|") nbLang=$(echo "$langs" | grep -c "|")
@ -219,7 +234,7 @@ for c in $(awk 'BEGIN {
} if (code) { } if (code) {
print NR print NR
} }
}' www/index.html) }' $target/index.html)
do do
sed -i -e "$c s/href=\"/href=\"$defaultLang\//" $target/index.html sed -i -e "$c s/href=\"/href=\"$defaultLang\//" $target/index.html
done done