diff --git a/.gitignore b/.gitignore index 1b6bbde..baf4cea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ porteail/* .gitignore +categories.html diff --git a/creation_categ.sh b/creation_categ.sh new file mode 100755 index 0000000..d6886e3 --- /dev/null +++ b/creation_categ.sh @@ -0,0 +1,181 @@ +#!/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