e5a03f006a
création d'un fichier 'categories.html' Omission du fichier 'categories.html' dans le dépôt GIT (à l'aide du .gitignore).
182 lines
7.3 KiB
Bash
Executable File
182 lines
7.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# creation_categ.sh
|
|
#
|
|
# Permet de naviguer dans les éléments de chaque catégorie d'un dossier suivant
|
|
#+ la syntaxe :
|
|
#+
|
|
#+ # Commentaire dans le fichier
|
|
#+ [[Titre de la catégorie]]Description de la catégorie
|
|
#+ titre de l'élément##http://domaine.tld/##description de l'élément##nom_image##Titre de l'image##description de l'image
|
|
|
|
## VARIABLES
|
|
DEBUG=1
|
|
dossier="categ"
|
|
destination="categories.html"
|
|
IFS="
|
|
"
|
|
dossier_composants="./composants"
|
|
deb_categ="${dossier_composants}/categ_deb.html"
|
|
fin_categ="${dossier_composants}/categ_fin.html"
|
|
elem="${dossier_composants}/element.html"
|
|
|
|
## FONCTIONS
|
|
debug() {
|
|
if [[ $DEBUG -eq 1 ]]
|
|
then
|
|
echo -e $1
|
|
fi
|
|
}
|
|
|
|
## TESTS
|
|
if ! test -d $dossier
|
|
then
|
|
echo -e "Dossier '$dossier' manquant."
|
|
exit 0
|
|
fi
|
|
|
|
## DEBUT
|
|
#TODO: n'afficher que les fichiers dont l'extension est .txt (ou .ail?)
|
|
#+ À l'aide de find par exemple.
|
|
#TODO: Prendre en compte plusieurs paramètres pour :
|
|
# - connaître le dossier contenant les fichiers de catégorie
|
|
# - l'extension des fichiers contenant les catégories
|
|
# - le fichier contenant le début de la catégorie
|
|
# - le fichier contenant la fin de la catégorie
|
|
# - le fichier contenant une trame pour un élément
|
|
#TODO: Faire des tests sur les paramètres avant lancement du programme
|
|
|
|
# Parcours du dossier
|
|
for fichier in `ls $dossier`
|
|
do
|
|
# On met/remet la valeur de CATEG à 0 significative de l'absence
|
|
#+ d'une Catégorie
|
|
CATEG=0
|
|
# On met/remet le tableau des elements à 0
|
|
elements_titre=()
|
|
elements_url=()
|
|
elements_desc=()
|
|
elements_image_addr=()
|
|
elements_image_titre=()
|
|
elements_image_desc=()
|
|
curseur_element=0
|
|
# Calcul du nombre de ligne du fichier
|
|
nbre_lignes=`cat ${dossier}/${fichier} |wc -l`
|
|
# debug
|
|
debug "$fichier: $nbre_lignes"
|
|
# Vérification du nombre de lignes retourné
|
|
if [[ $nbre_lignes -gt 0 ]]
|
|
then
|
|
# Récupération du nom de la catégorie
|
|
nbre_categories=`grep -E "^\[\[.*\]\].*$" ${dossier}/${fichier} |wc -l`
|
|
# Si le nombre de catégorie est égal à 1, on a tout bon
|
|
if [[ $nbre_categories -eq 0 ]]
|
|
then
|
|
echo "Fichier '${dossier}/${fichier}' mal renseigné : Pas de nom de catégorie"
|
|
exit 0
|
|
elif [[ $nbre_categories -gt 1 ]]
|
|
then
|
|
echo "Fichier '${dossier}/${fichier}' mal renseigné : Trop de catégorie présentes."
|
|
exit 0
|
|
else
|
|
echo "Fichier '${dossier}/${fichier}' correct : Catégorie présente."
|
|
fi
|
|
# le fichier contient plusieurs lignes, on lit le contenu
|
|
for ligne in $(cat ${dossier}/${fichier})
|
|
do
|
|
debug "Contenu ligne : $ligne"
|
|
# Vérifie les différents cas possibles :
|
|
#+ SI la chaîne débute par '#'
|
|
#+ exemple : # quelque chose
|
|
diese_comp=`echo $ligne |sed -e 's@^\(#\).*$@\1@g'`
|
|
debug "Comparaison dièse : $diese_comp"
|
|
if [[ $diese_comp == "#" ]]
|
|
then
|
|
debug "La ligne est un commentaire : Aucune action."
|
|
continue
|
|
fi
|
|
#+ SI la chaîne commence par '[[' et fini par ']]'
|
|
#+ exemple : [[Titre]]Description de ma catégorie
|
|
categ_comp=`echo $ligne |sed -e 's#^\(\[\[\).*\(\]\]\).*$#\1\2#g'`
|
|
debug "Comparaison '[[]]' : $categ_comp"
|
|
if [[ $categ_comp == "[[]]" ]]
|
|
then
|
|
debug "La ligne est une catégorie : Enregistrement."
|
|
titre_categ=`echo $ligne |sed -e 's#^\[\[\(.*\)\]\].*$#\1#g'`
|
|
desc_categ=`echo $ligne |sed -e 's#^\[\[.*\]\]\(.*\)$#\1#g'`
|
|
debug "$titre_categ : $desc_categ"
|
|
CATEG=1
|
|
fi
|
|
#+ SI la chaîne contient 6 fois '##'
|
|
#+ exemple : Vous êtes perdus ?##http://perdu.com##Se rendre sur le site perdu.com####Mon image##Description de mon image
|
|
element_comp=`echo $ligne |sed -e 's@^.*\(##\).*\(##\).*\(##\).*\(##\).*\(##\).*$@\1\2\3\4\5@g'`
|
|
debug "Comparaison element : $element_comp"
|
|
if [[ $element_comp == "##########" ]]
|
|
then
|
|
debug "La ligne est un élément : Enregistrement."
|
|
# Recherche des informations pour l'élément
|
|
element_titre=`echo $ligne |sed -e 's@^\(.*\)##.*##.*##.*##.*##.*$@\1@g'`
|
|
element_url=`echo $ligne |sed -e 's@^.*##\(.*\)##.*##.*##.*##.*$@\1@g'`
|
|
element_desc=`echo $ligne |sed -e 's@^.*##.*##\(.*\)##.*##.*##.*$@\1@g'`
|
|
element_img_addr=`echo $ligne |sed -e 's@^.*##.*##.*##\(.*\)##.*##.*$@\1@g'`
|
|
element_img_titre=`echo $ligne |sed -e 's@^.*##.*##.*##.*##\(.*\)##.*$@\1@g'`
|
|
element_img_desc=`echo $ligne |sed -e 's@^.*##.*##.*##.*##.*##\(.*\)$@\1@g'`
|
|
debug "Élément : titre=$element_titre, url=$element_url, desc=$element_desc, adresse_image=$element_img_addr, titre_image=$element_img_titre, desc_image=$element_img_desc"
|
|
# Ajout des éléments dans les tableaux appropriés
|
|
elements_titre[$curseur_element]=${element_titre:-""}
|
|
elements_url[$curseur_element]=${element_url:-""}
|
|
elements_desc[$curseur_element]=${element_desc:-""}
|
|
elements_image_addr[$curseur_element]=${element_img_addr:-""}
|
|
elements_image_titre[$curseur_element]=${element_img_titre:-""}
|
|
elements_image_desc[$curseur_element]=${element_img_desc:-""}
|
|
# Incrémentation du curseur du tableau contenant les éléments
|
|
curseur_element=$(( $curseur_element + 1 ))
|
|
fi
|
|
done
|
|
else
|
|
# le fichier ne contient pas de ligne. message d'erreur
|
|
echo -e "Fichier '$fichier' non pris en charge : Le fichier semble vide."
|
|
fi
|
|
# On débute la création du fichier contenant la catégorie si CATEG=1
|
|
if [[ $CATEG == 1 ]]
|
|
then
|
|
echo -e "Création d'un bloc Catégorie…"
|
|
# Tests sur la valeur de la catégorie et de l'état du curseur
|
|
debug "Catégorie : $titre_categ : $desc_categ"
|
|
debug "État curseur : $curseur_element"
|
|
# Tests sur la valeur
|
|
debug "Fichier de début de catégorie : $deb_categ"
|
|
debug "Destination : $destination"
|
|
# Création du fichier pour le menu (DÉBUT)
|
|
cat $deb_categ |sed -e "s|@@TITRE_CATEG@@|${titre_categ}|g" |sed -e "s|@@DESC_CATEG@@|${desc_categ}|g" > ${destination}
|
|
sed -i "s#^\(.*\)@@.*@@\(.*\)#\1\2#g" ${destination}
|
|
# Préparation du numéro d'index
|
|
i=0
|
|
# Parcours des tableaux afin de récupérer toutes les informations
|
|
#+ d'un élément
|
|
while [ $i -lt $curseur_element ]
|
|
do
|
|
# Assignation des valeurs à des variables afin de l'afficher
|
|
e_titre=${elements_titre[$i]:-""} # titre element
|
|
e_desc=${elements_desc[$i]:-""} # description element
|
|
e_url=${elements_url[$i]:-""} # url element
|
|
e_img_addr=${elements_image_addr[$i]:-""} # adresse image
|
|
e_img_titre=${elements_image_titre[$i]:-""} # titre image
|
|
e_img_desc=${elements_image_desc[$i]:-""} # description image
|
|
# Affichage du résultat
|
|
debug "$i : ${e_titre} || ${e_desc} || ${e_url} || ${e_img_addr} || ${e_img_titre} || ${e_img_desc}"
|
|
# Ajout des informations dans le fichier de destination
|
|
#FIXME:
|
|
# TODO: générer fichier HTML ici
|
|
#+ - faire un cat du début catégorie vers un fichier categories.html (ou autre nom)
|
|
#+ - faire un sed pour titre
|
|
#+ - faire un sed pour description
|
|
#+ - faire un sed pour enlever les @@quelque chose@@
|
|
#+ - idem pour les éléments, toutes les infos, puis un sed pour
|
|
#+ enlever les @@quelque chose@@ afin d'éviter de remplacer plus tard des choses non remplies
|
|
# Incrémentation de l'index
|
|
let i++
|
|
done
|
|
fi
|
|
done
|