require 'extend/module' require 'extend/fileutils' require 'extend/pathname' require 'extend/ARGV' require 'extend/string' require 'extend/symbol' require 'extend/enumerable' require 'os' require 'utils' require 'exceptions' require 'set' require 'rbconfig' ARGV.extend(HomebrewArgvExtension) HOMEBREW_VERSION = '0.9.5' HOMEBREW_WWW = 'http://brew.sh' def cache if ENV['HOMEBREW_CACHE'] Pathname.new(ENV['HOMEBREW_CACHE']) else # we do this for historic reasons, however the cache *should* be the same # directory whichever user is used and whatever instance of brew is executed home_cache = Pathname.new("~/Library/Caches/Homebrew").expand_path if home_cache.directory? and home_cache.writable_real? home_cache else Pathname.new("/Library/Caches/Homebrew").extend Module.new { def mkpath unless exist? super chmod 0775 end end } end end end HOMEBREW_CACHE = cache undef cache # Where brews installed via URL are cached HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE+"Formula" if not defined? HOMEBREW_BREW_FILE HOMEBREW_BREW_FILE = ENV['HOMEBREW_BREW_FILE'] || which('brew').to_s end # Where we link under HOMEBREW_PREFIX = Pathname.new(HOMEBREW_BREW_FILE).dirname.parent # Where .git is found HOMEBREW_REPOSITORY = Pathname.new(HOMEBREW_BREW_FILE).realpath.dirname.parent HOMEBREW_LIBRARY = HOMEBREW_REPOSITORY/"Library" HOMEBREW_CONTRIB = HOMEBREW_REPOSITORY/"Library/Contributions" # Where we store built products; /usr/local/Cellar if it exists, # otherwise a Cellar relative to the Repository. HOMEBREW_CELLAR = if (HOMEBREW_PREFIX+"Cellar").exist? HOMEBREW_PREFIX+"Cellar" else HOMEBREW_REPOSITORY+"Cellar" end HOMEBREW_LOGS = Pathname.new(ENV['HOMEBREW_LOGS'] || '~/Library/Logs/Homebrew/').expand_path HOMEBREW_TEMP = Pathname.new(ENV.fetch('HOMEBREW_TEMP', '/tmp')) if RbConfig.respond_to?(:ruby) RUBY_PATH = Pathname.new(RbConfig.ruby) else RUBY_PATH = Pathname.new(RbConfig::CONFIG["bindir"]).join( RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"] ) end RUBY_BIN = RUBY_PATH.dirname if RUBY_PLATFORM =~ /darwin/ MACOS_FULL_VERSION = `/usr/bin/sw_vers -productVersion`.chomp MACOS_VERSION = MACOS_FULL_VERSION[/10\.\d+/] OS_VERSION = "Mac OS X #{MACOS_FULL_VERSION}" else MACOS_FULL_VERSION = MACOS_VERSION = "0" OS_VERSION = RUBY_PLATFORM end HOMEBREW_GITHUB_API_TOKEN = ENV["HOMEBREW_GITHUB_API_TOKEN"] HOMEBREW_USER_AGENT = "Homebrew #{HOMEBREW_VERSION} (Ruby #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}; #{OS_VERSION})" HOMEBREW_CURL_ARGS = '-f#LA' require 'tap_constants' module Homebrew include FileUtils extend self attr_accessor :failed alias_method :failed?, :failed end HOMEBREW_PULL_OR_COMMIT_URL_REGEX = %r[https://github\.com/([\w-]+)/homebrew(-[\w-]+)?/(?:pull/(\d+)|commit/[0-9a-fA-F]{4,40})] require 'compat' unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT'] ORIGINAL_PATHS = ENV['PATH'].split(File::PATH_SEPARATOR).map{ |p| Pathname.new(p).expand_path rescue nil }.compact.freeze