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() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1
local pffdir="$1"
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 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
.pffdir à l'intérieur. Lors du switch le répertoire correspondant est
lié s'il existe dans un profil.
IMPORTANT: ne pas mettre autre chose dans le répertoire, ce n'est pas
supporté pour le moment. Cela veut dire que chaque profil doit contenir
le répertoire complet, sans pouvoir hériter de fichiers par défaut
depuis pff/Base
NB: s'il existe d'autres fichiers dans le répertoire, ils sont ignorés.
Cela permet d'avoir un ensemble de fichiers par défaut, mais les liens
symboliques doivent être faits manuellement.
COMMANDES / OPTIONS
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() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1
local pffdir="$1"
find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$'
# pour les répertoires liés, ne lister que le fichier .pffdir
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() {