From 7e26ae1e0c23ca6fce594ce7ac501adf46128ac0 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sun, 26 May 2019 23:05:59 +0400 Subject: [PATCH] foreach: ajout des raccourcis -G et -C --- foreach | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/foreach b/foreach index af4e14c..b4b7e80 100755 --- a/foreach +++ b/foreach @@ -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"