| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | class Hbc::CLI::Info < Hbc::CLI::Base | 
					
						
							|  |  |  |   def self.run(*args) | 
					
						
							|  |  |  |     cask_tokens = cask_tokens_from(args) | 
					
						
							|  |  |  |     raise Hbc::CaskUnspecifiedError if cask_tokens.empty? | 
					
						
							|  |  |  |     cask_tokens.each do |cask_token| | 
					
						
							|  |  |  |       odebug "Getting info for Cask #{cask_token}" | 
					
						
							|  |  |  |       cask = Hbc.load(cask_token) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       info(cask) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.help | 
					
						
							|  |  |  |     "displays information about the given Cask" | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.info(cask) | 
					
						
							|  |  |  |     puts "#{cask.token}: #{cask.version}" | 
					
						
							|  |  |  |     puts formatted_url(cask.homepage) if cask.homepage | 
					
						
							|  |  |  |     installation_info(cask) | 
					
						
							|  |  |  |     puts "From: #{formatted_url(github_info(cask))}" if github_info(cask) | 
					
						
							|  |  |  |     name_info(cask) | 
					
						
							|  |  |  |     artifact_info(cask) | 
					
						
							|  |  |  |     Hbc::Installer.print_caveats(cask) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.formatted_url(url) | 
					
						
							| 
									
										
										
										
											2016-08-23 09:11:09 +03:00
										 |  |  |     "#{Tty.em}#{url}#{Tty.reset}" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.installation_info(cask) | 
					
						
							|  |  |  |     if cask.installed? | 
					
						
							|  |  |  |       cask.versions.each do |version| | 
					
						
							|  |  |  |         versioned_staged_path = cask.caskroom_path.join(version) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         puts versioned_staged_path.to_s | 
					
						
							|  |  |  |           .concat(" (") | 
					
						
							| 
									
										
										
										
											2016-08-23 09:11:09 +03:00
										 |  |  |           .concat(versioned_staged_path.exist? ? versioned_staged_path.abv : "#{Tty.red}does not exist#{Tty.reset}") | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |           .concat(")") | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       puts "Not installed" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.name_info(cask) | 
					
						
							|  |  |  |     ohai cask.name.size > 1 ? "Names" : "Name" | 
					
						
							| 
									
										
										
										
											2016-08-23 09:11:09 +03:00
										 |  |  |     puts cask.name.empty? ? "#{Tty.red}None#{Tty.reset}" : cask.name | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.github_info(cask) | 
					
						
							|  |  |  |     user, repo, token = Hbc::QualifiedToken.parse(Hbc.all_tokens.detect { |t| t.split("/").last == cask.token }) | 
					
						
							|  |  |  |     "#{Tap.fetch(user, repo).default_remote}/blob/master/Casks/#{token}.rb" | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.artifact_info(cask) | 
					
						
							|  |  |  |     ohai "Artifacts" | 
					
						
							|  |  |  |     Hbc::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 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |