| 
									
										
										
										
											2020-11-30 08:41:48 -05:00
										 |  |  | # typed: false | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-17 18:25:08 +09:00
										 |  |  | require "cli/parser" | 
					
						
							| 
									
										
										
										
											2016-04-17 09:19:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 22:41:47 -05:00
										 |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |   extend T::Sig | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-26 01:44:51 +02:00
										 |  |  |   module_function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |   sig { returns(CLI::Parser) } | 
					
						
							| 
									
										
										
										
											2019-01-30 21:29:43 +00:00
										 |  |  |   def __prefix_args | 
					
						
							|  |  |  |     Homebrew::CLI::Parser.new do | 
					
						
							|  |  |  |       usage_banner <<~EOS | 
					
						
							|  |  |  |         `--prefix` [<formula>] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 08:41:48 -05:00
										 |  |  |         Display Homebrew's install path. *Default:* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           - macOS Intel: `#{HOMEBREW_DEFAULT_PREFIX}` | 
					
						
							|  |  |  |           - macOS ARM: `#{HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}` | 
					
						
							|  |  |  |           - Linux: `#{HOMEBREW_LINUX_DEFAULT_PREFIX}` | 
					
						
							| 
									
										
										
										
											2019-01-30 21:29:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-18 12:13:43 -04:00
										 |  |  |         If <formula> is provided, display the location in the Cellar where <formula> | 
					
						
							| 
									
										
										
										
											2019-01-30 21:29:43 +00:00
										 |  |  |         is or would be installed. | 
					
						
							|  |  |  |       EOS | 
					
						
							| 
									
										
										
										
											2020-11-30 08:41:48 -05:00
										 |  |  |       switch "--unbrewed", | 
					
						
							|  |  |  |              description: "List files in Homebrew's prefix not installed by Homebrew." | 
					
						
							| 
									
										
										
										
											2019-01-30 21:29:43 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |   def __prefix | 
					
						
							| 
									
										
										
										
											2020-07-30 18:40:10 +02:00
										 |  |  |     args = __prefix_args.parse | 
					
						
							| 
									
										
										
										
											2019-01-30 21:29:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-30 08:41:48 -05:00
										 |  |  |     if args.unbrewed? | 
					
						
							|  |  |  |       raise UsageError, "`--unbrewed` does not take a formula argument." unless args.no_named? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       list_unbrewed | 
					
						
							|  |  |  |     elsif args.no_named? | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |       puts HOMEBREW_PREFIX | 
					
						
							|  |  |  |     else | 
					
						
							| 
									
										
										
										
											2020-08-19 10:34:48 -04:00
										 |  |  |       puts args.named.to_resolved_formulae.map { |f| | 
					
						
							| 
									
										
										
										
											2020-08-21 12:10:44 -07:00
										 |  |  |         f.opt_prefix.exist? ? f.opt_prefix : f.latest_installed_prefix | 
					
						
							| 
									
										
										
										
											2017-02-12 16:17:56 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2020-11-30 08:41:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   UNBREWED_EXCLUDE_FILES = %w[.DS_Store].freeze | 
					
						
							|  |  |  |   UNBREWED_EXCLUDE_PATHS = %w[
 | 
					
						
							|  |  |  |     */.keepme | 
					
						
							|  |  |  |     .github/* | 
					
						
							|  |  |  |     bin/brew | 
					
						
							|  |  |  |     completions/zsh/_brew | 
					
						
							|  |  |  |     docs/* | 
					
						
							|  |  |  |     lib/gdk-pixbuf-2.0/* | 
					
						
							|  |  |  |     lib/gio/* | 
					
						
							|  |  |  |     lib/node_modules/* | 
					
						
							|  |  |  |     lib/python[23].[0-9]/* | 
					
						
							|  |  |  |     lib/pypy/* | 
					
						
							|  |  |  |     lib/pypy3/* | 
					
						
							|  |  |  |     lib/ruby/gems/[12].* | 
					
						
							|  |  |  |     lib/ruby/site_ruby/[12].* | 
					
						
							|  |  |  |     lib/ruby/vendor_ruby/[12].* | 
					
						
							|  |  |  |     manpages/brew.1
 | 
					
						
							|  |  |  |     share/pypy/* | 
					
						
							|  |  |  |     share/pypy3/* | 
					
						
							|  |  |  |     share/info/dir | 
					
						
							|  |  |  |     share/man/whatis | 
					
						
							|  |  |  |   ].freeze | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def list_unbrewed | 
					
						
							|  |  |  |     dirs  = HOMEBREW_PREFIX.subdirs.map { |dir| dir.basename.to_s } | 
					
						
							|  |  |  |     dirs -= %w[Library Cellar Caskroom .git] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Exclude cache, logs, and repository, if they are located under the prefix. | 
					
						
							|  |  |  |     [HOMEBREW_CACHE, HOMEBREW_LOGS, HOMEBREW_REPOSITORY].each do |dir| | 
					
						
							|  |  |  |       dirs.delete dir.relative_path_from(HOMEBREW_PREFIX).to_s | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     dirs.delete "etc" | 
					
						
							|  |  |  |     dirs.delete "var" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     arguments = dirs.sort + %w[-type f (] | 
					
						
							|  |  |  |     arguments.concat UNBREWED_EXCLUDE_FILES.flat_map { |f| %W[! -name #{f}] } | 
					
						
							|  |  |  |     arguments.concat UNBREWED_EXCLUDE_PATHS.flat_map { |d| %W[! -path #{d}] } | 
					
						
							|  |  |  |     arguments.concat %w[)] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     cd HOMEBREW_PREFIX | 
					
						
							|  |  |  |     safe_system "find", *arguments | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  | end |