mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

Refactor the CLI::Args module so it doesn't have different paths to check arguments depending on whether the arguments have been parsed or not. Instead, set the values we need from the global ARGV at first, global initialisation time where they will be thrown away when the actual arguments are parsed. To do this some other general refactoring was needed: - more methods made private when possible - e.g. `HEAD?` used consistently instead of `head` before arguments are parsed. - formula options are only parsed after named arguments are extracted
139 lines
3.5 KiB
Ruby
139 lines
3.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "English"
|
|
require "json"
|
|
require "json/add/exception"
|
|
require "pathname"
|
|
require "ostruct"
|
|
require "pp"
|
|
|
|
require_relative "load_path"
|
|
|
|
require "rubygems"
|
|
require "active_support/core_ext/object/blank"
|
|
require "active_support/core_ext/numeric/time"
|
|
require "active_support/core_ext/array/access"
|
|
require "active_support/i18n"
|
|
require "active_support/inflector/inflections"
|
|
|
|
I18n.backend.available_locales # Initialize locales so they can be overwritten.
|
|
I18n.backend.store_translations :en, support: { array: { last_word_connector: " and " } }
|
|
|
|
ActiveSupport::Inflector.inflections(:en) do |inflect|
|
|
inflect.irregular "formula", "formulae"
|
|
inflect.irregular "is", "are"
|
|
inflect.irregular "it", "they"
|
|
end
|
|
|
|
HOMEBREW_BOTTLE_DEFAULT_DOMAIN = ENV["HOMEBREW_BOTTLE_DEFAULT_DOMAIN"]
|
|
HOMEBREW_BREW_DEFAULT_GIT_REMOTE = ENV["HOMEBREW_BREW_DEFAULT_GIT_REMOTE"]
|
|
HOMEBREW_CORE_DEFAULT_GIT_REMOTE = ENV["HOMEBREW_CORE_DEFAULT_GIT_REMOTE"]
|
|
HOMEBREW_DEFAULT_CACHE = ENV["HOMEBREW_DEFAULT_CACHE"]
|
|
HOMEBREW_DEFAULT_LOGS = ENV["HOMEBREW_DEFAULT_LOGS"]
|
|
HOMEBREW_DEFAULT_TEMP = ENV["HOMEBREW_DEFAULT_TEMP"]
|
|
require "env_config"
|
|
|
|
require "config"
|
|
require "os"
|
|
require "extend/ARGV"
|
|
require "cli/args"
|
|
require "messages"
|
|
require "system_command"
|
|
|
|
ARGV.extend(HomebrewArgvExtension)
|
|
|
|
HOMEBREW_PRODUCT = ENV["HOMEBREW_PRODUCT"]
|
|
HOMEBREW_VERSION = ENV["HOMEBREW_VERSION"]
|
|
HOMEBREW_WWW = "https://brew.sh"
|
|
|
|
require "rbconfig"
|
|
|
|
RUBY_PATH = Pathname.new(RbConfig.ruby).freeze
|
|
RUBY_BIN = RUBY_PATH.dirname.freeze
|
|
|
|
HOMEBREW_USER_AGENT_CURL = ENV["HOMEBREW_USER_AGENT_CURL"]
|
|
HOMEBREW_USER_AGENT_RUBY =
|
|
"#{ENV["HOMEBREW_USER_AGENT"]} ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
|
HOMEBREW_USER_AGENT_FAKE_SAFARI =
|
|
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 " \
|
|
"(KHTML, like Gecko) Version/10.0.3 Safari/602.4.8"
|
|
|
|
HOMEBREW_DEFAULT_PREFIX = "/usr/local"
|
|
LINUXBREW_DEFAULT_PREFIX = "/home/linuxbrew/.linuxbrew"
|
|
|
|
require "fileutils"
|
|
require "os"
|
|
require "os/global"
|
|
|
|
module Homebrew
|
|
extend FileUtils
|
|
|
|
DEFAULT_PREFIX ||= HOMEBREW_DEFAULT_PREFIX
|
|
DEFAULT_CELLAR = "#{DEFAULT_PREFIX}/Cellar"
|
|
DEFAULT_REPOSITORY = "#{DEFAULT_PREFIX}/Homebrew"
|
|
|
|
class << self
|
|
attr_writer :failed, :raise_deprecation_exceptions, :auditing, :args
|
|
|
|
def Homebrew.default_prefix?(prefix = HOMEBREW_PREFIX)
|
|
prefix.to_s == DEFAULT_PREFIX
|
|
end
|
|
|
|
def failed?
|
|
@failed ||= false
|
|
@failed == true
|
|
end
|
|
|
|
def args
|
|
@args ||= CLI::Args.new(set_default_args: true)
|
|
end
|
|
|
|
def messages
|
|
@messages ||= Messages.new
|
|
end
|
|
|
|
def raise_deprecation_exceptions?
|
|
@raise_deprecation_exceptions == true
|
|
end
|
|
|
|
def auditing?
|
|
@auditing == true
|
|
end
|
|
end
|
|
end
|
|
|
|
HOMEBREW_PULL_API_REGEX =
|
|
%r{https://api\.github\.com/repos/([\w-]+)/([\w-]+)?/pulls/(\d+)}.freeze
|
|
HOMEBREW_PULL_OR_COMMIT_URL_REGEX =
|
|
%r[https://github\.com/([\w-]+)/([\w-]+)?/(?:pull/(\d+)|commit/[0-9a-fA-F]{4,40})].freeze
|
|
|
|
require "forwardable"
|
|
require "PATH"
|
|
|
|
ENV["HOMEBREW_PATH"] ||= ENV["PATH"]
|
|
ORIGINAL_PATHS = PATH.new(ENV["HOMEBREW_PATH"]).map do |p|
|
|
Pathname.new(p).expand_path
|
|
rescue
|
|
nil
|
|
end.compact.freeze
|
|
|
|
require "set"
|
|
|
|
require "extend/pathname"
|
|
|
|
require "extend/module"
|
|
require "extend/predicable"
|
|
require "extend/string"
|
|
require "active_support/core_ext/object/blank"
|
|
require "active_support/core_ext/hash/deep_merge"
|
|
require "active_support/core_ext/file/atomic"
|
|
|
|
require "exceptions"
|
|
require "utils"
|
|
|
|
require "official_taps"
|
|
require "tap"
|
|
require "tap_constants"
|
|
|
|
require "compat" unless Homebrew::EnvConfig.no_compat?
|