Class: Cask::CaskLoader::FromAPILoader Private

Inherits:
Object
  • Object
show all
Includes:
ILoader
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 the JSON API.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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(token, from_json: T.unsafe(nil), path: nil, from_installed_caskfile: false, from_internal_json: false) ⇒ 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:

  • token (String)
  • from_json (Hash{String => T.untyped}, nil) (defaults to: T.unsafe(nil))
  • path (Pathname, nil) (defaults to: nil)
  • from_installed_caskfile (Boolean) (defaults to: false)
  • from_internal_json (Boolean) (defaults to: false)


358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
# File 'cask/cask_loader.rb', line 358

def initialize(token, from_json: T.unsafe(nil), path: nil, from_installed_caskfile: false,
               from_internal_json: false)
  @token = token.sub(%r{^homebrew/(?:homebrew-)?cask/}i, "")
  @sourcefile_path = if path
    path
  elsif from_json
    from_internal_json ? Homebrew::API::Internal.cached_cask_json_file_path : Homebrew::API::Cask.cached_json_file_path
  else
    Homebrew::API.cached_cask_json_file_path
  end
  @path = path || CaskLoader.default_path(@token)
  @from_json = from_json
  @from_installed_caskfile = from_installed_caskfile
  @from_internal_json = from_internal_json
end

Instance Attribute Details

#from_jsonHash{String => 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:



328
329
330
# File 'cask/cask_loader.rb', line 328

def from_json
  @from_json
end

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



325
326
327
# File 'cask/cask_loader.rb', line 325

def path
  @path
end

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



322
323
324
# File 'cask/cask_loader.rb', line 322

def token
  @token
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)


334
335
336
337
338
339
340
341
342
343
344
345
346
347
# File 'cask/cask_loader.rb', line 334

def self.try_new(ref, warn: false)
  return if Homebrew::EnvConfig.no_install_from_api?
  return unless ref.is_a?(String)
  return unless (token = ref[HOMEBREW_DEFAULT_TAP_CASK_REGEX, :token])
  if Homebrew::API.cask_tokens.exclude?(token) &&
     !Homebrew::API.cask_renames.key?(token)
    return
  end

  ref = "#{CoreCaskTap.instance}/#{token}"

  token, tap, = CaskLoader.tap_cask_token_type(ref, warn:)
  new("#{tap}/#{token}")
end

Instance Method Details

#load(config:) ⇒ Object

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.



374
375
376
377
378
379
380
381
382
383
384
385
386
# File 'cask/cask_loader.rb', line 374

def load(config:)
  if (api_source = from_json)
    if @from_internal_json
      load_from_internal_json(config:, api_source:)
    else
      load_from_json(config:, api_source:)
    end
  elsif Homebrew::EnvConfig.use_internal_api?
    load_from_internal_api(config:)
  else
    load_from_api(config:)
  end
end