Class: CoreTap Private

Inherits:
AbstractCoreTap show all
Defined in:
tap.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.

A specialized Tap class for the core formulae.

Constant Summary collapse

Elem =

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

type_member(:out) { { fixed: Tap } }

Constants inherited from Tap

Tap::HOMEBREW_TAP_JSON_FILES

Instance Attribute Summary

Attributes inherited from Tap

#full_name, #full_repository, #git_repository, #name, #path, #repository, #user

Instance Method Summary collapse

Methods inherited from AbstractCoreTap

#formula_file_to_name, instance, #should_report_analytics?

Methods inherited from Tap

#alias_files, #alias_reverse_table, #aliases, all, #allow_bump?, #allowed_by_env?, allowed_taps, #audit_exception, #cask_dir, #cask_file?, #cask_files, #cask_files_by_name, #cask_renames, #cask_reverse_renames, #cask_tokens, #clear_cache, #command_dir, #command_files, #config, #contents, #core_cask_tap?, core_taps, #custom_remote?, #default_remote, #disabled_new_usr_local_relocation_formulae, each, fetch, #fix_remote_configuration, #forbidden_by_env?, forbidden_taps, #formula_file?, #formula_file_to_name, #formula_reverse_renames, from_path, #git?, #git_branch, #git_head, #git_last_commit, installed, #installed?, #issues_url, #link_completions_and_manpages, #new_cask_path, #official?, #potential_formula_dirs, #prefix_to_versioned_formulae_names, #private?, #relative_cask_path, #remote_repository, #repository_var_suffix, #reverse_tap_migrations_renames, #shallow?, #should_report_analytics?, tap_migration_oldnames, #to_hash, untapped_official_taps, with_cask_token, with_formula_name

Methods included from Enumerable

#compact_blank, #exclude?

Methods included from Cachable

#cache, #clear_cache

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

#initializevoid

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.



1293
1294
1295
# File 'tap.rb', line 1293

def initialize
  super "Homebrew", "core"
end

Instance Method Details

#alias_dirPathname

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:



1375
1376
1377
1378
1379
1380
# File 'tap.rb', line 1375

def alias_dir
  @alias_dir ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(Pathname))
end

#alias_file_to_name(file) ⇒ String

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:



1441
1442
1443
# File 'tap.rb', line 1441

def alias_file_to_name(file)
  file.basename.to_s
end

#alias_tableHash{String => String}

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:



1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
# File 'tap.rb', line 1446

def alias_table
  @alias_table ||= T.let(
    if Homebrew::EnvConfig.no_install_from_api?
      super
    else
      Homebrew::API.formula_aliases
    end,
    T.nilable(T::Hash[String, String]),
  )
end

#audit_exceptionsHash{Symbol => 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.

Returns:



1417
1418
1419
1420
1421
1422
# File 'tap.rb', line 1417

def audit_exceptions
  @audit_exceptions ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(T::Hash[Symbol, T.untyped]))
end

#autobumpArray<String>

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:



1409
1410
1411
1412
1413
1414
# File 'tap.rb', line 1409

def autobump
  @autobump ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(T::Array[String]))
end

#core_tap?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.

Returns:

  • (Boolean)


1339
1340
1341
# File 'tap.rb', line 1339

def core_tap?
  true
end

#ensure_installed!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.

This method returns an undefined value.



1298
1299
1300
1301
1302
# File 'tap.rb', line 1298

def ensure_installed!
  return if ENV["HOMEBREW_TESTS"]

  super
end

#formula_dirPathname

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:



1349
1350
1351
1352
1353
1354
# File 'tap.rb', line 1349

def formula_dir
  @formula_dir ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(Pathname))
end

#formula_filesArray<Pathname>

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:



1458
1459
1460
1461
1462
# File 'tap.rb', line 1458

def formula_files
  return super if Homebrew::EnvConfig.no_install_from_api?

  formula_files_by_name.values
end

#formula_files_by_nameHash{String => Pathname}

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:



1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
# File 'tap.rb', line 1472

def formula_files_by_name
  return super if Homebrew::EnvConfig.no_install_from_api?

  @formula_files_by_name ||= T.let(
    begin
      formula_directory_path = formula_dir.to_s
      Homebrew::API.formula_names.each_with_object({}) do |name, hash|
        # If there's more than one item with the same path: use the longer one to prioritise more specific results.
        existing_path = hash[name]
        # Pathname equivalent is slow in a tight loop
        new_path = File.join(formula_directory_path, new_formula_subdirectory(name), "#{name.downcase}.rb")
        hash[name] = Pathname(new_path) if existing_path.nil? || existing_path.to_s.length < new_path.length
      end
    end,
    T.nilable(T::Hash[String, Pathname]),
  )
end

#formula_namesArray<String>

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:



1465
1466
1467
1468
1469
# File 'tap.rb', line 1465

def formula_names
  return super if Homebrew::EnvConfig.no_install_from_api?

  Homebrew::API.formula_names
end

#formula_renamesHash{String => String}

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:



1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
# File 'tap.rb', line 1383

def formula_renames
  @formula_renames ||= T.let(
    if Homebrew::EnvConfig.no_install_from_api?
      ensure_installed!
      super
    else
      Homebrew::API.formula_renames
    end,
    T.nilable(T::Hash[String, String]),
  )
end

#install(quiet: false, clone_target: nil, custom_remote: false, verify: false, force: 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.

This method returns an undefined value.

CoreTap never allows shallow clones (on request from GitHub).

Parameters:

  • quiet (Boolean) (defaults to: false)
  • clone_target (Pathname, String, nil) (defaults to: nil)
  • custom_remote (Boolean) (defaults to: false)
  • verify (Boolean) (defaults to: false)
  • force (Boolean) (defaults to: false)

Raises:



1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
# File 'tap.rb', line 1316

def install(quiet: false, clone_target: nil,
            custom_remote: false, verify: false, force: false)
  remote = Homebrew::EnvConfig.core_git_remote # set by HOMEBREW_CORE_GIT_REMOTE
  requested_remote = clone_target || remote

  # The remote will changed again on `brew update` since remotes for homebrew/core are mismatched
  raise TapCoreRemoteMismatchError.new(name, remote, requested_remote) if requested_remote != remote

  if remote != default_remote
    $stderr.puts "HOMEBREW_CORE_GIT_REMOTE set: using #{remote} as the Homebrew/homebrew-core Git remote."
  end

  super(quiet:, clone_target: remote, custom_remote:, force:)
end

#linuxbrew_core?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.

Returns:

  • (Boolean)


1344
1345
1346
# File 'tap.rb', line 1344

def linuxbrew_core?
  remote_repository.to_s.end_with?("/linuxbrew-core") || remote_repository == "Linuxbrew/homebrew-core"
end

#new_formula_path(name) ⇒ Pathname

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:



1366
1367
1368
1369
1370
1371
1372
# File 'tap.rb', line 1366

def new_formula_path(name)
  formula_subdir = new_formula_subdirectory(name)

  return super unless (formula_dir/formula_subdir).directory?

  formula_dir/formula_subdir/"#{name.downcase}.rb"
end

#new_formula_subdirectory(name) ⇒ String

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:



1357
1358
1359
1360
1361
1362
1363
# File 'tap.rb', line 1357

def new_formula_subdirectory(name)
  if name.start_with?("lib")
    "lib"
  else
    name[0].to_s
  end
end

#remoteString?

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:



1305
1306
1307
1308
1309
# File 'tap.rb', line 1305

def remote
  return super if Homebrew::EnvConfig.no_install_from_api?

  Homebrew::EnvConfig.core_git_remote
end

#style_exceptionsHash{Symbol => 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.

Returns:



1425
1426
1427
1428
1429
1430
# File 'tap.rb', line 1425

def style_exceptions
  @style_exceptions ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(T::Hash[Symbol, T.untyped]))
end

#synced_versions_formulaeArray<Array<String>>

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:



1433
1434
1435
1436
1437
1438
# File 'tap.rb', line 1433

def synced_versions_formulae
  @synced_versions_formulae ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(T::Array[T::Array[String]]))
end

#tap_migrationsHash{String => 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.

Returns:



1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
# File 'tap.rb', line 1396

def tap_migrations
  @tap_migrations ||= T.let(
    if Homebrew::EnvConfig.no_install_from_api?
      ensure_installed!
      super
    else
      Homebrew::API.formula_tap_migrations
    end,
    T.nilable(T::Hash[String, T.untyped]),
  )
end

#uninstall(manual: 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.

This method returns an undefined value.

Parameters:

  • manual (Boolean) (defaults to: false)


1332
1333
1334
1335
1336
# File 'tap.rb', line 1332

def uninstall(manual: false)
  raise "Tap#uninstall is not available for CoreTap" if Homebrew::EnvConfig.no_install_from_api?

  super
end