aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/utils/trash.swift
blob: f591c3806f9186cba3a1c0fc8b3e4bc7c0bdb570 (plain)
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
38
39
40
41
42
43
#!/usr/bin/swift

import Cocoa

DispatchQueue.main.async {
  let arguments = CommandLine.arguments.dropFirst().filter { !$0.isEmpty }
  let URLs = arguments.map { URL(fileURLWithPath: $0) }

  #if swift(>=4.0)
  let workspace = NSWorkspace.shared
  #else
  let workspace = NSWorkspace.shared()
  #endif

  workspace.recycle(URLs) { (dict, error) in
    dict.forEach {
      #if swift(>=4.0)
      let originalPath = $0.0.path
      let trashPath    = $0.1.path
      #else
      let originalPath = $0.path
      let trashPath    = $1.path
      #endif

      print("moved \(originalPath) to \(trashPath)")
    }

    if error == nil {
      exit(0)
    }

    let trashedURLs = dict.keys
    let untrashedURLs = URLs.filter { !trashedURLs.contains($0) }

    untrashedURLs.forEach {
      fputs("could not move \($0.path) to trash\n", stderr)
    }

    exit(1)
  }
}

RunLoop.main.run()