| 
									
										
										
										
											2016-04-08 16:28:43 +02:00
										 |  |  | #:  * `uninstall`, `rm`, `remove` [`--force`] <formula>: | 
					
						
							|  |  |  | #:    Uninstall <formula>. | 
					
						
							|  |  |  | #: | 
					
						
							|  |  |  | #:    If `--force` is passed, and there are multiple versions of <formula> | 
					
						
							|  |  |  | #:    installed, delete all installed versions. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "keg" | 
					
						
							|  |  |  | require "formula" | 
					
						
							| 
									
										
										
										
											2015-08-09 14:57:15 +03:00
										 |  |  | require "migrator" | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 22:41:47 -05:00
										 |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |   def uninstall | 
					
						
							| 
									
										
										
										
											2012-02-04 00:01:29 -06:00
										 |  |  |     raise KegUnspecifiedError if ARGV.named.empty? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     if !ARGV.force? | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |       ARGV.kegs.each do |keg| | 
					
						
							| 
									
										
										
										
											2013-01-23 00:26:25 -06:00
										 |  |  |         keg.lock do | 
					
						
							| 
									
										
										
										
											2015-04-09 15:18:25 +08:00
										 |  |  |           puts "Uninstalling #{keg}... (#{keg.abv})" | 
					
						
							| 
									
										
										
										
											2013-01-23 00:26:25 -06:00
										 |  |  |           keg.unlink | 
					
						
							|  |  |  |           keg.uninstall | 
					
						
							| 
									
										
										
										
											2015-05-17 21:22:29 +08:00
										 |  |  |           rack = keg.rack | 
					
						
							|  |  |  |           rm_pin rack | 
					
						
							| 
									
										
										
										
											2015-08-09 14:57:15 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-27 11:35:58 +00:00
										 |  |  |           if rack.directory? | 
					
						
							| 
									
										
										
										
											2014-12-23 00:49:49 -08:00
										 |  |  |             versions = rack.subdirs.map(&:basename) | 
					
						
							|  |  |  |             verb = versions.length == 1 ? "is" : "are" | 
					
						
							|  |  |  |             puts "#{keg.name} #{versions.join(", ")} #{verb} still installed." | 
					
						
							| 
									
										
										
										
											2014-11-27 11:35:58 +00:00
										 |  |  |             puts "Remove them all with `brew uninstall --force #{keg.name}`." | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2013-01-23 00:26:25 -06:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |       end | 
					
						
							|  |  |  |     else | 
					
						
							| 
									
										
										
										
											2012-03-06 13:43:41 +00:00
										 |  |  |       ARGV.named.each do |name| | 
					
						
							| 
									
										
										
										
											2015-08-09 14:57:15 +03:00
										 |  |  |         rack = Formulary.to_rack(name) | 
					
						
							|  |  |  |         name = rack.basename | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-06 13:43:41 +00:00
										 |  |  |         if rack.directory? | 
					
						
							| 
									
										
										
										
											2015-04-09 15:18:25 +08:00
										 |  |  |           puts "Uninstalling #{name}... (#{rack.abv})" | 
					
						
							| 
									
										
										
										
											2014-06-23 22:00:33 -05:00
										 |  |  |           rack.subdirs.each do |d| | 
					
						
							|  |  |  |             keg = Keg.new(d) | 
					
						
							|  |  |  |             keg.unlink | 
					
						
							|  |  |  |             keg.uninstall | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2012-08-10 16:33:22 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 21:22:29 +08:00
										 |  |  |         rm_pin rack | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   rescue MultipleVersionsInstalledError => e | 
					
						
							| 
									
										
										
										
											2012-04-30 14:08:59 +10:00
										 |  |  |     ofail e | 
					
						
							| 
									
										
										
										
											2015-08-17 16:55:59 +02:00
										 |  |  |     puts "Use `brew uninstall --force #{e.name}` to remove all versions." | 
					
						
							| 
									
										
										
										
											2015-08-17 22:56:00 +08:00
										 |  |  |   ensure | 
					
						
							|  |  |  |     # If we delete Cellar/newname, then Cellar/oldname symlink | 
					
						
							|  |  |  |     # can become broken and we have to remove it. | 
					
						
							| 
									
										
										
										
											2015-10-17 03:57:40 +08:00
										 |  |  |     if HOMEBREW_CELLAR.directory? | 
					
						
							| 
									
										
										
										
											2015-10-17 03:59:28 +08:00
										 |  |  |       HOMEBREW_CELLAR.children.each do |rack| | 
					
						
							|  |  |  |         rack.unlink if rack.symlink? && !rack.resolved_path_exists? | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2015-10-17 03:57:40 +08:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-08-10 16:33:22 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |   def rm_pin(rack) | 
					
						
							| 
									
										
										
										
											2015-05-17 21:22:29 +08:00
										 |  |  |     Formulary.from_rack(rack).unpin rescue nil | 
					
						
							| 
									
										
										
										
											2013-03-31 21:28:20 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  | end |