| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "cask/artifact/relocated" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Cask | 
					
						
							|  |  |  |   class List | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |     sig { params(casks: Cask, one: T::Boolean, full_name: T::Boolean, versions: T::Boolean).void } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |     def self.list_casks(*casks, one: false, full_name: false, versions: false) | 
					
						
							|  |  |  |       output = if casks.any? | 
					
						
							|  |  |  |         casks.each do |cask| | 
					
						
							|  |  |  |           raise CaskNotInstalledError, cask unless cask.installed? | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         Caskroom.casks | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if one | 
					
						
							|  |  |  |         puts output.map(&:to_s) | 
					
						
							|  |  |  |       elsif full_name | 
					
						
							|  |  |  |         puts output.map(&:full_name).sort(&tap_and_name_comparison) | 
					
						
							|  |  |  |       elsif versions | 
					
						
							| 
									
										
										
										
											2024-04-08 09:47:06 -07:00
										 |  |  |         puts output.map { format_versioned(_1) } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |       elsif !output.empty? && casks.any? | 
					
						
							| 
									
										
										
										
											2024-04-08 09:47:06 -07:00
										 |  |  |         output.map { list_artifacts(_1) } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |       elsif !output.empty? | 
					
						
							|  |  |  |         puts Formatter.columns(output.map(&:to_s)) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |     sig { params(cask: Cask).void } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |     def self.list_artifacts(cask) | 
					
						
							|  |  |  |       cask.artifacts.group_by(&:class).sort_by { |klass, _| klass.english_name }.each do |klass, artifacts| | 
					
						
							|  |  |  |         next if [Artifact::Uninstall, Artifact::Zap].include? klass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ohai klass.english_name | 
					
						
							|  |  |  |         artifacts.each do |artifact| | 
					
						
							|  |  |  |           puts artifact.summarize_installed if artifact.respond_to?(:summarize_installed) | 
					
						
							|  |  |  |           next if artifact.respond_to?(:summarize_installed) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           puts artifact | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |     sig { params(cask: Cask).returns(String) } | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |     def self.format_versioned(cask) | 
					
						
							| 
									
										
										
										
											2023-04-08 14:10:58 +02:00
										 |  |  |       "#{cask}#{cask.installed_version&.prepend(" ")}" | 
					
						
							| 
									
										
										
										
											2023-03-01 21:22:11 +09:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |