Skip to content

Commit

Permalink
Merge pull request #18354 from Homebrew/back-to-srb
Browse files Browse the repository at this point in the history
Bump more files to Sorbet `typed: strict`
  • Loading branch information
issyl0 authored Oct 6, 2024
2 parents c5fed58 + d1892d4 commit a917ce2
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 10 deletions.
2 changes: 1 addition & 1 deletion Library/Homebrew/brew.rb
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
end
rescue UsageError => e
require "help"
Homebrew::Help.help cmd, remaining_args: args&.remaining, usage_error: e.message
Homebrew::Help.help cmd, remaining_args: args&.remaining || [], usage_error: e.message
rescue SystemExit => e
onoe "Kernel.exit" if args&.debug? && !e.success?
if args&.debug? || ARGV.include?("--debug")
Expand Down
8 changes: 6 additions & 2 deletions Library/Homebrew/cask/migrator.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true

require "cask/cask_loader"
require "utils/inreplace"

module Cask
class Migrator
sig { returns(Cask) }
attr_reader :old_cask, :new_cask

sig { params(old_cask: Cask, new_cask: Cask).void }
Expand Down Expand Up @@ -38,7 +39,10 @@ def migrate(dry_run: false)
old_caskroom_path = old_cask.caskroom_path
new_caskroom_path = new_cask.caskroom_path

old_installed_caskfile = old_cask.installed_caskfile.relative_path_from(old_caskroom_path)
old_caskfile = old_cask.installed_caskfile
return if old_caskfile.nil?

old_installed_caskfile = old_caskfile.relative_path_from(old_caskroom_path)
new_installed_caskfile = old_installed_caskfile.dirname/old_installed_caskfile.basename.sub(
old_token,
new_token,
Expand Down
5 changes: 5 additions & 0 deletions Library/Homebrew/dependencies.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ def dup_without_system_deps
def inspect
"#<#{self.class.name}: #{__getobj__}>"
end

sig { returns(T::Array[Dependency]) }
def to_a
__getobj__.to_a
end
end

# A collection of requirements.
Expand Down
14 changes: 9 additions & 5 deletions Library/Homebrew/formula_cellar_checks.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true

require "utils/shell"
Expand Down Expand Up @@ -191,6 +191,7 @@ def check_elisp_root(share, name)
EOS
end

sig { params(lib: Pathname, deps: Dependencies).returns(T.nilable(String)) }
def check_python_packages(lib, deps)
return unless lib.directory?

Expand All @@ -208,7 +209,8 @@ def check_python_packages(lib, deps)

return if pythons.blank?

python_deps = deps.map(&:name)
python_deps = deps.to_a
.map(&:name)
.grep(/^python(@.*)?$/)
.filter_map { |d| Formula[d].version.to_s[/^\d+\.\d+/] }

Expand Down Expand Up @@ -250,6 +252,7 @@ def check_shim_references(prefix)
EOS
end

sig { params(prefix: Pathname, plist: Pathname).returns(T.nilable(String)) }
def check_plist(prefix, plist)
return unless prefix.directory?

Expand Down Expand Up @@ -412,7 +415,7 @@ def check_binary_arches(formula)

sig { void }
def audit_installed
@new_formula ||= false
@new_formula ||= T.let(false, T.nilable(T::Boolean))

problem_if_output(check_manpages)
problem_if_output(check_infopages)
Expand Down Expand Up @@ -442,8 +445,9 @@ def relative_glob(dir, pattern)
File.directory?(dir) ? Dir.chdir(dir) { Dir[pattern] } : []
end

def cpuid_instruction?(file, objdump = "objdump")
@instruction_column_index ||= {}
sig { params(file: T.any(Pathname, String), objdump: Pathname).returns(T::Boolean) }
def cpuid_instruction?(file, objdump)
@instruction_column_index ||= T.let({}, T.nilable(T::Hash[Pathname, Integer]))
@instruction_column_index[objdump] ||= begin
objdump_version = Utils.popen_read(objdump, "--version")

Expand Down
27 changes: 25 additions & 2 deletions Library/Homebrew/help.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true # rubocop:todo Sorbet/StrictSigil
# typed: strict
# frozen_string_literal: true

require "cli/parser"
Expand All @@ -7,6 +7,14 @@
module Homebrew
# Helper module for printing help output.
module Help
sig {
params(
cmd: T.nilable(String),
empty_argv: T::Boolean,
usage_error: T.nilable(String),
remaining_args: T::Array[String],
).void
}
def self.help(cmd = nil, empty_argv: false, usage_error: nil, remaining_args: [])
if cmd.nil?
# Handle `brew` (no arguments).
Expand Down Expand Up @@ -39,6 +47,13 @@ def self.help(cmd = nil, empty_argv: false, usage_error: nil, remaining_args: []
exit 0
end

sig {
params(
cmd: String,
path: Pathname,
remaining_args: T::Array[String],
).returns(String)
}
def self.command_help(cmd, path, remaining_args:)
# Only some types of commands can have a parser.
output = if Commands.valid_internal_cmd?(cmd) ||
Expand All @@ -58,6 +73,12 @@ def self.command_help(cmd, path, remaining_args:)
end
private_class_method :command_help

sig {
params(
path: Pathname,
remaining_args: T::Array[String],
).returns(T.nilable(String))
}
def self.parser_help(path, remaining_args:)
# Let OptionParser generate help text for commands which have a parser.
cmd_parser = CLI::Parser.from_cmd_path(path)
Expand All @@ -69,14 +90,16 @@ def self.parser_help(path, remaining_args:)
end
private_class_method :parser_help

sig { params(path: Pathname).returns(T::Array[String]) }
def self.command_help_lines(path)
path.read
.lines
.grep(/^#:/)
.map { |line| line.slice(2..-1).delete_prefix(" ") }
.filter_map { |line| line.slice(2..-1)&.delete_prefix(" ") }
end
private_class_method :command_help_lines

sig { params(path: Pathname).returns(T.nilable(String)) }
def self.comment_help(path)
# Otherwise read #: lines from the file.
help_lines = command_help_lines(path)
Expand Down

0 comments on commit a917ce2

Please sign in to comment.