pff: les répertoires liés peuvent contenir des fichiers

This commit is contained in:
Jephté Clain 2024-02-01 20:55:47 +04:00
parent 5d6c6b4053
commit 8570d12ce6
2 changed files with 34 additions and 8 deletions

View File

@ -117,8 +117,21 @@ function pff_get_first_profile() {
function pff_get_local_files() { function pff_get_local_files() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du # afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1 # projet pff $1
local pffdir="$1" local pffdir="$1" files file dirs dir isald
find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '__pv-.*__$' files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')"
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
setx -a files=echo "$files"
setx -a dirs=echo "$dirs"
for file in "${files[@]}"; do
isald=
for dir in "${dirs[@]}"; do
if [ "${file#$dir}" != "$file" ]; then
isald=1
break
fi
done
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file"
done
} }
function pff_get_rfile() { function pff_get_rfile() {

25
pff
View File

@ -204,10 +204,9 @@ pff:
il suffit de créer le répertoire dans pff/Base avec un unique fichier il suffit de créer le répertoire dans pff/Base avec un unique fichier
.pffdir à l'intérieur. Lors du switch le répertoire correspondant est .pffdir à l'intérieur. Lors du switch le répertoire correspondant est
lié s'il existe dans un profil. lié s'il existe dans un profil.
IMPORTANT: ne pas mettre autre chose dans le répertoire, ce n'est pas NB: s'il existe d'autres fichiers dans le répertoire, ils sont ignorés.
supporté pour le moment. Cela veut dire que chaque profil doit contenir Cela permet d'avoir un ensemble de fichiers par défaut, mais les liens
le répertoire complet, sans pouvoir hériter de fichiers par défaut symboliques doivent être faits manuellement.
depuis pff/Base
COMMANDES / OPTIONS COMMANDES / OPTIONS
Les arguments du script dépendent de la commande utilisée. Les commandes Les arguments du script dépendent de la commande utilisée. Les commandes
@ -436,8 +435,22 @@ function get_first_profile() {
function get_local_files() { function get_local_files() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du # afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1 # projet pff $1
local pffdir="$1" # pour les répertoires liés, ne lister que le fichier .pffdir
find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$' local pffdir="$1" files file dirs dir isald
files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')"
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
setx -a files=echo "$files"
setx -a dirs=echo "$dirs"
for file in "${files[@]}"; do
isald=
for dir in "${dirs[@]}"; do
if [ "${file#$dir}" != "$file" ]; then
isald=1
break
fi
done
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file"
done
} }
function get_rfile() { function get_rfile() {