diff --git a/Library/.rubocop.yml b/Library/.rubocop.yml index 2972ab0bfd..358bafc5a7 100644 --- a/Library/.rubocop.yml +++ b/Library/.rubocop.yml @@ -18,6 +18,7 @@ AllCops: - 'Homebrew/sorbet/rbi/gems/**/*.rbi' - 'Homebrew/sorbet/rbi/hidden-definitions/**/*.rbi' - 'Homebrew/sorbet/rbi/todo.rbi' + - 'Homebrew/sorbet/rbi/upstream.rbi' - 'Homebrew/bin/*' - 'Homebrew/vendor/**/*' diff --git a/Library/Homebrew/cask/caskroom.rb b/Library/Homebrew/cask/caskroom.rb index 4aa3ea067b..8d91d4582f 100644 --- a/Library/Homebrew/cask/caskroom.rb +++ b/Library/Homebrew/cask/caskroom.rb @@ -1,4 +1,4 @@ -# typed: false +# typed: true # frozen_string_literal: true require "utils/user" @@ -10,13 +10,13 @@ module Cask module Caskroom extend T::Sig - module_function - - def path + sig { returns(Pathname) } + def self.path @path ||= HOMEBREW_PREFIX.join("Caskroom") end - def ensure_caskroom_exists + sig { void } + def self.ensure_caskroom_exists return if path.exist? sudo = !path.parent.writable? @@ -32,8 +32,8 @@ module Cask SystemCommand.run("/usr/bin/chgrp", args: ["admin", path], sudo: sudo) end - sig { params(config: Config).returns(T::Array[Cask]) } - def casks(config: nil) + sig { params(config: T.nilable(Config)).returns(T::Array[Cask]) } + def self.casks(config: nil) return [] unless path.exist? Pathname.glob(path.join("*")).sort.select(&:directory?).map do |path| diff --git a/Library/Homebrew/sorbet/rbi/upstream.rbi b/Library/Homebrew/sorbet/rbi/upstream.rbi new file mode 100644 index 0000000000..208f4e3c36 --- /dev/null +++ b/Library/Homebrew/sorbet/rbi/upstream.rbi @@ -0,0 +1,7 @@ +# typed: strict + +class Pathname + # https://github.com/sorbet/sorbet/pull/3676 + sig { params(p1: T.any(String, Pathname), p2: String).returns(T::Array[Pathname]) } + def self.glob(p1, p2 = T.unsafe(nil)); end +end