From 6f7b7cc6996bd0ed8089a3030df60b732c459070 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sun, 20 Sep 2020 06:03:36 +0200 Subject: [PATCH] Fix type-checking for `URL`. --- Library/Homebrew/cask/url.rb | 67 +++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/cask/url.rb b/Library/Homebrew/cask/url.rb index 2e59372f9d..f1d6812c4b 100644 --- a/Library/Homebrew/cask/url.rb +++ b/Library/Homebrew/cask/url.rb @@ -1,32 +1,65 @@ +# typed: strict # frozen_string_literal: true +require "utils/sorbet" + # Class corresponding to the `url` stanza. # # @api private class URL - ATTRIBUTES = [ - :using, - :tag, :branch, :revisions, :revision, - :trust_cert, :cookies, :referer, :user_agent, - :data - ].freeze - private_constant :ATTRIBUTES + extend T::Sig - attr_reader :uri, :specs, *ATTRIBUTES + attr_reader :uri, :specs, + :using, + :tag, :branch, :revisions, :revision, + :trust_cert, :cookies, :referer, :user_agent, + :data extend Forwardable def_delegators :uri, :path, :scheme, :to_s - def initialize(uri, **options) - @uri = URI(uri) - @user_agent = :default + sig do + params( + uri: T.any(URI::Generic, String), + using: T.nilable(Symbol), + tag: T.nilable(String), + branch: T.nilable(String), + revisions: T.nilable(T::Array[String]), + revision: T.nilable(String), + trust_cert: T.nilable(T::Boolean), + cookies: T.nilable(T::Hash[String, String]), + referer: T.nilable(T.any(URI::Generic, String)), + user_agent: T.nilable(T.any(Symbol, String)), + data: T.nilable(T::Hash[String, String]), + ).returns(T.untyped) + end + def initialize( + uri, + using: nil, + tag: nil, + branch: nil, + revisions: nil, + revision: nil, + trust_cert: nil, + cookies: nil, + referer: nil, + user_agent: nil, + data: nil + ) + @uri = URI(uri) - ATTRIBUTES.each do |attribute| - next unless options.key?(attribute) + specs = {} + specs[:using] = @using = using + specs[:tag] = @tag = tag + specs[:branch] = @branch = branch + specs[:revisions] = @revisions = revisions + specs[:revision] = @revision = revision + specs[:trust_cert] = @trust_cert = trust_cert + specs[:cookies] = @cookies = cookies + specs[:referer] = @referer = referer + specs[:user_agent] = @user_agent = user_agent || :default + specs[:data] = @data = data - instance_variable_set("@#{attribute}", options[attribute]) - end - - @specs = options + @specs = specs.compact end end