summaryrefslogtreecommitdiffstats
path: root/lua/inbox/indexers.lua
blob: 46bb2df0753253e23779cd0d9a6cf3cad8662942 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
local utils = require("inbox.utils")

local M = {}

---@return inbox.Indexer
function M.get_indexer()
	if not M.indexer then
		local config = require("inbox.config")
		M.setup(config)
	end

	return M.indexer
end

---@param opts inbox.Config
function M.setup(opts)
	if opts.indexer == nil then
		utils.error("No indexer provided")
		return
	end

	local is_ok, indexer = pcall(require, string.format("inbox.indexers.%s", opts.indexer))
	if not is_ok then
		utils.error("Indexer not found", { indexer = opts.indexer })
	elseif not indexer.available() then
		utils.error("Indexer not available", { indexer = opts.indexer })
	else
		-- TODO: Validate indexer spec

		M.indexer = indexer
		M.indexer.setup(opts.indexer_config)
	end
end

return M