| 
									
										
										
										
											2012-03-16 12:58:39 +00:00
										 |  |  | require 'cmd/tap' # for tap_args | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 22:41:47 -05:00
										 |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  |   def untap | 
					
						
							| 
									
										
										
										
											2013-03-02 06:52:55 -05:00
										 |  |  |     raise "Usage is `brew untap <tap-name>`" if ARGV.empty? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  |     user, repo = tap_args | 
					
						
							| 
									
										
										
										
											2012-03-18 01:45:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # we consistently downcase in tap to ensure we are not bitten by case-insensive | 
					
						
							|  |  |  |     # filesystem issues. Which is the default on mac. The problem being the | 
					
						
							|  |  |  |     # filesystem cares, but our regexps don't. So unless we resolve *every* path | 
					
						
							|  |  |  |     # we will get bitten. | 
					
						
							|  |  |  |     user.downcase! | 
					
						
							|  |  |  |     repo.downcase! | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-24 11:26:45 +09:00
										 |  |  |     tapd = HOMEBREW_LIBRARY/"Taps/#{user}/homebrew-#{repo}" | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     raise "No such tap!" unless tapd.directory? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-18 00:40:41 +00:00
										 |  |  |     files = [] | 
					
						
							| 
									
										
										
										
											2014-04-25 18:58:16 -05:00
										 |  |  |     tapd.find_formula { |file| files << file } | 
					
						
							| 
									
										
										
										
											2013-02-28 10:56:40 -06:00
										 |  |  |     unlink_tap_formula(files) | 
					
						
							| 
									
										
										
										
											2014-04-24 11:26:45 +09:00
										 |  |  |     tapd.rmtree | 
					
						
							|  |  |  |     tapd.dirname.rmdir_if_possible | 
					
						
							| 
									
										
										
										
											2014-05-26 11:19:00 -07:00
										 |  |  |     puts "Untapped #{files.length} formula#{plural(files.length, 'e')}" | 
					
						
							| 
									
										
										
										
											2012-03-18 00:40:41 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 15:12:13 -05:00
										 |  |  |   def unlink_tap_formula paths | 
					
						
							| 
									
										
										
										
											2012-03-16 17:11:40 +00:00
										 |  |  |     untapped = 0
 | 
					
						
							| 
									
										
										
										
											2012-03-18 00:40:41 +00:00
										 |  |  |     gitignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue [] | 
					
						
							| 
									
										
										
										
											2012-03-04 02:47:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 15:12:13 -05:00
										 |  |  |     paths.each do |path| | 
					
						
							|  |  |  |       link = HOMEBREW_LIBRARY.join("Formula", path.basename) | 
					
						
							| 
									
										
										
										
											2012-03-18 00:40:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-25 15:12:13 -05:00
										 |  |  |       if link.symlink? && (!link.exist? || link.resolved_path == path) | 
					
						
							| 
									
										
										
										
											2014-04-24 20:45:36 -05:00
										 |  |  |         link.delete | 
					
						
							| 
									
										
										
										
											2014-04-25 15:12:13 -05:00
										 |  |  |         gitignores.delete(path.basename.to_s) | 
					
						
							| 
									
										
										
										
											2012-03-16 17:11:40 +00:00
										 |  |  |         untapped += 1
 | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-03-04 02:47:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-16 12:58:39 +00:00
										 |  |  |     HOMEBREW_REPOSITORY.join("Library/Formula/.gitignore").atomic_write(gitignores * "\n") | 
					
						
							| 
									
										
										
										
											2012-03-16 17:11:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-18 00:40:41 +00:00
										 |  |  |     untapped | 
					
						
							| 
									
										
										
										
											2012-03-02 20:28:54 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | end |