Class: Cask::CaskLoader::FromURILoader Private

Inherits:
FromPathLoader show all
Defined in:
cask/cask_loader.rb

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.

Loads a cask from a URI.

Instance Attribute Summary collapse

Attributes inherited from FromPathLoader

#path, #token

Attributes inherited from AbstractContentLoader

#content, #tap

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FromPathLoader

invalid_path?

Methods included from Utils::Output::Mixin

#odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_installed, #pretty_outdated, #pretty_uninstalled

Constructor Details

#initialize(url) ⇒ void

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:



258
259
260
261
262
263
264
265
# File 'cask/cask_loader.rb', line 258

def initialize(url)
  @url = T.let(URI(url), URI::Generic)
  url_path = @url.path
  raise "unexpected nil url.path" unless url_path

  @name = T.let(File.basename(url_path), String)
  super Cache.path/name
end

Instance Attribute Details

#nameString (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:



255
256
257
# File 'cask/cask_loader.rb', line 255

def name
  @name
end

#urlURI::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)


252
253
254
# File 'cask/cask_loader.rb', line 252

def url
  @url
end

Class Method Details

.try_new(ref, warn: false) ⇒ T.attached_class?

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:

Returns:

  • (T.attached_class, nil)


230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'cask/cask_loader.rb', line 230

def self.try_new(ref, warn: false)
  return if Homebrew::EnvConfig.forbid_packages_from_paths?

  # Cache compiled regex
  @uri_regex ||= T.let(
    begin
      uri_regex = ::URI::RFC2396_PARSER.make_regexp
      Regexp.new("\\A#{uri_regex.source}\\Z", uri_regex.options)
    end,
    T.nilable(Regexp),
  )

  uri = ref.to_s
  return unless uri.match?(@uri_regex)

  uri = URI(uri)
  return unless uri.path

  new(uri)
end

Instance Method Details

#load(config:) ⇒ Cask

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:

Returns:



268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
# File 'cask/cask_loader.rb', line 268

def load(config:)
  path.dirname.mkpath

  if ALLOWED_URL_SCHEMES.exclude?(url.scheme)
    raise UnsupportedInstallationMethod,
          "Non-checksummed download of #{name} formula file from an arbitrary URL is unsupported! " \
          "`brew version-install` to install a formula file from your own custom tap " \
          "instead."
  end

  begin
    ohai "Downloading #{url}"
    ::Utils::Curl.curl_download url.to_s, to: path
  rescue ErrorDuringExecution
    raise CaskUnavailableError.new(token, "Failed to download #{Formatter.url(url)}.")
  end

  super
end