aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/untap.rb
blob: 80d38934b0008dae87da1adac28176dc9a1cc137 (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
require 'cmd/tap' # for Pathname.recursive_formula
require 'tempfile'

module Homebrew extend self
  def untap
    user, repo = tap_args
    tapd = HOMEBREW_PREFIX/"Library/Taps/#{user}-#{repo}"

    raise "No such tap!" unless tapd.directory?

    gitignores = (HOMEBREW_PREFIX/"Library/Formula/.gitignore").read.split rescue []

    tapd.find_formula do |pn|
      bn = pn.basename.to_s
      pn = HOMEBREW_REPOSITORY/"Library/Formula"/bn
      pn.delete if pn.symlink? and pn.realpath.to_s =~ %r[^#{tapd.realpath}]
      gitignores.delete(bn)
    end
    rm_rf tapd

    tf = Tempfile.new("brew-untap")
    tf.write(gitignores.join("\n"))
    tf.close
    mv tf.path, "#{HOMEBREW_PREFIX}/Library/Formula/.gitignore"
  end
end