| 
									
										
										
										
											2016-04-08 16:28:43 +02:00
										 |  |  | #:  * `desc` <formula>: | 
					
						
							|  |  |  | #:    Display <formula>'s name and one-line description. | 
					
						
							|  |  |  | #: | 
					
						
							|  |  |  | #:  * `desc` [`-s`|`-n`|`-d`] <pattern>: | 
					
						
							|  |  |  | #:    Search both name and description (`-s`), just the names (`-n`), or just  the | 
					
						
							|  |  |  | #:    descriptions (`-d`) for `<pattern>`. `<pattern>` is by default interpreted | 
					
						
							|  |  |  | #:    as a literal string; if flanked by slashes, it is instead interpreted as a | 
					
						
							|  |  |  | #:    regular expression. Formula descriptions are cached; the cache is created on | 
					
						
							|  |  |  | #:    the first search, making that search slower than subsequent ones. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-05 15:29:01 -07:00
										 |  |  | require "descriptions" | 
					
						
							|  |  |  | require "cmd/search" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2016-09-26 01:44:51 +02:00
										 |  |  |   module_function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-05 15:29:01 -07:00
										 |  |  |   def desc | 
					
						
							| 
									
										
										
										
											2015-09-09 13:00:43 +08:00
										 |  |  |     search_type = [] | 
					
						
							|  |  |  |     search_type << :either if ARGV.flag? "--search" | 
					
						
							|  |  |  |     search_type << :name   if ARGV.flag? "--name" | 
					
						
							|  |  |  |     search_type << :desc   if ARGV.flag? "--description" | 
					
						
							| 
									
										
										
										
											2015-05-05 15:29:01 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-09 13:00:43 +08:00
										 |  |  |     if search_type.empty? | 
					
						
							|  |  |  |       raise FormulaUnspecifiedError if ARGV.named.empty? | 
					
						
							| 
									
										
										
										
											2015-09-09 15:21:18 +08:00
										 |  |  |       desc = {} | 
					
						
							|  |  |  |       ARGV.formulae.each { |f| desc[f.full_name] = f.desc } | 
					
						
							|  |  |  |       results = Descriptions.new(desc) | 
					
						
							|  |  |  |       results.print | 
					
						
							| 
									
										
										
										
											2015-09-09 13:00:43 +08:00
										 |  |  |     elsif search_type.size > 1
 | 
					
						
							|  |  |  |       odie "Pick one, and only one, of -s/--search, -n/--name, or -d/--description." | 
					
						
							| 
									
										
										
										
											2016-09-10 10:24:56 +01:00
										 |  |  |     elsif arg = ARGV.named.first | 
					
						
							|  |  |  |       regex = Homebrew.query_regexp(arg) | 
					
						
							|  |  |  |       results = Descriptions.search(regex, search_type.first) | 
					
						
							|  |  |  |       results.print | 
					
						
							| 
									
										
										
										
											2015-09-09 13:00:43 +08:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2016-09-10 10:24:56 +01:00
										 |  |  |       odie "You must provide a search term." | 
					
						
							| 
									
										
										
										
											2015-05-05 15:29:01 -07:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |