| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- //go:build darwin && !ios
- package wastebasket
- import (
- "fmt"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- )
- // Trash moves a file or folder including its content into the systems trashbin.
- func Trash(paths ...string) error {
- for _, path := range paths {
- _, err := os.Stat(path)
- if os.IsNotExist(err) {
- continue
- }
- if err != nil {
- return err
- }
- //Passing a relative path will lead to the Finder not being able to find the file at all.
- path, pathToAbsPathError := filepath.Abs(path)
- if pathToAbsPathError != nil {
- return pathToAbsPathError
- }
- path = strings.ReplaceAll(path, `"`, `\"`)
- osascriptCommand := fmt.Sprintf(`tell app "Finder" to delete POSIX file "%s"`, path)
- err = exec.Command("osascript", "-e", osascriptCommand).Run()
- if err != nil {
- return err
- }
- }
- return nil
- }
- // Empty clears the platforms trashbin. It uses the `Finder` app to empty the trashbin.
- func Empty() error {
- return exec.Command("osascript", "-e", `tell app "Finder" to empty`).Run()
- }
|