foreach: ajout des raccourcis -G et -C

This commit is contained in:
Jephté Clain 2019-05-26 23:05:59 +04:00
parent cbb34ecd3f
commit 7e26ae1e0c
1 changed files with 38 additions and 12 deletions

50
foreach
View File

@ -74,10 +74,18 @@ OPTIONS
Si l'expansion est désactivée, il faut protéger le caractère \$ pour Si l'expansion est désactivée, il faut protéger le caractère \$ pour
qu'il soit traité, e.g, avec les examples ci-dessus: qu'il soit traité, e.g, avec les examples ci-dessus:
$scriptname -n '*.c' 'cp \"\$item\" dest/dir' $scriptname -n '*.c' 'cp \"\$item\" dest/dir'
-t, --title --title
--no-title --pt, --parent-title
--nt, --no-title
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
la commande. Par défaut, l'affichage est effectué." la commande. Par défaut, l'affichage est effectué.
Avec --parent-title, pour chaque correspondance afficher plutôt le
répertoire parent (valide uniquement avec l'option -p)
-G, --git-projects
Equivalent à '--ptitle -p */.git --' e.g '$scriptname -G git pull' pour
mettre à jour les dépôts situés dans un répertoire
-C, --composer-projects
Equivalent à '--ptitle -p */composer.json --'"
} }
basedir= basedir=
@ -85,7 +93,8 @@ match=auto
changedir= changedir=
parentdir= parentdir=
expand=1 expand=1
title=1 title=auto
shortcut=
args=(+ args=(+
--help '$exit_with display_help' --help '$exit_with display_help'
-b:,--basedir: basedir= -b:,--basedir: basedir=
@ -97,18 +106,31 @@ args=(+
-s,--string match=string -s,--string match=string
-x,--expand expand=1 -x,--expand expand=1
-n,--no-expand expand= -n,--no-expand expand=
-t,--title title=1 --title title=1
--no-title title= --pt, --parent-title title=p
--nt, --no-title title=
-G,--git-projects shortcut=git
-C,--composer-projects shortcut=composer
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
case "$shortcut" in
git)
set -- */.git -- "$@"
parentdir=1
[ "$title" == auto ] && title=p
;;
composer)
set -- */composer.json -- "$@"
parentdir=1
[ "$title" == auto ] && title=p
;;
esac
if [ "$match" == auto ]; then if [ "$match" == auto ]; then
if [ -n "$changedir" ]; then [ -n "$changedir" ] && match=dir || match=all
match=dir
else
match=all
fi
fi fi
[ "$title" == auto ] && title=1
alt_syntax= alt_syntax=
for sep in "$@"; do for sep in "$@"; do
@ -175,7 +197,11 @@ fi
[ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)" [ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)"
let index=0 let index=0
for item in "${items[@]}"; do for item in "${items[@]}"; do
[ -n "$title" ] && etitle "$item" if [ -n "$parentdir" -a "$title" == p ]; then
etitle "$(dirname -- "$item")"
elif [ -n "$title" ]; then
etitle "$item"
fi
i="$item" i="$item"
setx file=abspath "$item" setx file=abspath "$item"
setx dir=dirname -- "$file" setx dir=dirname -- "$file"