aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/untap.rb
blob: 892229df427013c36ec694fc458bcf6f89c5b3b1 (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
require 'cmd/tap' # for tap_args

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

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

    gitignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue []
    untapped = 0

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

    HOMEBREW_REPOSITORY.join("Library/Formula/.gitignore").atomic_write(gitignores * "\n")

    puts "Untapped #{untapped} formula"
  end
end