From e00cccab044ba228281bd91378e1016638efd68d Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 23 Feb 2023 00:56:24 +0100 Subject: [PATCH] use switch case for options and use variables use variables instead of pure texts in help and script. --- generate.sh | 93 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 39 deletions(-) diff --git a/generate.sh b/generate.sh index 80de37b..a5dec9a 100755 --- a/generate.sh +++ b/generate.sh @@ -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] [] + $(basename $0) [options] [] 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 " \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