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_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.



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

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:



1387
1388
1389
1390
1391
1392
# File 'tap.rb', line 1387

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:



1461
1462
1463
# File 'tap.rb', line 1461

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:



1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
# File 'tap.rb', line 1466

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:



1429
1430
1431
1432
1433
1434
# File 'tap.rb', line 1429

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:



1421
1422
1423
1424
1425
1426
# File 'tap.rb', line 1421

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)


1351
1352
1353
# File 'tap.rb', line 1351

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.



1310
1311
1312
1313
1314
# File 'tap.rb', line 1310

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:



1361
1362
1363
1364
1365
1366
# File 'tap.rb', line 1361

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:



1478
1479
1480
1481
1482
# File 'tap.rb', line 1478

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:



1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
# File 'tap.rb', line 1492

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:



1485
1486
1487
1488
1489
# File 'tap.rb', line 1485

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:



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

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 (nil, Pathname, String) (defaults to: nil)
  • custom_remote (Boolean) (defaults to: false)
  • verify (Boolean) (defaults to: false)
  • force (Boolean) (defaults to: false)

Raises:



1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
# File 'tap.rb', line 1328

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)


1356
1357
1358
# File 'tap.rb', line 1356

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:



1378
1379
1380
1381
1382
1383
1384
# File 'tap.rb', line 1378

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:



1369
1370
1371
1372
1373
1374
1375
# File 'tap.rb', line 1369

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

#pypi_formula_mappingsHash{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:



1445
1446
1447
1448
1449
1450
# File 'tap.rb', line 1445

def pypi_formula_mappings
  @pypi_formula_mappings ||= T.let(begin
    ensure_installed!
    super
  end, T.nilable(T::Hash[String, T.untyped]))
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:



1317
1318
1319
1320
1321
# File 'tap.rb', line 1317

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:



1437
1438
1439
1440
1441
1442
# File 'tap.rb', line 1437

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:



1453
1454
1455
1456
1457
1458
# File 'tap.rb', line 1453

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:



1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
# File 'tap.rb', line 1408

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)


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

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

  super
end