Class: Cask::URL Private

Inherits:
Object show all
Extended by:
Forwardable
Defined in:
cask/url.rb,
sorbet/rbi/dsl/cask/url.rbi

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Class corresponding to the url stanza.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri, verified: nil, using: nil, tag: nil, branch: nil, revisions: nil, revision: nil, trust_cert: nil, cookies: nil, referer: nil, header: nil, user_agent: nil, data: nil, only_path: nil, caller_location: caller_locations.fetch(0)) ⇒ void

Creates a url stanza.

Parameters:



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'cask/url.rb', line 65

def initialize(
  uri, verified: nil, using: nil, tag: nil, branch: nil, revisions: nil, revision: nil, trust_cert: nil,
  cookies: nil, referer: nil, header: nil, user_agent: nil, data: nil, only_path: nil,
  caller_location: caller_locations.fetch(0)
)
  @uri = T.let(URI(uri), URI::Generic)

  header = Array(header) unless header.nil?

  specs = {}
  specs[:verified]   = @verified   = T.let(verified, T.nilable(String))
  specs[:using]      = @using      = T.let(using, T.nilable(T.any(T::Class[AbstractDownloadStrategy], Symbol)))
  specs[:tag]        = @tag        = T.let(tag, T.nilable(String))
  specs[:branch]     = @branch     = T.let(branch, T.nilable(String))
  specs[:revisions]  = @revisions  = T.let(revisions, T.nilable(T::Hash[T.any(Symbol, String), String]))
  specs[:revision]   = @revision   = T.let(revision, T.nilable(String))
  specs[:trust_cert] = @trust_cert = T.let(trust_cert, T.nilable(T::Boolean))
  specs[:cookies]    =
    @cookies = T.let(cookies&.transform_keys(&:to_s), T.nilable(T::Hash[String, String]))
  specs[:referer]    = @referer    = T.let(referer, T.nilable(T.any(URI::Generic, String)))
  specs[:headers]    = @header     = T.let(header, T.nilable(T::Array[String]))
  specs[:user_agent] = @user_agent = T.let(user_agent || :default, T.nilable(T.any(Symbol, String)))
  specs[:data]       = @data       = T.let(data, T.nilable(T::Hash[String, String]))
  specs[:only_path]  = @only_path  = T.let(only_path, T.nilable(String))

  @specs = T.let(specs.compact, T::Hash[Symbol, T.untyped])
  @caller_location = caller_location
end

Instance Attribute Details

#branchString? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



37
38
39
# File 'cask/url.rb', line 37

def branch
  @branch
end

#cookiesHash{String => String}? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



19
20
21
# File 'cask/url.rb', line 19

def cookies
  @cookies
end

#dataHash{String => String}? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



19
20
21
# File 'cask/url.rb', line 19

def data
  @data
end

#headerArray<String>? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



22
23
24
# File 'cask/url.rb', line 22

def header
  @header
end

#only_pathString? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



37
38
39
# File 'cask/url.rb', line 37

def only_path
  @only_path
end

#refererURI::Generic, ... (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



25
26
27
# File 'cask/url.rb', line 25

def referer
  @referer
end

#revisionString? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



37
38
39
# File 'cask/url.rb', line 37

def revision
  @revision
end

#revisionsHash{Symbol, String => String}? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



13
14
15
# File 'cask/url.rb', line 13

def revisions
  @revisions
end

#specsHash{Symbol => T.untyped} (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



28
29
30
# File 'cask/url.rb', line 28

def specs
  @specs
end

#tagString? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



37
38
39
# File 'cask/url.rb', line 37

def tag
  @tag
end

#trust_certBoolean? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (Boolean, nil)


16
17
18
# File 'cask/url.rb', line 16

def trust_cert
  @trust_cert
end

#uriURI::Generic (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (URI::Generic)


10
11
12
# File 'cask/url.rb', line 10

def uri
  @uri
end

#user_agentSymbol, ... (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



31
32
33
# File 'cask/url.rb', line 31

def user_agent
  @user_agent
end

#usingT::Class[AbstractDownloadStrategy], ... (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



34
35
36
# File 'cask/url.rb', line 34

def using
  @using
end

#verifiedString? (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



37
38
39
# File 'cask/url.rb', line 37

def verified
  @verified
end

Instance Method Details

#locationHomebrew::SourceLocation

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



95
96
97
# File 'cask/url.rb', line 95

def location
  Homebrew::SourceLocation.new(@caller_location.lineno, raw_url_line&.index("url"))
end

#path(*args, &block) ⇒ T.untyped

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

  • args (T.untyped)
  • block (T.untyped)

Returns:

  • (T.untyped)


10
# File 'sorbet/rbi/dsl/cask/url.rbi', line 10

def path(*args, &block); end

#scheme(*args, &block) ⇒ T.untyped

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

  • args (T.untyped)
  • block (T.untyped)

Returns:

  • (T.untyped)


13
# File 'sorbet/rbi/dsl/cask/url.rbi', line 13

def scheme(*args, &block); end

#unversioned?(ignore_major_version: false) ⇒ Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

  • ignore_major_version (Boolean) (defaults to: false)

Returns:

  • (Boolean)


100
101
102
103
104
105
106
107
108
109
# File 'cask/url.rb', line 100

def unversioned?(ignore_major_version: false)
  interpolated_url = raw_url_line&.then { |line| line[/url\s+"([^"]+)"/, 1] }

  return false unless interpolated_url

  interpolated_url = interpolated_url.gsub(/\#{\s*arch\s*}/, "")
  interpolated_url = interpolated_url.gsub(/\#{\s*version\s*\.major\s*}/, "") if ignore_major_version

  interpolated_url.exclude?('#{')
end