#
# Moves files to the macOS trash.
#

# function trash {

emulate -L zsh
setopt LOCAL_OPTIONS EXTENDED_GLOB

local file
local -a files=()
for file in $@; do
  if [[ -e $file ]]; then
    # ':a' gets the full path (do not use ':A', which would resolve symlinks)
    files+=("the POSIX file \"${file:a}\"")
  else
    print "trash: No such file or directory '$file'." >&2
    return 1
  fi
done

if (( $#files == 0 )); then
  print 'usage: trash <files...>' >&2
  return 64  # Match rm's return code.
fi

# Join file list with commas, and tell Finder to trash that list.
local file_list="${(pj., .)files}"
osascript 2>&1 > /dev/null -e "tell app \"Finder\" to move { "${file_list}" } to trash"

# }