| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class CLI | 
					
						
							| 
									
										
										
										
											2017-05-20 19:08:03 +02:00
										 |  |  |     class List < AbstractCommand | 
					
						
							| 
									
										
										
										
											2017-05-21 00:15:56 +02:00
										 |  |  |       option "-1", :one, false | 
					
						
							|  |  |  |       option "--versions", :versions, false | 
					
						
							| 
									
										
										
										
											2017-07-08 19:33:44 -07:00
										 |  |  |       option "--full-name", :full_name, false | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-21 00:15:56 +02:00
										 |  |  |       option "-l", (lambda do |*| | 
					
						
							|  |  |  |         one = true # rubocop:disable Lint/UselessAssignment | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  |         opoo "Option -l is obsolete! Implying option -1." | 
					
						
							| 
									
										
										
										
											2017-05-21 00:15:56 +02:00
										 |  |  |       end) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  |       def run | 
					
						
							| 
									
										
										
										
											2017-09-11 08:37:15 +02:00
										 |  |  |         args.any? ? list : list_installed | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  |       def list | 
					
						
							| 
									
										
										
										
											2017-06-13 17:14:01 +02:00
										 |  |  |         casks.each do |cask| | 
					
						
							|  |  |  |           raise CaskNotInstalledError, cask unless cask.installed? | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-13 17:14:01 +02:00
										 |  |  |           if one? | 
					
						
							|  |  |  |             puts cask.token | 
					
						
							|  |  |  |           elsif versions? | 
					
						
							|  |  |  |             puts self.class.format_versioned(cask) | 
					
						
							|  |  |  |           else | 
					
						
							| 
									
										
										
										
											2017-10-07 15:58:49 +02:00
										 |  |  |             cask = CaskLoader.load(cask.installed_caskfile) | 
					
						
							| 
									
										
										
										
											2017-06-13 17:14:01 +02:00
										 |  |  |             self.class.list_artifacts(cask) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											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.list_artifacts(cask) | 
					
						
							| 
									
										
										
										
											2017-10-04 17:08:35 +02:00
										 |  |  |         cask.artifacts.group_by(&:class).each do |klass, artifacts| | 
					
						
							| 
									
										
										
										
											2017-04-06 00:33:31 +02:00
										 |  |  |           next unless klass.respond_to?(:english_description) | 
					
						
							|  |  |  |           ohai klass.english_description, artifacts.map(&:summarize_installed) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  |       def list_installed | 
					
						
							| 
									
										
										
										
											2018-04-14 11:32:29 +02:00
										 |  |  |         installed_casks = Caskroom.casks | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-21 00:15:56 +02:00
										 |  |  |         if one? | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |           puts installed_casks.map(&:to_s) | 
					
						
							| 
									
										
										
										
											2017-05-21 00:15:56 +02:00
										 |  |  |         elsif versions? | 
					
						
							| 
									
										
										
										
											2017-05-20 03:30:46 +02:00
										 |  |  |           puts installed_casks.map(&self.class.method(:format_versioned)) | 
					
						
							| 
									
										
										
										
											2017-07-08 19:33:44 -07:00
										 |  |  |         elsif full_name? | 
					
						
							|  |  |  |           puts installed_casks.map(&:full_name).sort &tap_and_name_comparison | 
					
						
							| 
									
										
										
										
											2016-10-19 19:39:39 -04:00
										 |  |  |         elsif !installed_casks.empty? | 
					
						
							| 
									
										
										
										
											2016-10-02 20:39:43 +02:00
										 |  |  |           puts Formatter.columns(installed_casks.map(&:to_s)) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.format_versioned(cask) | 
					
						
							|  |  |  |         cask.to_s.concat(cask.versions.map(&:to_s).join(" ").prepend(" ")) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.help | 
					
						
							|  |  |  |         "with no args, lists installed Casks; given installed Casks, lists staged files" | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-09-19 15:15:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def self.needs_init? | 
					
						
							| 
									
										
										
										
											2017-03-06 21:28:34 +01:00
										 |  |  |         true | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-09-19 15:15:04 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | end |