61 lines
1.4 KiB
Bash
Executable file
61 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Configuration
|
|
generator=/home/files/scripts/generator.sh
|
|
max=${MAX:-4}
|
|
export cache=/dev/shm/thumbnails
|
|
export root=/home/files/data
|
|
|
|
# Mise en place de l'environnement
|
|
cd "$root"
|
|
shopt -s globstar
|
|
|
|
declare -a todo
|
|
|
|
# Pour tous les répertoires et sous-répertoires
|
|
for i in **/
|
|
do
|
|
# Récupération du chemin complet
|
|
full=$(realpath "$i")
|
|
|
|
# Exclusion(s)
|
|
if [[ "$full" =~ ^${root}/p$ || -h "${i::-1}" ]]
|
|
then
|
|
continue
|
|
fi
|
|
|
|
# Analyse du répertoire
|
|
cd "$full"
|
|
|
|
# Si un index.html est déjà présent
|
|
if [[ -f "index.html" && "$1" != "-f" ]]
|
|
then
|
|
# Vérification de la date de modif des fichiers
|
|
for file in *
|
|
do
|
|
# Si plus récent, ou si le dossier a été modifié récemment (ex. suppresion d'un fichier)
|
|
if [[ "$file" -nt "index.html" ]] || [[ "$full" -nt "index.html" ]]
|
|
then
|
|
# Ajout du dossier à la liste. Dès qu'un fichier est concerné,
|
|
# on peut arrêter la boucle, inutile d'ajouter 10 fois le dossier
|
|
todo+=("$full")
|
|
break
|
|
fi
|
|
done
|
|
# Si pas d'index.html, on ajoute direct le dossier
|
|
else
|
|
todo+=("$full")
|
|
fi
|
|
|
|
# Retour au dossier de départ
|
|
cd - &>/dev/null
|
|
done
|
|
|
|
# S'il y a au moins un dossier, on lance le générateur sur chaque, avec $max process en parallèle
|
|
[[ "${#todo[@]}" -gt 0 ]] && for i in "${todo[@]}"; do echo "$i"; done | sort -r | xargs -d'\n' -L 1 -P$max $generator
|
|
# Et on génère l'index.html dossier racine
|
|
$generator
|
|
|
|
shopt -u globstar
|
|
|
|
|