2011-03-01 15:00:41 +00:00
|
|
|
#!/usr/bin/env bash
|
2011-02-27 21:32:03 +00:00
|
|
|
#
|
|
|
|
# parcours_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
|
2011-03-03 11:20:34 +00:00
|
|
|
DEBUG=0
|
2011-02-27 21:32:03 +00:00
|
|
|
dossier="categ"
|
|
|
|
IFS="
|
|
|
|
"
|
|
|
|
|
|
|
|
## FONCTIONS
|
|
|
|
debug() {
|
|
|
|
if [[ $DEBUG -eq 1 ]]
|
|
|
|
then
|
|
|
|
echo -e $1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2011-02-28 16:54:08 +00:00
|
|
|
## TESTS
|
|
|
|
if ! test -d $dossier
|
|
|
|
then
|
|
|
|
echo -e "Dossier '$dossier' manquant."
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2011-02-27 21:32:03 +00:00
|
|
|
## DEBUT
|
|
|
|
# Parcours du dossier
|
2011-02-28 16:54:08 +00:00
|
|
|
#TODO: n'afficher que les fichiers dont l'extension est .txt (ou .ail?)
|
|
|
|
#+ À l'aide de find par exemple.
|
2011-03-03 12:05:04 +00:00
|
|
|
#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
|
2011-02-27 21:32:03 +00:00
|
|
|
for fichier in `ls $dossier`
|
|
|
|
do
|
2011-03-03 11:21:56 +00:00
|
|
|
# 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"
|
2011-03-03 12:05:04 +00:00
|
|
|
# Vérifie les différents cas possibles :
|
2011-03-03 11:21:56 +00:00
|
|
|
#+ 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:-""}
|
2011-03-03 12:05:04 +00:00
|
|
|
# Incrémentation du curseur du tableau contenant les éléments
|
2011-03-03 11:21:56 +00:00
|
|
|
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…"
|
|
|
|
# TODO: Ajouter début catégorie dans un fichier temporaire
|
|
|
|
#+ Puis ajouter les éléments dans un fichier temporaire à part
|
|
|
|
#+ pour chaque element à chaque fois
|
|
|
|
#+ Faire les sed qui vont bien pour chaque élément
|
2011-03-03 12:05:04 +00:00
|
|
|
|
|
|
|
# Tests sur la valeur de la catégorie et de l'état du curseur
|
2011-03-03 11:21:56 +00:00
|
|
|
debug "Catégorie : $titre_categ : $desc_categ"
|
|
|
|
debug "État curseur : $curseur_element"
|
|
|
|
# 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
|
2011-03-03 12:05:04 +00:00
|
|
|
# Assignation des valeurs à des variables afin de l'afficher
|
2011-03-03 11:21:56 +00:00
|
|
|
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
|
2011-03-03 12:05:04 +00:00
|
|
|
# Affichage du résultat
|
2011-03-03 11:21:56 +00:00
|
|
|
debug "$i : ${e_titre} || ${e_desc} || ${e_url} || ${e_img_addr} || ${e_img_titre} || ${e_img_desc}"
|
2011-03-03 12:05:04 +00:00
|
|
|
# Incrémentation de l'index
|
2011-03-03 11:21:56 +00:00
|
|
|
let i++
|
|
|
|
done
|
|
|
|
fi
|
2011-02-27 21:32:03 +00:00
|
|
|
done
|