109 lines
2.4 KiB
Text
109 lines
2.4 KiB
Text
|
|
#!/usr/bin/env zsh
|
|
|
|
function samelineprint {
|
|
print -n -P -- "\r$*"
|
|
}
|
|
|
|
# avec 1 essai par seconde: 300 = 5 minutes
|
|
maxessais=300
|
|
|
|
# try to create a directory until success
|
|
function trymkdir {
|
|
target="$1"
|
|
print -- mkdir -p $target
|
|
local essai=1
|
|
while ! mkdir -p $target; do
|
|
samelineprint "Echec: essai n°$essai"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
print
|
|
}
|
|
|
|
# try to copy until success
|
|
function trycp {
|
|
element="$1"
|
|
target="$2"
|
|
if [[ ! -d ${target:h} ]]; then
|
|
trymkdir ${target:h}
|
|
fi
|
|
local essai=1
|
|
print -- cp $element $target
|
|
while ! \cp $element $target; do
|
|
samelineprint "Echec: essai n°$essai"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
print
|
|
}
|
|
|
|
# try to remove until success
|
|
function tryrm {
|
|
target="$1"
|
|
local essai=1
|
|
local options=''
|
|
[[ -d $target ]] && options='-rf'
|
|
print -- rm $options $target
|
|
while ! rm $options $target; do
|
|
samelineprint "Echec: essai n°$essai"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
essai=1
|
|
while [[ -e $element ]]; do
|
|
samelineprint "rm reussi mais fichier source non disparu n°$essai"
|
|
sleep 1
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
print
|
|
}
|
|
|
|
# try to rename until success
|
|
function tryrename {
|
|
element="$1"
|
|
target="$2"
|
|
local essai=1
|
|
while [[ -e $target ]]; do
|
|
samelineprint "Echec n°$essai le fichier $target existe déjà"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
sleep 1
|
|
done
|
|
print -- mv $element $target
|
|
while ! mv $element $target; do
|
|
samelineprint "Echec: essai n°$essai"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 4
|
|
done
|
|
essai=1
|
|
while [[ -e $element ]]; do
|
|
samelineprint "mv reussi mais fichier source non disparu n°$essai"
|
|
sleep 1
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
print
|
|
}
|
|
|
|
# try to move until success
|
|
function trymv {
|
|
element="$1"
|
|
target="$2"
|
|
local essai=1
|
|
print -- mv $element $target
|
|
while ! mv $element $target; do
|
|
samelineprint "Echec: essai n°$essai"
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
essai=1
|
|
while [[ -e $element ]]; do
|
|
samelineprint "mv reussi mais fichier source non disparu n°$essai"
|
|
sleep 1
|
|
((essai++))
|
|
((essai>maxessais)) && exit 5
|
|
done
|
|
print
|
|
}
|