| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class CLI | 
					
						
							|  |  |  |     class Uninstall < Base | 
					
						
							|  |  |  |       def self.run(*args) | 
					
						
							|  |  |  |         cask_tokens = cask_tokens_from(args) | 
					
						
							|  |  |  |         raise CaskUnspecifiedError if cask_tokens.empty? | 
					
						
							|  |  |  |         force = args.include? "--force" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         cask_tokens.each do |cask_token| | 
					
						
							|  |  |  |           odebug "Uninstalling Cask #{cask_token}" | 
					
						
							|  |  |  |           cask = Hbc.load(cask_token) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           raise CaskNotInstalledError, cask unless cask.installed? || force | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           latest_installed_version = cask.timestamped_versions.last | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           unless latest_installed_version.nil? | 
					
						
							|  |  |  |             latest_installed_cask_file = cask.metadata_master_container_path | 
					
						
							|  |  |  |                                              .join(latest_installed_version.join(File::Separator), | 
					
						
							|  |  |  |                                                    "Casks", "#{cask_token}.rb") | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |             # use the same cask file that was used for installation, if possible | 
					
						
							|  |  |  |             cask = Hbc.load(latest_installed_cask_file) if latest_installed_cask_file.exist? | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           Installer.new(cask, force: force).uninstall | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           next if (versions = cask.versions).empty? | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           single = versions.count == 1
 | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           puts <<-EOS.undent
 | 
					
						
							|  |  |  |             #{cask_token} #{versions.join(", ")} #{single ? "is" : "are"} still installed. | 
					
						
							|  |  |  |             Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask_token}`. | 
					
						
							|  |  |  |           EOS | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.help | 
					
						
							|  |  |  |         "uninstalls the given Cask" | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |