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:

  • uri (URI::Generic, String)
  • verified (String, nil) (defaults to: nil)
  • using (T::Class[AbstractDownloadStrategy], Symbol, nil) (defaults to: nil)
  • tag (String, nil) (defaults to: nil)
  • branch (String, nil) (defaults to: nil)
  • revisions (Hash{Symbol, String => String}, nil) (defaults to: nil)
  • revision (String, nil) (defaults to: nil)
  • trust_cert (Boolean, nil) (defaults to: nil)
  • cookies (Hash{String => String}, nil) (defaults to: nil)
  • referer (URI::Generic, String, nil) (defaults to: nil)
  • header (String, Array<String>, nil) (defaults to: nil)
  • user_agent (Symbol, String, nil) (defaults to: nil)
  • data (Hash{String => String}, nil) (defaults to: nil)
  • only_path (String, nil) (defaults to: nil)
  • caller_location (Thread::Backtrace::Location) (defaults to: caller_locations.fetch(0))


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 66

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.any(T::Class[AbstractDownloadStrategy], Symbol, NilClass))
  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, 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.any(String, 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 = T.let(caller_location, Thread::Backtrace::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:



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

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:



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

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:



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

def data
  @data
end

#headerString, ... (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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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)


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

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)


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

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:



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

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:



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

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:



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

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