about summary refs log tree commit diff stats
path: root/modules/home.legacy/conf/lf/commands/scripts/trash.sh
blob: f4878c496c6da0828814683010ed84310f744079 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#! /usr/bin/env dash

# shellcheck source=/dev/null
SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH

# shellcheck disable=SC2269
f="$f"
# shellcheck disable=SC2269
fx="$fx"
# shellcheck disable=SC2269
fs="$fs"
# shellcheck disable=SC2269
id="$id"

trash_output=$(mktmp)
expected_error_output=$(mktmp)

while read -r file; do
    set -- "$@" "$file"
done <"$(tmp echo "$fx")"

# TODO: why are we using trashy at all, when trash-cli can do everything?
#
# try trashy first, through nix because both trashy and trash-cli provide a trash command, which conflicts
nix run nixpkgs#trashy -- put "$@" 2>"$trash_output"

# FIXME: Find a way, that does not depend on parsing an error message <2023-08-29>
cat <<EOF >"$expected_error_output"
error: Error during a \`trash\` operation: Unknown { description: "Path: '\"/.Trash-1000\"'. Message: Permission denied (os error 13)" }
EOF

if [ "$(cat "$expected_error_output")" = "$(cat "$trash_output")" ]; then
    warning "Deleting with trash-cli to the /.Trash folder"
    # this file could not be trashed because it is on the tempfs volume, trash-cli can do this this
    trash-put "$@"
fi
# vim: ft=sh