ufile: support du classement par scp

This commit is contained in:
Jephté Clain 2017-04-22 10:08:13 +04:00
parent c82c90840e
commit dec100b23b
1 changed files with 26 additions and 8 deletions

34
ufile
View File

@ -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] <files...>
@ -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