plugin
Манифест, пути плагина и его выгрузка.plugin — одновременно вызов манифеста и пространство имён.
plugin{}
Объявляет метаданные и требования плагина.Поля
Пример
manifest.lua — это единственная обязанность этого
файла. Движок грузит manifest.lua раньше init.lua и требует, чтобы plugin{}
там прозвучал: если нет, плагин не запускается и init.lua не выполняется вовсе.
См. структуру плагина.
requires проверяется при загрузке: отсутствующий модуль останавливает плагин на
первой строке manifest.lua с указанием, чего не хватает.
api_version меняется только на ломающем изменении API — новый натив
(например http_server) может появиться в сборке, которая всё ещё говорит
api_version = 1. Для этого min_engine_version: точнее, чем api_version, и не
требует ждать следующего v2. max_engine_version — обратный случай, «плагин
проверен только по эту сборку», отказ загрузки на более новой. Сравниваются
как X.Y.Z, отсутствующая часть читается как 0. Текущая сборка — sv.version.
Лёгкая опечатка:
plugin = { ... } вместо plugin { ... }
присваивает таблицу и затирает пространство имён — движок решит, что
манифест ничего не объявил, и остановит загрузку с ошибкой в консоли.plugin.id
Имя папки плагина.Возвращает
Это и есть идентичность плагина — на неё ключуется реестр
export.
plugin.dir
Абсолютный путь к папке плагина.Возвращает
plugin.data_dir
Каталог плагина под данные, переживающий обновление.Возвращает
Создаётся при первом вызове. Туда же кладут файлы
store и db.open.
plugin.on_unload
Регистрирует обработчик выгрузки этого плагина.Аргументы
Возвращает
Ничего.Пример
lua_reload, и при lua_reload <plugin>. Обработчики
выполняются в обратном порядке регистрации — плагин разбирает себя так же, как
собирал.
Выполняются до того, как снимаются хендлеры, таймеры и базы плагина, поэтому
внутри всё ещё работает.