| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class CLI | 
					
						
							|  |  |  |     class Info < Base | 
					
						
							|  |  |  |       def self.run(*args) | 
					
						
							|  |  |  |         cask_tokens = cask_tokens_from(args) | 
					
						
							|  |  |  |         raise CaskUnspecifiedError if cask_tokens.empty? | 
					
						
							|  |  |  |         cask_tokens.each do |cask_token| | 
					
						
							|  |  |  |           odebug "Getting info for Cask #{cask_token}" | 
					
						
							|  |  |  |           cask = Hbc.load(cask_token) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           info(cask) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.help | 
					
						
							|  |  |  |         "displays information about the given Cask" | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.info(cask) | 
					
						
							|  |  |  |         puts "#{cask.token}: #{cask.version}" | 
					
						
							| 
									
										
										
										
											2016-08-30 21:38:13 +02:00
										 |  |  |         puts Formatter.url(cask.homepage) if cask.homepage | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         installation_info(cask) | 
					
						
							| 
									
										
										
										
											2016-10-23 17:04:03 +02:00
										 |  |  |         puts "From: #{Formatter.url(repo_info(cask))}" | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         name_info(cask) | 
					
						
							|  |  |  |         artifact_info(cask) | 
					
						
							|  |  |  |         Installer.print_caveats(cask) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.formatted_url(url) | 
					
						
							| 
									
										
										
										
											2016-08-26 16:04:47 +02:00
										 |  |  |         "#{Tty.underline}#{url}#{Tty.reset}" | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.installation_info(cask) | 
					
						
							|  |  |  |         if cask.installed? | 
					
						
							|  |  |  |           cask.versions.each do |version| | 
					
						
							|  |  |  |             versioned_staged_path = cask.caskroom_path.join(version) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |             puts versioned_staged_path.to_s | 
					
						
							|  |  |  |               .concat(" (") | 
					
						
							| 
									
										
										
										
											2016-08-30 21:38:13 +02:00
										 |  |  |               .concat(versioned_staged_path.exist? ? versioned_staged_path.abv : Formatter.error("does not exist")) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |               .concat(")") | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |           puts "Not installed" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.name_info(cask) | 
					
						
							|  |  |  |         ohai cask.name.size > 1 ? "Names" : "Name" | 
					
						
							| 
									
										
										
										
											2016-08-30 21:38:13 +02:00
										 |  |  |         puts cask.name.empty? ? Formatter.error("None") : cask.name | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 19:15:31 +01:00
										 |  |  |       def self.repo_info(cask) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         user, repo, token = QualifiedToken.parse(Hbc.all_tokens.detect { |t| t.split("/").last == cask.token }) | 
					
						
							| 
									
										
										
										
											2016-09-16 19:15:31 +01:00
										 |  |  |         remote_tap = Tap.fetch(user, repo) | 
					
						
							| 
									
										
										
										
											2016-10-23 17:04:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if remote_tap.custom_remote? && !remote_tap.remote.nil? | 
					
						
							|  |  |  |           return remote_tap.remote.to_s | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 19:15:31 +01:00
										 |  |  |         "#{remote_tap.default_remote}/blob/master/Casks/#{token}.rb" | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.artifact_info(cask) | 
					
						
							|  |  |  |         ohai "Artifacts" | 
					
						
							|  |  |  |         DSL::ORDINARY_ARTIFACT_TYPES.each do |type| | 
					
						
							|  |  |  |           next if cask.artifacts[type].empty? | 
					
						
							|  |  |  |           cask.artifacts[type].each do |artifact| | 
					
						
							|  |  |  |             activatable_item = type == :stage_only ? "<none>" : artifact.first | 
					
						
							|  |  |  |             puts "#{activatable_item} (#{type})" | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |