local M = {} ---@return inbox.Indexer function M.get_indexer() if not M.indexer then local config = require("inbox.config") M.setup(config.indexer_config) end return M.indexer end ---@param opts inbox.Indexer.Config function M.setup(opts) if not opts then vim.notify("No indexer set", vim.log.levels.ERROR) return nil end if type(opts) == "string" then opts = { name = opts } end local ok, indexer = pcall(require, string.format("inbox.indexers.%s", opts.name)) if not ok then vim.notify(string.format("Indexer not found: '%s'", indexer), vim.log.levels.ERROR) end -- TODO: Validate indexer spec if indexer.available() then M.indexer = indexer M.indexer.setup(opts) else vim.notify(string.format("Indexer not available: '%s'", indexer), vim.log.levels.ERROR) end end return M