From dec100b23b47d7e333ea7c71ccc55c44ca2a3647 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sat, 22 Apr 2017 10:08:13 +0400 Subject: [PATCH] ufile: support du classement par scp --- ufile | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/ufile b/ufile index bd259c4..4c96829 100755 --- a/ufile +++ b/ufile @@ -22,6 +22,11 @@ forme pattern:destdir[:renamef] fonction retourne un code d'erreur autre que zéro, la règle est ignorée. Si le nouveau nom contient un chemin, destdir est ignoré et le fichier est déplacé dans le répertoire spécifié. + Si dest est de la forme [user@]host:path alors le fichier est copié par scp + sur l'hôte spécifié vers la destination spécifiée, sauf si l'hôte courant est + déjà celui mentionné dans la valeur, auquel cas la copie est faite directement + dans le répertoire spécifié. + variables non documentées: interaction(=-i) USAGE $scriptname [options] @@ -49,6 +54,7 @@ function joinp() { args=(% --help '$exit_with display_help' -c:,--config: config= + -S:,--ssh: SSH= -n,--fake fake=1 -l,--list action=list -e,--edit action=edit @@ -101,7 +107,7 @@ elif [ "$action" == edit ]; then fi "${EDITOR:-vi}" "$config" exit $? -else +elif [ "$action" != file ]; then die "bug: $action: action non implémentée" fi @@ -148,12 +154,16 @@ for file in "$@"; do eval "[[ \"\$filename\" == $(qwc "$pattern") ]]" || continue + userhost= destname="$filename" + interaction=-i if [ -n "$renamef" ]; then dest= "$renamef" "$filename" "$pf" "$destdir" || continue if [ -n "$dest" ]; then - if [[ "$dest" == */* ]]; then + if [[ "$dest" == *:* ]]; then + splitpair "$dest" userhost destdir + elif [[ "$dest" == */* ]]; then setx dest=abspath "$dest" setx destdir=dirname -- "$dest" setx destname=dirname -- "$dest" @@ -163,17 +173,25 @@ for file in "$@"; do fi fi - if [ -z "$destdir" ]; then + if [ -z "$userhost" -a -z "$destdir" ]; then eerror "$rule: règle invalide: destdir est vide" break fi - setx dest=joinp "$destdir" "$destname" - estep "$filename --> $dest" - ask_yesno -i "Voulez-vous continuer?" O || { found=x; break; } + if [ -n "$userhost" ]; then + estep "$filename --> $dest" + ask_yesno $interaction "Voulez-vous continuer?" O || { found=x; break; } - docmd mkdir -p "$destdir" || die "$destdir: impossible de créer le répertoire" - docmd mv -i "$file" "$dest" || die "problème lors du déplacement du fichier" + docmd scp ${SSH:+-S "$SSH"} "$file" "$dest" || die "problème lors de la copie du fichier" + + else + setx dest=joinp "$destdir" "$destname" + estep "$filename --> $dest" + ask_yesno $interaction "Voulez-vous continuer?" O || { found=x; break; } + + docmd mkdir -p "$destdir" || die "$destdir: impossible de créer le répertoire" + docmd mv -i "$file" "$dest" || die "problème lors du déplacement du fichier" + fi found=1 break done