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"
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
#
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
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
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 "|")
} if (code) {
print NR
}
- }' www/index.html)
+ }' $target/index.html)
do
sed -i -e "$c s/href=\"/href=\"$defaultLang\//" $target/index.html
done