mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Remove use of ActiveSupport try
This commit is contained in:
parent
e8290c2ed4
commit
00ba09d73d
1
.gitignore
vendored
1
.gitignore
vendored
@ -73,7 +73,6 @@
|
|||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/blank.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/blank.rb
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/deep_dup.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/deep_dup.rb
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/duplicable.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/duplicable.rb
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/try.rb
|
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/exclude.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/exclude.rb
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/filters.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/filters.rb
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/indent.rb
|
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/indent.rb
|
||||||
|
@ -20,7 +20,7 @@ module Cask
|
|||||||
|
|
||||||
raise CaskInvalidError.new(cask.token, "No source provided for #{english_name}.") if source.blank?
|
raise CaskInvalidError.new(cask.token, "No source provided for #{english_name}.") if source.blank?
|
||||||
|
|
||||||
unless options.try(:key?, :target)
|
unless options&.key?(:target)
|
||||||
raise CaskInvalidError.new(cask.token, "#{english_name} '#{source}' requires a target.")
|
raise CaskInvalidError.new(cask.token, "#{english_name} '#{source}' requires a target.")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -300,12 +300,12 @@ on_request: true)
|
|||||||
|
|
||||||
def missing_cask_and_formula_dependencies
|
def missing_cask_and_formula_dependencies
|
||||||
cask_and_formula_dependencies.reject do |cask_or_formula|
|
cask_and_formula_dependencies.reject do |cask_or_formula|
|
||||||
installed = if cask_or_formula.respond_to?(:any_version_installed?)
|
case cask_or_formula
|
||||||
cask_or_formula.any_version_installed?
|
when Formula
|
||||||
else
|
cask_or_formula.any_version_installed? && cask_or_formula.optlinked?
|
||||||
cask_or_formula.try(:installed?)
|
when Cask
|
||||||
|
cask_or_formula.installed?
|
||||||
end
|
end
|
||||||
installed && (cask_or_formula.respond_to?(:optlinked?) ? cask_or_formula.optlinked? : true)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ module Homebrew
|
|||||||
def retrieve_pull_requests(formula_or_cask, name, state:, version: nil)
|
def retrieve_pull_requests(formula_or_cask, name, state:, version: nil)
|
||||||
tap_remote_repo = formula_or_cask.tap&.remote_repo || formula_or_cask.tap&.full_name
|
tap_remote_repo = formula_or_cask.tap&.remote_repo || formula_or_cask.tap&.full_name
|
||||||
pull_requests = GitHub.fetch_pull_requests(name, tap_remote_repo, state: state, version: version)
|
pull_requests = GitHub.fetch_pull_requests(name, tap_remote_repo, state: state, version: version)
|
||||||
if pull_requests.try(:any?)
|
if pull_requests&.any?
|
||||||
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -288,7 +288,7 @@ module SharedEnvExtension
|
|||||||
gcc_version_name = "gcc@#{version}"
|
gcc_version_name = "gcc@#{version}"
|
||||||
|
|
||||||
gcc = Formulary.factory("gcc")
|
gcc = Formulary.factory("gcc")
|
||||||
if gcc.try(:version_suffix) == version
|
if gcc.respond_to?(:version_suffix) && T.unsafe(gcc).version_suffix == version
|
||||||
gcc
|
gcc
|
||||||
else
|
else
|
||||||
Formulary.factory(gcc_version_name)
|
Formulary.factory(gcc_version_name)
|
||||||
|
@ -2351,12 +2351,17 @@ class Formula
|
|||||||
hsh["requirements"] = merge_spec_dependables(requirements).map do |data|
|
hsh["requirements"] = merge_spec_dependables(requirements).map do |data|
|
||||||
req = data[:dependable]
|
req = data[:dependable]
|
||||||
req_name = req.name.dup
|
req_name = req.name.dup
|
||||||
req_name.prepend("maximum_") if req.try(:comparator) == "<="
|
req_name.prepend("maximum_") if req.respond_to?(:comparator) && req.comparator == "<="
|
||||||
|
req_version = if req.respond_to?(:version)
|
||||||
|
req.version
|
||||||
|
elsif req.respond_to?(:arch)
|
||||||
|
req.arch
|
||||||
|
end
|
||||||
{
|
{
|
||||||
"name" => req_name,
|
"name" => req_name,
|
||||||
"cask" => req.cask,
|
"cask" => req.cask,
|
||||||
"download" => req.download,
|
"download" => req.download,
|
||||||
"version" => req.try(:version) || req.try(:arch),
|
"version" => req_version,
|
||||||
"contexts" => req.tags,
|
"contexts" => req.tags,
|
||||||
"specs" => data[:specs],
|
"specs" => data[:specs],
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@ require "active_support/core_ext/hash/deep_merge"
|
|||||||
require "active_support/core_ext/hash/except"
|
require "active_support/core_ext/hash/except"
|
||||||
require "active_support/core_ext/hash/keys"
|
require "active_support/core_ext/hash/keys"
|
||||||
require "active_support/core_ext/object/blank"
|
require "active_support/core_ext/object/blank"
|
||||||
require "active_support/core_ext/object/try"
|
|
||||||
require "active_support/core_ext/string/exclude"
|
require "active_support/core_ext/string/exclude"
|
||||||
require "active_support/core_ext/string/filters"
|
require "active_support/core_ext/string/filters"
|
||||||
require "active_support/core_ext/string/indent"
|
require "active_support/core_ext/string/indent"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
# typed: true
|
# typed: true
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "delegate"
|
||||||
|
|
||||||
# An object which lazily evaluates its inner block only once a method is called on it.
|
# An object which lazily evaluates its inner block only once a method is called on it.
|
||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
|
@ -1,158 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require "delegate"
|
|
||||||
|
|
||||||
module ActiveSupport
|
|
||||||
module Tryable #:nodoc:
|
|
||||||
def try(method_name = nil, *args, &b)
|
|
||||||
if method_name.nil? && block_given?
|
|
||||||
if b.arity == 0
|
|
||||||
instance_eval(&b)
|
|
||||||
else
|
|
||||||
yield self
|
|
||||||
end
|
|
||||||
elsif respond_to?(method_name)
|
|
||||||
public_send(method_name, *args, &b)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
ruby2_keywords(:try) if respond_to?(:ruby2_keywords, true)
|
|
||||||
|
|
||||||
def try!(method_name = nil, *args, &b)
|
|
||||||
if method_name.nil? && block_given?
|
|
||||||
if b.arity == 0
|
|
||||||
instance_eval(&b)
|
|
||||||
else
|
|
||||||
yield self
|
|
||||||
end
|
|
||||||
else
|
|
||||||
public_send(method_name, *args, &b)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
ruby2_keywords(:try!) if respond_to?(:ruby2_keywords, true)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Object
|
|
||||||
include ActiveSupport::Tryable
|
|
||||||
|
|
||||||
##
|
|
||||||
# :method: try
|
|
||||||
#
|
|
||||||
# :call-seq:
|
|
||||||
# try(*a, &b)
|
|
||||||
#
|
|
||||||
# Invokes the public method whose name goes as first argument just like
|
|
||||||
# +public_send+ does, except that if the receiver does not respond to it the
|
|
||||||
# call returns +nil+ rather than raising an exception.
|
|
||||||
#
|
|
||||||
# This method is defined to be able to write
|
|
||||||
#
|
|
||||||
# @person.try(:name)
|
|
||||||
#
|
|
||||||
# instead of
|
|
||||||
#
|
|
||||||
# @person.name if @person
|
|
||||||
#
|
|
||||||
# +try+ calls can be chained:
|
|
||||||
#
|
|
||||||
# @person.try(:spouse).try(:name)
|
|
||||||
#
|
|
||||||
# instead of
|
|
||||||
#
|
|
||||||
# @person.spouse.name if @person && @person.spouse
|
|
||||||
#
|
|
||||||
# +try+ will also return +nil+ if the receiver does not respond to the method:
|
|
||||||
#
|
|
||||||
# @person.try(:non_existing_method) # => nil
|
|
||||||
#
|
|
||||||
# instead of
|
|
||||||
#
|
|
||||||
# @person.non_existing_method if @person.respond_to?(:non_existing_method) # => nil
|
|
||||||
#
|
|
||||||
# +try+ returns +nil+ when called on +nil+ regardless of whether it responds
|
|
||||||
# to the method:
|
|
||||||
#
|
|
||||||
# nil.try(:to_i) # => nil, rather than 0
|
|
||||||
#
|
|
||||||
# Arguments and blocks are forwarded to the method if invoked:
|
|
||||||
#
|
|
||||||
# @posts.try(:each_slice, 2) do |a, b|
|
|
||||||
# ...
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# The number of arguments in the signature must match. If the object responds
|
|
||||||
# to the method the call is attempted and +ArgumentError+ is still raised
|
|
||||||
# in case of argument mismatch.
|
|
||||||
#
|
|
||||||
# If +try+ is called without arguments it yields the receiver to a given
|
|
||||||
# block unless it is +nil+:
|
|
||||||
#
|
|
||||||
# @person.try do |p|
|
|
||||||
# ...
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# You can also call try with a block without accepting an argument, and the block
|
|
||||||
# will be instance_eval'ed instead:
|
|
||||||
#
|
|
||||||
# @person.try { upcase.truncate(50) }
|
|
||||||
#
|
|
||||||
# Please also note that +try+ is defined on +Object+. Therefore, it won't work
|
|
||||||
# with instances of classes that do not have +Object+ among their ancestors,
|
|
||||||
# like direct subclasses of +BasicObject+.
|
|
||||||
|
|
||||||
##
|
|
||||||
# :method: try!
|
|
||||||
#
|
|
||||||
# :call-seq:
|
|
||||||
# try!(*a, &b)
|
|
||||||
#
|
|
||||||
# Same as #try, but raises a +NoMethodError+ exception if the receiver is
|
|
||||||
# not +nil+ and does not implement the tried method.
|
|
||||||
#
|
|
||||||
# "a".try!(:upcase) # => "A"
|
|
||||||
# nil.try!(:upcase) # => nil
|
|
||||||
# 123.try!(:upcase) # => NoMethodError: undefined method `upcase' for 123:Integer
|
|
||||||
end
|
|
||||||
|
|
||||||
class Delegator
|
|
||||||
include ActiveSupport::Tryable
|
|
||||||
|
|
||||||
##
|
|
||||||
# :method: try
|
|
||||||
#
|
|
||||||
# :call-seq:
|
|
||||||
# try(a*, &b)
|
|
||||||
#
|
|
||||||
# See Object#try
|
|
||||||
|
|
||||||
##
|
|
||||||
# :method: try!
|
|
||||||
#
|
|
||||||
# :call-seq:
|
|
||||||
# try!(a*, &b)
|
|
||||||
#
|
|
||||||
# See Object#try!
|
|
||||||
end
|
|
||||||
|
|
||||||
class NilClass
|
|
||||||
# Calling +try+ on +nil+ always returns +nil+.
|
|
||||||
# It becomes especially helpful when navigating through associations that may return +nil+.
|
|
||||||
#
|
|
||||||
# nil.try(:name) # => nil
|
|
||||||
#
|
|
||||||
# Without +try+
|
|
||||||
# @person && @person.children.any? && @person.children.first.name
|
|
||||||
#
|
|
||||||
# With +try+
|
|
||||||
# @person.try(:children).try(:first).try(:name)
|
|
||||||
def try(_method_name = nil, *)
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
# Calling +try!+ on +nil+ always returns +nil+.
|
|
||||||
#
|
|
||||||
# nil.try!(:name) # => nil
|
|
||||||
def try!(_method_name = nil, *)
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
x
Reference in New Issue
Block a user