diff --git a/Library/Homebrew/downloadable.rb b/Library/Homebrew/downloadable.rb index d1f6b8a298..9afb25d55a 100644 --- a/Library/Homebrew/downloadable.rb +++ b/Library/Homebrew/downloadable.rb @@ -11,13 +11,13 @@ module Downloadable abstract! - sig { returns(T.nilable(URL)) } + sig { overridable.returns(T.nilable(URL)) } attr_reader :url - sig { returns(T.nilable(Checksum)) } + sig { overridable.returns(T.nilable(Checksum)) } attr_reader :checksum - sig { returns(T::Array[String]) } + sig { overridable.returns(T::Array[String]) } attr_reader :mirrors sig { void } @@ -32,7 +32,7 @@ module Downloadable @version = @version.dup end - sig { returns(T.self_type) } + sig { overridable.returns(T.self_type) } def freeze @checksum.freeze @mirrors.freeze @@ -48,22 +48,22 @@ module Downloadable T.must(self.class.name&.split("::")&.last).gsub(/([[:lower:]])([[:upper:]])/, '\1 \2').downcase end - sig { returns(T::Boolean) } + sig(:final) { returns(T::Boolean) } def downloaded? cached_download.exist? end - sig { returns(Pathname) } + sig { overridable.returns(Pathname) } def cached_download downloader.cached_location end - sig { void } + sig { overridable.void } def clear_cache downloader.clear_cache end - sig { returns(T.nilable(Version)) } + sig { overridable.returns(T.nilable(Version)) } def version return @version if @version && !@version.null? diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 3c4e365aa9..8471fbca44 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -203,7 +203,7 @@ class Resource @download_strategy = @url.download_strategy end - sig { params(val: T.nilable(T.any(String, Version))).returns(T.nilable(Version)) } + sig { override.params(val: T.nilable(T.any(String, Version))).returns(T.nilable(Version)) } def version(val = nil) return super() if val.nil? diff --git a/Library/Homebrew/retryable_download.rb b/Library/Homebrew/retryable_download.rb index 3d38962698..0f647b8835 100644 --- a/Library/Homebrew/retryable_download.rb +++ b/Library/Homebrew/retryable_download.rb @@ -9,6 +9,15 @@ module Homebrew attr_reader :downloadable private :downloadable + sig { override.returns(T.nilable(URL)) } + def url = downloadable.url + + sig { override.returns(T.nilable(Checksum)) } + def checksum = downloadable.checksum + + sig { override.returns(T::Array[String]) } + def mirrors = downloadable.mirrors + sig { params(downloadable: Downloadable, tries: Integer).void } def initialize(downloadable, tries: 3) super() @@ -24,12 +33,21 @@ module Homebrew sig { override.returns(String) } def download_type = downloadable.download_type - sig { override.returns(T::Boolean) } - def downloaded? = downloadable.downloaded? - sig { override.returns(Pathname) } def cached_download = downloadable.cached_download + sig { override.void } + def clear_cache = downloadable.clear_cache + + sig { override.returns(T.nilable(Version)) } + def version = downloadable.version + + sig { override.returns(T.class_of(AbstractDownloadStrategy)) } + def download_strategy = downloadable.download_strategy + + sig { override.returns(AbstractDownloadStrategy) } + def downloader = downloadable.downloader + sig { override.params( verify_download_integrity: T::Boolean, @@ -68,5 +86,11 @@ module Homebrew downloadable.clear_cache retry end + + sig { override.params(filename: Pathname).void } + def verify_download_integrity(filename) = downloadable.verify_download_integrity(filename) + + sig { override.returns(String) } + def download_name = downloadable.download_name end end