ajout de base_udelete et base_ucopy comme outil de haut-niveau
ajout de copy_link() comme fonction
This commit is contained in:
82
ulink
Executable file
82
ulink
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
function display_help() {
|
||||
uecho "$scriptname: déplacer, supprimer, copier un fichier ou un lien
|
||||
|
||||
Quand on déplace ou qu'on copie un lien, la destination du lien est mise à jour
|
||||
|
||||
USAGE
|
||||
$scriptname mv files... dest
|
||||
$scriptname cp files... dest
|
||||
$scriptname rm files...
|
||||
|
||||
OPTIONS
|
||||
-d UPDATEDIR
|
||||
Chercher dans UPDATEDIR tous les liens qui pointent vers le fichier
|
||||
concerné, et mettre à jour ces liens après avoir déplacé le fichier, ou
|
||||
supprimer ces liens si le fichier est supprimé."
|
||||
}
|
||||
|
||||
SCRIPT_ALIASES=(#alias:command
|
||||
umove:move
|
||||
udelete:delete
|
||||
ucopy:copy
|
||||
)
|
||||
CMD_ALIASES=(
|
||||
mv:move
|
||||
rm:delete remove:delete del:delete
|
||||
cp:copy
|
||||
)
|
||||
DEFAULT_CMD=move
|
||||
|
||||
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||
# créer les liens
|
||||
scriptname="$(basename "$0")"
|
||||
for alias in "${SCRIPT_ALIASES[@]}"; do
|
||||
alias="${alias%:*}"
|
||||
ln -s "$scriptname" "$alias"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||
urequire DEFAULTS
|
||||
|
||||
# Traduire le nom du script
|
||||
for script_alias in "${SCRIPT_ALIASES[@]}"; do
|
||||
splitpair "$script_alias" src dest
|
||||
if [ "$scriptname" == "$src" ]; then
|
||||
eval "set -- $dest \"\$@\""
|
||||
scriptname=ulink
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
args=(--help '$exit_with display_help' -d:,--updatedir: .)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
# Traduire la commande
|
||||
[ -n "$*" ] || set -- "$DEFAULT_CMD"
|
||||
cmd=
|
||||
found_cmd=
|
||||
while [ -z "$found_cmd" ]; do
|
||||
cmd="$1"; shift; found_cmd=1
|
||||
[ -n "$cmd" ] || break
|
||||
|
||||
for cmd_alias in "${CMD_ALIASES[@]}"; do
|
||||
splitpair "$cmd_alias" src dest
|
||||
if [ "$cmd" == "$src" ]; then
|
||||
eval "set -- $dest \"\$@\""
|
||||
found_cmd=
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
case "$cmd" in
|
||||
"") exit_with display_help;;
|
||||
move) base_umove ${updatedir:+-d "$updatedir"} "$@";;
|
||||
delete) base_udelete ${updatedir:+-d "$updatedir"} "$@";;
|
||||
copy) base_ucopy "$@";;
|
||||
*) die "$cmd: commande incorrecte";;
|
||||
esac
|
||||
Reference in New Issue
Block a user