#!/bin/sh
set -e
getfsroot() {
  printf "%s" "$(df "$1" --output=target | tail -1)"
}
list() {
  # 1st arg is trash files directory
  # 2nd arg is directory to match trash files for
  [ ! "$(ls -A "$1")" ] && exit 1
  for file in "$1"/* ; do
    [ "$(head -1 "$file")" = "[Trash Info]" ] && \
    fpath=$(grep Path "$file" | cut -d '=' -f2) && \
    echo "$fpath" | grep -qP "^$2/[^/]+$" && \
    printf "%s %s %s\n" \
      "$(basename "$file")" \
      "$fpath" \
      "$(date -d "$(grep Date "$file" | cut -d '=' -f2)" +'%x %X')"
  done
}

[ -n "$1" ] && dir="$(realpath "$1")" || dir="$(getfsroot "$PWD")"
fsroot="$(getfsroot "$dir")"
[ "$fsroot" = "$(getfsroot "${XDG_DATA_HOME:-$HOME/.local/share}")" ] \
  && basedir="${XDG_DATA_HOME:-$HOME/.local/share}/Trash" \
  || basedir="${fsroot}/.Trash"

sel="$(list "$basedir/info" "$dir" | fzf)"
file="$basedir/files/$(echo "$sel" | cut -d ' ' -f1)"
dest="$(echo "$sel" | cut -d ' ' -f2)"
command mv -ib "$file" "$dest"
command rm "$basedir/info/$(echo "$sel" | cut -d ' ' -f1)"