Blame view

script/nuke 1.16 KB
fdb27960f   Will Farrington   Update template w...
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
44
45
46
47
48
49
50
51
  #!/usr/bin/ruby
  
  require "optparse"
  
  unless ENV["USER"] == "root"
    exec "sudo", $0, *ARGV
  end
  
  all      = false
  force    = false
  opt      = false
  services = false
  
  OptionParser.new do |o|
    o.banner = "Remove most traces of Boxen from your machine."
  
    o.on("--all",      "Remove everything possible.") { all      = true }
    o.on("--force",    "Actually do it.")             { force    = true }
    o.on("--help",     "Show this help.")             { abort o.to_s    }
    o.on("--opt",      "Remove /opt/boxen.")          { opt      = true }
    o.on("--services", "Remove and unload services.") { services = true }
  
    o.parse!
  
    abort o.to_s unless all || opt || services
  end
  
  unless force
    warn "** I won't actually do anything unless you pass --force."
  end
  
  if all || services
    boxen_services = []
    boxen_services << Dir["/Library/Launch*/com.boxen.*.plist"]
  
    boxen_services.flatten.each do |plist|
      warn "-> Removing #{plist}."
  
      if force
        system "launchctl", "unload", "-w", plist
        system "rm", "-f", plist
      end
    end
  
    system "rm", "-f", "/etc/resolver/dev"
  end
  
  if all || opt
    warn "-> Removing /opt/boxen."
    system "rm", "-rf", "/opt/boxen" if force
  end