#!/usr/bin/env bash set -euo pipefail # @describe Runs trash-cli commands across all mounted filesystems with user trash directories # @meta require-tools mount,cut,trash-empty,trash-list _list_mounts() { mount -l | cut -d ' ' -f 3 } _find_trash_dirs() { local home_trash_dir="$HOME/.local/share/Trash" local user_trash_dir=".Trash-$UID" [ -d "$home_trash_dir" ] && echo "$home_trash_dir" local mount_trash_dir for mount_point in $(_list_mounts); do mount_trash_dir="$mount_point/$user_trash_dir" [ -d "$mount_trash_dir" ] && echo "$mount_trash_dir" done } _trash_exec() { local cmd="$1" shift local trash_cli_args=() for trash_dir in $(_find_trash_dirs); do trash_cli_args+=(--trash-dir "$trash_dir") done "$cmd" "${trash_cli_args[@]}" "$@" } # @cmd Purge trashed files # @alias e # @meta require-tools trash-empty empty() { _trash_exec trash-empty "$@" } # @cmd List trashed files # @alias l # @meta require-tools trash-list list() { _trash_exec trash-list "$@" } eval "$(argc --argc-eval "$0" "$@")"