Create trash-put

A trashing script that is near xdg trash spec compliant. The only thing missing is updating a file listing directory sizes
This commit is contained in:
snailed 2022-10-21 18:24:59 +00:00 committed by GitHub
parent 130e200da1
commit d63a37f7ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

28
.local/share/trash-put Normal file
View File

@ -0,0 +1,28 @@
#!/bin/sh
set -e
[ -e "$1" ] || exit 1
getfsroot() {
printf "%s" "$(df "$1" --output=target | tail -1)"
}
filepath="$(realpath "$1")"
filename="$(basename "$1")"
fsroot="$(getfsroot "$1")"
[ "$fsroot" = "$(getfsroot "${XDG_DATA_HOME:-$HOME/.local/share}")" ] \
&& basedir="${XDG_DATA_HOME:-$HOME/.local/share}/Trash" \
|| basedir="${fsroot}/.Trash"
infodir="$basedir/info"
filedir="$basedir/files"
mkdir -p "$infodir" 1>/dev/null 2>&1
mkdir -p "$filedir" 1>/dev/null 2>&1
find "$filedir" -regex ".*$filename.*" | grep -oP '\d' | sort -n | tail -1 | (
ext=$(($(cat /dev/stdin)+1))
filedest="$filedir/$filename.~${ext:-1}~";
command mv -f "$filepath" "$filedest";
cat <<EOF > "$infodir/$(basename "$filedest")"
[Trash Info]
Path=$filepath
DeletionDate=$(date +%Y%m%dT%T)
EOF
)