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
# liste des fichiers html à générer
#files="autres.html copaings.html index.html ou.html projets.html rss.html apropos.html"
langDir="lang"
tmpHeader="/tmp/header.html"
annexes="css img"
@ -39,24 +38,70 @@ org=1
function print_help {
cat << EOF
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
destination (www par défaut).
destination ($target par défaut).
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
-o ne génère pas les fichiers org
-t lance un docker pour pouvoir tester le site
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
-n génère la langue dans le nom du fichier et non dans le chemin.
-d défini la langue par défaut (son index sera mit à la racine);
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)
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
#
@ -88,36 +133,6 @@ function generate_header {
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 ]
then
# TODO demander à l'utilisateur
@ -159,8 +174,7 @@ do
sed -i -e "/%links%/a$newHeader" $file
fi
cat $langDir/$l/$i >> $file
cat $footer >> $file
cat $langDir/$l/$i $footer >> $file
# nettoyage des balises précédemment utilisées
sed -i -e "/%links%/d" $file
sed -i -e "/%link%/,/%endlink%/d" $file
@ -174,6 +188,7 @@ do
done
echo "Header links translation..."
# cf. la page info 4.2 du manuel Bash (transforme un fichier en tableau)
mapfile translateHeader < $langDir/links.config
langs=${translateHeader[0]}
nbLang=$(echo "$langs" | grep -c "|")
@ -219,7 +234,7 @@ for c in $(awk 'BEGIN {
} if (code) {
print NR
}
}' www/index.html)
}' $target/index.html)
do
sed -i -e "$c s/href=\"/href=\"$defaultLang\//" $target/index.html
done