Wastebasket is a go library / CLI tool allowing you to interact with your system trashbin.
The library supports at least the 3 latest major Golang versions. Depending on your OS it might still work on an older version, but there are no guarantees.
There are no dependencies, it depends on the Shell32 API built into Windows.
No CGO required
There are two (well, four) options you've got here. Wastebasket offers a native golang implementation of the FreeDesktop Trash specification.
Additionally, the custom implementation should also work for systems such as BSD and its derivatives. However, this has not been tested and I do not plan on doing so, simply because GitHub does not currently support running tests on any BSD derivatives.
If anyone is willing to host a custom runner (which I think is possible), then I'd be open to this though.
No CGO required
The only dependency is Finder
, which is installed by default.
There are plans for a better implementation, that uses the Objective-C API provided by Mac OS, resulting in most likely much better performance.
No CGO required (Might change in the future)
Grab it via
go get github.com/Bios-Marcel/wastebasket
and you are ready to go.
Minimal Go example that creates a file, deletes it and empties the trashbin:
package main
import (
"fmt"
"os"
"github.com/Bios-Marcel/wastebasket"
)
func main() {
os.WriteFile("test.txt", []byte("Test"), os.ModePerm)
fmt.Println(wastebasket.Trash("test.txt"))
wastebasket.Empty()
}
Wastebasket can also be used as a commandline interface. You can build
executables for each subcommand (such as empty
) separately, or build
wastebasket
as a whole.
In order to do so, run
go build ./cmd/CMD
where CMD
is whichever command you want to build.
The CLI offers autocompletion for flags and pre-defined arguments.
Bash; Write the following into your bash profile:
source <(wastebasket completion bash)
Additionally, completion is supported for zsh, powershell and fish. For information, see Cobra shell completions
Run benchmarks using:
go test -bench=.