| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-19 13:11:32 +00:00
										 |  |  | raise "HOMEBREW_BREW_FILE was not exported! Please call bin/brew directly!" unless ENV["HOMEBREW_BREW_FILE"] | 
					
						
							| 
									
										
										
										
											2019-01-12 15:59:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Path to `bin/brew` main executable in `HOMEBREW_PREFIX` | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_BREW_FILE = Pathname(ENV["HOMEBREW_BREW_FILE"]).freeze | 
					
						
							| 
									
										
										
										
											2019-01-12 15:59:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MissingEnvironmentVariables < RuntimeError; end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | # Helper module for getting environment variables which must be set. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # @api private | 
					
						
							|  |  |  | module EnvVar | 
					
						
							|  |  |  |   extend T::Sig | 
					
						
							| 
									
										
										
										
											2019-02-19 13:12:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |   sig { params(env: String).returns(String) } | 
					
						
							|  |  |  |   def self.[](env) | 
					
						
							|  |  |  |     raise MissingEnvironmentVariables, "#{env} was not exported!" unless ENV[env] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ENV.fetch(env) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | require "extend/git_repository" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | # Where we link under | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_PREFIX = Pathname(EnvVar["HOMEBREW_PREFIX"]).freeze | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-18 21:42:43 -04:00
										 |  |  | # Where `.git` is found | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_REPOSITORY = Pathname(EnvVar["HOMEBREW_REPOSITORY"]) | 
					
						
							|  |  |  |                       .extend(GitRepositoryExtension) | 
					
						
							|  |  |  |                       .freeze | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-02 06:03:04 +02:00
										 |  |  | # Where we store most of Homebrew, taps, and various metadata | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_LIBRARY = Pathname(EnvVar["HOMEBREW_LIBRARY"]).freeze | 
					
						
							| 
									
										
										
										
											2016-07-02 06:03:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-15 19:03:45 +01:00
										 |  |  | # Where shim scripts for various build and SCM tools are stored | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | HOMEBREW_SHIMS_PATH = (HOMEBREW_LIBRARY/"Homebrew/shims").freeze | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-18 10:56:54 -04:00
										 |  |  | # Where external data that has been incorporated into Homebrew is stored | 
					
						
							|  |  |  | HOMEBREW_DATA_PATH = (HOMEBREW_LIBRARY/"Homebrew/data").freeze | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 13:51:21 +01:00
										 |  |  | # Where we store symlinks to currently linked kegs | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | HOMEBREW_LINKED_KEGS = (HOMEBREW_PREFIX/"var/homebrew/linked").freeze | 
					
						
							| 
									
										
										
										
											2016-09-16 13:51:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-17 13:25:32 +01:00
										 |  |  | # Where we store symlinks to currently version-pinned kegs | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | HOMEBREW_PINNED_KEGS = (HOMEBREW_PREFIX/"var/homebrew/pinned").freeze | 
					
						
							| 
									
										
										
										
											2016-09-16 13:51:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 17:29:03 +08:00
										 |  |  | # Where we store lock files | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | HOMEBREW_LOCKS = (HOMEBREW_PREFIX/"var/homebrew/locks").freeze | 
					
						
							| 
									
										
										
										
											2016-06-08 17:29:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-25 22:42:00 +00:00
										 |  |  | # Where we store built products | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_CELLAR = Pathname(EnvVar["HOMEBREW_CELLAR"]).freeze | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 16:01:42 +08:00
										 |  |  | # Where downloads (bottles, source tarballs, etc.) are cached | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_CACHE = Pathname(EnvVar["HOMEBREW_CACHE"]).freeze | 
					
						
							| 
									
										
										
										
											2016-05-03 16:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Where brews installed via URL are cached | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | HOMEBREW_CACHE_FORMULA = (HOMEBREW_CACHE/"Formula").freeze | 
					
						
							| 
									
										
										
										
											2016-05-03 16:01:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-02 06:03:04 +02:00
										 |  |  | # Where build, postinstall, and test logs of formulae are written to | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_LOGS = Pathname(EnvVar["HOMEBREW_LOGS"]).expand_path.freeze | 
					
						
							| 
									
										
										
										
											2015-04-28 22:37:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-18 21:42:43 -04:00
										 |  |  | # Must use `/tmp` instead of `TMPDIR` because long paths break Unix domain sockets | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  | HOMEBREW_TEMP = Pathname(EnvVar["HOMEBREW_TEMP"]).yield_self do |tmp| | 
					
						
							| 
									
										
										
										
											2018-07-03 15:41:33 +01:00
										 |  |  |   tmp.mkpath unless tmp.exist? | 
					
						
							|  |  |  |   tmp.realpath | 
					
						
							| 
									
										
										
										
											2019-04-19 21:46:20 +09:00
										 |  |  | end.freeze |