use switch case for options and use variables
use variables instead of pure texts in help and script.
This commit is contained in:
parent
58388c1153
commit
e00cccab04
1 changed files with 54 additions and 39 deletions
93
generate.sh
93
generate.sh
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue