about summary refs log tree commit diff stats
path: root/modules/home.legacy/conf/lf/commands/scripts/trash.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home.legacy/conf/lf/commands/scripts/trash.sh')
-rwxr-xr-xmodules/home.legacy/conf/lf/commands/scripts/trash.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/lf/commands/scripts/trash.sh b/modules/home.legacy/conf/lf/commands/scripts/trash.sh
new file mode 100755
index 00000000..f4878c49
--- /dev/null
+++ b/modules/home.legacy/conf/lf/commands/scripts/trash.sh
@@ -0,0 +1,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