Skip to content

Commit

Permalink
Merge pull request #18011 from Homebrew/more-srb-strict-cmd
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeMcQuaid committed Aug 12, 2024
2 parents e3f8081 + 2ec30c5 commit fd14dea
Show file tree
Hide file tree
Showing 12 changed files with 77 additions and 21 deletions.
3 changes: 2 additions & 1 deletion Library/Homebrew/cmd/--prefix.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -91,6 +91,7 @@ def run

private

sig { void }
def list_unbrewed
dirs = HOMEBREW_PREFIX.subdirs.map { |dir| dir.basename.to_s }
dirs -= %w[Library Cellar Caskroom .git]
Expand Down
10 changes: 8 additions & 2 deletions Library/Homebrew/cmd/gist-logs.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -33,11 +33,14 @@ class GistLogs < AbstractCommand
def run
Install.perform_preinstall_checks(all_fatal: true)
Install.perform_build_from_source_checks(all_fatal: true)
gistify_logs(args.named.to_resolved_formulae.first)
return unless (formula = args.named.to_resolved_formulae.first)

gistify_logs(formula)
end

private

sig { params(formula: Formula).void }
def gistify_logs(formula)
files = load_logs(formula.logs)
build_time = formula.logs.ctime
Expand Down Expand Up @@ -86,6 +89,7 @@ def gistify_logs(formula)
puts url if url
end

sig { params(formula: Formula, with_hostname: T::Boolean).returns(String) }
def brief_build_info(formula, with_hostname:)
build_time_string = formula.logs.ctime.strftime("%Y-%m-%d %H:%M:%S")
string = +<<~EOS
Expand All @@ -100,6 +104,7 @@ def brief_build_info(formula, with_hostname:)
end

# Causes some terminals to display secure password entry indicators.
sig { void }
def noecho_gets
system "stty", "-echo"
result = $stdin.gets
Expand All @@ -108,6 +113,7 @@ def noecho_gets
result
end

sig { params(dir: Pathname, basedir: Pathname).returns(T::Hash[String, T::Hash[Symbol, String]]) }
def load_logs(dir, basedir = dir)
logs = {}
if dir.exist?
Expand Down
3 changes: 2 additions & 1 deletion Library/Homebrew/cmd/home.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -41,6 +41,7 @@ def run

private

sig { params(formula_or_cask: T.any(Formula, Cask::Cask)).returns(String) }
def name_of(formula_or_cask)
if formula_or_cask.is_a? Formula
"Formula #{formula_or_cask.name}"
Expand Down
8 changes: 5 additions & 3 deletions Library/Homebrew/cmd/leaves.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -39,12 +39,14 @@ def run

private

sig { params(formula: Formula).returns(T::Boolean) }
def installed_on_request?(formula)
formula.any_installed_keg.tab.installed_on_request
formula.any_installed_keg&.tab&.installed_on_request
end

sig { params(formula: Formula).returns(T::Boolean) }
def installed_as_dependency?(formula)
formula.any_installed_keg.tab.installed_as_dependency
formula.any_installed_keg&.tab&.installed_as_dependency
end
end
end
Expand Down
3 changes: 2 additions & 1 deletion Library/Homebrew/cmd/link.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -123,6 +123,7 @@ def run

private

sig { params(keg: Keg).void }
def puts_keg_only_path_message(keg)
bin = keg/"bin"
sbin = keg/"sbin"
Expand Down
11 changes: 8 additions & 3 deletions Library/Homebrew/cmd/list.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -160,6 +160,7 @@ def run

private

sig { void }
def filtered_list
names = if args.no_named?
Formula.racks
Expand Down Expand Up @@ -189,6 +190,7 @@ def filtered_list
end
end

sig { void }
def list_casks
casks = if args.no_named?
Cask::Caskroom.casks
Expand All @@ -212,6 +214,7 @@ def list_casks
end

class PrettyListing
sig { params(path: T.any(String, Pathname, Keg)).void }
def initialize(path)
Pathname.new(path).children.sort_by { |p| p.to_s.downcase }.each do |pn|
case pn.basename.to_s
Expand Down Expand Up @@ -240,15 +243,16 @@ def initialize(path)

private

def print_dir(root)
sig { params(root: Pathname, block: T.nilable(T.proc.params(arg0: Pathname).returns(T::Boolean))).void }
def print_dir(root, &block)
dirs = []
remaining_root_files = []
other = ""

root.children.sort.each do |pn|
if pn.directory?
dirs << pn
elsif block_given? && yield(pn)
elsif block && yield(pn)
puts pn
other = "other "
elsif pn.basename.to_s != ".DS_Store"
Expand All @@ -265,6 +269,7 @@ def print_dir(root)
print_remaining_files remaining_root_files, root, other
end

sig { params(files: T::Array[Pathname], root: Pathname, other: String).void }
def print_remaining_files(files, root, other = "")
if files.length == 1
puts files
Expand Down
3 changes: 2 additions & 1 deletion Library/Homebrew/cmd/options.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -54,6 +54,7 @@ def run

private

sig { params(formulae: T::Array[Formula]).void }
def puts_options(formulae)
formulae.each do |f|
next if f.options.empty?
Expand Down
27 changes: 24 additions & 3 deletions Library/Homebrew/cmd/outdated.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -86,6 +86,7 @@ def run

private

sig { params(formulae_or_casks: T::Array[T.any(Formula, Cask::Cask)]).void }
def print_outdated(formulae_or_casks)
formulae_or_casks.each do |formula_or_cask|
if formula_or_cask.is_a?(Formula)
Expand Down Expand Up @@ -124,6 +125,13 @@ def print_outdated(formulae_or_casks)
end
end

sig {
params(
formulae_or_casks: T::Array[T.any(Formula, Cask::Cask)],
).returns(
T::Array[T.any(T::Hash[String, T.untyped], T::Hash[String, T.untyped])],
)
}
def json_info(formulae_or_casks)
formulae_or_casks.map do |formula_or_cask|
if formula_or_cask.is_a?(Formula)
Expand All @@ -149,10 +157,12 @@ def json_info(formulae_or_casks)
end
end

sig { returns(T::Boolean) }
def verbose?
($stdout.tty? || Context.current.verbose?) && !Context.current.quiet?
end

sig { params(version: T.nilable(T.any(TrueClass, String))).returns(T.nilable(Symbol)) }
def json_version(version)
version_hash = {
nil => nil,
Expand All @@ -166,18 +176,26 @@ def json_version(version)
version_hash[version]
end

sig { returns(T::Array[Formula]) }
def outdated_formulae
select_outdated((args.named.to_resolved_formulae.presence || Formula.installed)).sort
T.cast(
select_outdated((args.named.to_resolved_formulae.presence || Formula.installed)).sort,
T::Array[Formula],
)
end

sig { returns(T::Array[Cask::Cask]) }
def outdated_casks
if args.named.present?
outdated = if args.named.present?
select_outdated(args.named.to_casks)
else
select_outdated(Cask::Caskroom.casks)
end

T.cast(outdated, T::Array[Cask::Cask])
end

sig { returns([T::Array[T.any(Formula, Cask::Cask)], T::Array[T.any(Formula, Cask::Cask)]]) }
def outdated_formulae_casks
formulae, casks = args.named.to_resolved_formulae_to_casks

Expand All @@ -189,6 +207,9 @@ def outdated_formulae_casks
[select_outdated(formulae).sort, select_outdated(casks)]
end

sig {
params(formulae_or_casks: T::Array[T.any(Formula, Cask::Cask)]).returns(T::Array[T.any(Formula, Cask::Cask)])
}
def select_outdated(formulae_or_casks)
formulae_or_casks.select do |formula_or_cask|
if formula_or_cask.is_a?(Formula)
Expand Down
11 changes: 8 additions & 3 deletions Library/Homebrew/cmd/search.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand All @@ -10,7 +10,7 @@
module Homebrew
module Cmd
class SearchCmd < AbstractCommand
PACKAGE_MANAGERS = {
PACKAGE_MANAGERS = T.let({
repology: ->(query) { "https://repology.org/projects/?search=#{query}" },
macports: ->(query) { "https://ports.macports.org/search/?q=#{query}" },
fink: ->(query) { "https://pdb.finkproject.org/pdb/browse.php?summary=#{query}" },
Expand All @@ -23,7 +23,7 @@ class SearchCmd < AbstractCommand
ubuntu: lambda { |query|
"https://packages.ubuntu.com/search?keywords=#{query}&searchon=names&suite=all&section=all"
},
}.freeze
}.freeze, T::Hash[Symbol, T.proc.params(query: String).returns(String)])

cmd_args do
description <<~EOS
Expand Down Expand Up @@ -89,6 +89,7 @@ def run

private

sig { void }
def print_regex_help
return unless $stdout.tty?

Expand All @@ -105,6 +106,7 @@ def print_regex_help
EOS
end

sig { returns(T::Boolean) }
def search_package_manager
package_manager = PACKAGE_MANAGERS.find { |name,| args[:"#{name}?"] }
return false if package_manager.nil?
Expand All @@ -114,6 +116,7 @@ def search_package_manager
true
end

sig { params(query: String).returns(String) }
def search_pull_requests(query)
only = if args.open? && !args.closed?
"open"
Expand All @@ -124,6 +127,7 @@ def search_pull_requests(query)
GitHub.print_pull_requests_matching(query, only)
end

sig { params(all_formulae: T::Array[String], all_casks: T::Array[String], query: String).void }
def print_results(all_formulae, all_casks, query)
count = all_formulae.size + all_casks.size

Expand All @@ -148,6 +152,7 @@ def print_results(all_formulae, all_casks, query)
odie "No formulae or casks found for #{query.inspect}." if count.zero?
end

sig { params(query: String, found_matches: T::Boolean).void }
def print_missing_formula_help(query, found_matches)
return unless $stdout.tty?

Expand Down
4 changes: 3 additions & 1 deletion Library/Homebrew/cmd/tap-info.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -42,6 +42,7 @@ def run

private

sig { params(taps: T::Array[Tap]).void }
def print_tap_info(taps)
if taps.none?
tap_count = 0
Expand Down Expand Up @@ -83,6 +84,7 @@ def print_tap_info(taps)
end
end

sig { params(taps: T::Array[Tap]).void }
def print_tap_json(taps)
puts JSON.pretty_generate(taps.map(&:to_hash))
end
Expand Down
11 changes: 10 additions & 1 deletion Library/Homebrew/cmd/uses.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# typed: true
# typed: strict
# frozen_string_literal: true

require "abstract_command"
Expand Down Expand Up @@ -87,6 +87,7 @@ def run

private

sig { params(use_runtime_dependents: T::Boolean, used_formulae: T::Array[Formula]).returns(T::Array[Formula]) }
def intersection_of_dependents(use_runtime_dependents, used_formulae)
recursive = args.recursive?
show_formulae_and_casks = !args.formula? && !args.cask?
Expand Down Expand Up @@ -137,6 +138,14 @@ def intersection_of_dependents(use_runtime_dependents, used_formulae)
end
end

sig {
params(
dependents: T::Array[Formula], used_formulae: T::Array[Formula], recursive: T::Boolean,
includes: T::Array[Symbol], ignores: T::Array[Symbol]
).returns(
T::Array[Formula],
)
}
def select_used_dependents(dependents, used_formulae, recursive, includes, ignores)
dependents.select do |d|
deps = if recursive
Expand Down
4 changes: 3 additions & 1 deletion Library/Homebrew/extend/os/linux/cmd/update-report.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# typed: true
# typed: strict
# frozen_string_literal: true

module Homebrew
module_function

sig { returns(String) }
def no_changes_message
"No changes to formulae."
end

sig { void }
def migrate_gcc_dependents_if_needed
return if Settings.read("gcc-rpaths.fixed") == "true"

Expand Down

0 comments on commit fd14dea

Please sign in to comment.