module Zeitwerk::Loader::EagerLoad

def eager_load_dir(path)

: (String | Pathname) -> void
def eager_load_dir(path)
  raise Zeitwerk::SetupRequired unless @setup
  abspath = File.expand_path(path)
  raise Zeitwerk::Error.new("#{abspath} is not a directory") unless dir?(abspath)
  cnames = []
  root_namespace = nil
  walk_up(abspath) do |dir|
    return if ignored_path?(dir)
    return if eager_load_exclusions.member?(dir)
    break if root_namespace = roots[dir]
    basename = File.basename(dir)
    return if hidden?(basename)
    unless collapse?(dir)
      cnames << inflector.camelize(basename, dir).to_sym
    end
  end
  raise Zeitwerk::Error.new("I do not manage #{abspath}") unless root_namespace
  return if @eager_loaded
  namespace = root_namespace
  cnames.reverse_each do |cname|
    # Can happen if there are no Ruby files. This is not an error condition,
    # the directory is actually managed. Could have Ruby files later.
    return unless namespace.const_defined?(cname, false)
    namespace = namespace.const_get(cname, false)
  end
  # A shortcircuiting test depends on the invocation of this method. Please
  # keep them in sync if refactored.
  actual_eager_load_dir(abspath, namespace)
end