mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Enable strict typing in Formula
This commit is contained in:
parent
62dc3876ab
commit
a81239ec2d
@ -19,8 +19,8 @@ class Caveats
|
||||
sig { returns(String) }
|
||||
def caveats
|
||||
caveats = []
|
||||
begin
|
||||
build = formula.build
|
||||
begin
|
||||
formula.build = Tab.for_formula(formula)
|
||||
string = formula.caveats.to_s
|
||||
caveats << "#{string.chomp}\n" unless string.empty?
|
||||
|
@ -209,7 +209,8 @@ module Homebrew
|
||||
formulae.map(&:to_hash)
|
||||
end
|
||||
when :v2
|
||||
formulae, casks = if all
|
||||
formulae, casks = T.let(
|
||||
if all
|
||||
[
|
||||
Formula.all(eval_all: args.eval_all?).sort,
|
||||
Cask::Cask.all(eval_all: args.eval_all?).sort_by(&:full_name),
|
||||
@ -217,8 +218,9 @@ module Homebrew
|
||||
elsif args.installed?
|
||||
[Formula.installed.sort, Cask::Caskroom.casks.sort_by(&:full_name)]
|
||||
else
|
||||
args.named.to_formulae_to_casks
|
||||
end
|
||||
T.cast(args.named.to_formulae_to_casks, [T::Array[Formula], T::Array[Cask::Cask]])
|
||||
end, [T::Array[Formula], T::Array[Cask::Cask]]
|
||||
)
|
||||
|
||||
if args.variations?
|
||||
{
|
||||
|
@ -123,7 +123,8 @@ module Homebrew
|
||||
raise UsageError, "Cannot use #{flags.join(", ")} with formula arguments." unless args.no_named?
|
||||
|
||||
formulae = if args.t?
|
||||
Formula.installed.sort_by { |formula| test("M", formula.rack) }.reverse!
|
||||
# See https://ruby-doc.org/3.2/Kernel.html#method-i-test
|
||||
Formula.installed.sort_by { |formula| T.cast(test("M", formula.rack.to_s), Time) }.reverse!
|
||||
elsif args.full_name?
|
||||
Formula.installed.sort { |a, b| tap_and_name_comparison.call(a.full_name, b.full_name) }
|
||||
else
|
||||
|
@ -33,7 +33,7 @@ module Homebrew
|
||||
end
|
||||
|
||||
ff.each do |f|
|
||||
missing = f.missing_dependencies(hide: args.hide)
|
||||
missing = f.missing_dependencies(hide: args.hide || [])
|
||||
next if missing.empty?
|
||||
|
||||
Homebrew.failed = true
|
||||
|
@ -161,7 +161,7 @@ module Homebrew
|
||||
end
|
||||
next unless formula.any_version_installed?
|
||||
|
||||
keg = formula.installed_kegs.last
|
||||
keg = formula.installed_kegs.fetch(-1)
|
||||
tab = keg.tab
|
||||
# force a `brew upgrade` from the linuxbrew-core version to the homebrew-core version (even if lower)
|
||||
tab.source["versions"]["version_scheme"] = -1
|
||||
|
@ -106,8 +106,8 @@ module Homebrew
|
||||
# We can only get here if `used_formulae_missing` is false, thus there are no UnavailableFormula.
|
||||
used_formulae = T.cast(used_formulae, T::Array[Formula])
|
||||
if show_formulae_and_casks || args.formula?
|
||||
deps += used_formulae.map(&:runtime_installed_formula_dependents)
|
||||
.reduce(&:&)
|
||||
deps += T.must(used_formulae.map(&:runtime_installed_formula_dependents)
|
||||
.reduce(&:&))
|
||||
.select(&:any_version_installed?)
|
||||
end
|
||||
if show_formulae_and_casks || args.cask?
|
||||
|
@ -115,7 +115,7 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
formulae_and_casks = formulae_and_casks&.sort_by do |formula_or_cask|
|
||||
formulae_and_casks = formulae_and_casks.sort_by do |formula_or_cask|
|
||||
formula_or_cask.respond_to?(:token) ? formula_or_cask.token : formula_or_cask.name
|
||||
end
|
||||
|
||||
|
@ -63,7 +63,7 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
sig { params(list: T::Array[String], string: String).returns(String) }
|
||||
sig { params(list: T::Array[T.any(Formula, Pathname, String)], string: String).returns(String) }
|
||||
def inject_file_list(list, string)
|
||||
list.reduce(string.dup) { |acc, elem| acc << " #{elem}\n" }
|
||||
.freeze
|
||||
|
@ -24,7 +24,7 @@ module Homebrew
|
||||
end
|
||||
next unless recursive_runtime_dependencies.map(&:name).include? "gcc"
|
||||
|
||||
keg = formula.installed_kegs.last
|
||||
keg = formula.installed_kegs.fetch(-1)
|
||||
tab = keg.tab
|
||||
# Force reinstallation upon `brew upgrade` to fix the bottle RPATH.
|
||||
tab.source["versions"]["version_scheme"] = -1
|
||||
|
@ -48,9 +48,9 @@ module OS
|
||||
built_global_dep_tree!
|
||||
end
|
||||
|
||||
sig { params(name: String).returns(T.nilable(Formula)) }
|
||||
sig { params(name: String).returns(T.nilable(::Formula)) }
|
||||
def formula_for(name)
|
||||
@formula_for ||= T.let({}, T.nilable(T::Hash[String, Formula]))
|
||||
@formula_for ||= T.let({}, T.nilable(T::Hash[String, ::Formula]))
|
||||
@formula_for[name] ||= ::Formula[name]
|
||||
rescue FormulaUnavailableError
|
||||
nil
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -307,7 +307,7 @@ module FormulaCellarChecks
|
||||
return unless formula.service?
|
||||
return unless formula.service.command?
|
||||
|
||||
"Service command does not exist" unless File.exist?(formula.service.command.first)
|
||||
"Service command does not exist" unless File.exist?(T.must(formula.service.command).first)
|
||||
end
|
||||
|
||||
sig { params(formula: Formula).returns(T.nilable(String)) }
|
||||
|
@ -1230,7 +1230,7 @@ on_request: installed_on_request?, options:)
|
||||
return keg_formula_path if formula.loaded_from_api?
|
||||
return keg_formula_path if formula.local_bottle_path.present?
|
||||
|
||||
tap_formula_path = formula.specified_path
|
||||
tap_formula_path = T.must(formula.specified_path)
|
||||
return keg_formula_path unless tap_formula_path.exist?
|
||||
|
||||
begin
|
||||
|
@ -16,7 +16,7 @@ module Language
|
||||
next false unless f.any_version_installed?
|
||||
|
||||
unless version.zero?
|
||||
major = f.any_installed_version.major
|
||||
major = T.must(f.any_installed_version).major
|
||||
next false if major < version
|
||||
next false if major > version && !can_be_newer
|
||||
end
|
||||
|
@ -340,7 +340,10 @@ module Language
|
||||
version = rp.match %r{^#{HOMEBREW_CELLAR}/python@(.*?)/}o
|
||||
version = "@#{version.captures.first}" unless version.nil?
|
||||
|
||||
new_target = rp.sub %r{#{HOMEBREW_CELLAR}/python#{version}/[^/]+}, Formula["python#{version}"].opt_prefix
|
||||
new_target = rp.sub(
|
||||
%r{#{HOMEBREW_CELLAR}/python#{version}/[^/]+},
|
||||
Formula["python#{version}"].opt_prefix.to_s,
|
||||
)
|
||||
f.unlink
|
||||
f.make_symlink new_target
|
||||
end
|
||||
@ -351,7 +354,10 @@ module Language
|
||||
version = prefix_path.match %r{^#{HOMEBREW_CELLAR}/python@(.*?)/}o
|
||||
version = "@#{version.captures.first}" unless version.nil?
|
||||
|
||||
prefix_path.sub! %r{^#{HOMEBREW_CELLAR}/python#{version}/[^/]+}, Formula["python#{version}"].opt_prefix
|
||||
prefix_path.sub!(
|
||||
%r{^#{HOMEBREW_CELLAR}/python#{version}/[^/]+},
|
||||
Formula["python#{version}"].opt_prefix.to_s,
|
||||
)
|
||||
prefix_file.atomic_write prefix_path
|
||||
end
|
||||
|
||||
@ -362,7 +368,7 @@ module Language
|
||||
cfg = cfg_file.read
|
||||
framework = "Frameworks/Python.framework/Versions"
|
||||
cfg.match(%r{= *(#{HOMEBREW_CELLAR}/(python@[\d.]+)/[^/]+(?:/#{framework}/[\d.]+)?/bin)}) do |match|
|
||||
cfg.sub! match[1].to_s, Formula[match[2]].opt_bin
|
||||
cfg.sub! match[1].to_s, Formula[T.must(match[2])].opt_bin.to_s
|
||||
cfg_file.atomic_write cfg
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user