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
qu'il soit traité, e.g, avec les examples ci-dessus:
$scriptname -n '*.c' 'cp \"\$item\" dest/dir'
-t, --title
--no-title
--title
--pt, --parent-title
--nt, --no-title
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=
@ -85,7 +93,8 @@ match=auto
changedir=
parentdir=
expand=1
title=1
title=auto
shortcut=
args=(+
--help '$exit_with display_help'
-b:,--basedir: basedir=
@ -97,18 +106,31 @@ args=(+
-s,--string match=string
-x,--expand expand=1
-n,--no-expand expand=
-t,--title title=1
--no-title title=
--title title=1
--pt, --parent-title title=p
--nt, --no-title title=
-G,--git-projects shortcut=git
-C,--composer-projects shortcut=composer
)
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 [ -n "$changedir" ]; then
match=dir
else
match=all
fi
[ -n "$changedir" ] && match=dir || match=all
fi
[ "$title" == auto ] && title=1
alt_syntax=
for sep in "$@"; do
@ -175,7 +197,11 @@ fi
[ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)"
let index=0
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"
setx file=abspath "$item"
setx dir=dirname -- "$file"