diff --git a/data/core/init.lua b/data/core/init.lua index fe1f52c0..35500204 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -625,19 +625,22 @@ function core.load_plugins() local plugin_dir = root_dir .. "/plugins" local files = system.list_dir(plugin_dir) for _, filename in ipairs(files or {}) do - local basename = filename:match("(.-)%.lua$") or filename - local version_match = check_plugin_version(plugin_dir .. '/' .. filename) - if not version_match then - core.log_quiet("Version mismatch for plugin %q from %s", basename, plugin_dir) - local ls = refused_list[root_dir == USERDIR and 'userdir' or 'datadir'].plugins - ls[#ls + 1] = filename - end - if version_match and config[basename] ~= false then - local modname = "plugins." .. basename - local ok = core.try(require, modname) - if ok then core.log_quiet("Loaded plugin %q from %s", basename, plugin_dir) end - if not ok then - no_errors = false + local info = system.get_file_info(filename) + if info ~= nil and info.type == "file" then + local basename = filename:match("(.-)%.lua$") or filename + local version_match = check_plugin_version(plugin_dir .. '/' .. filename) + if not version_match then + core.log_quiet("Version mismatch for plugin %q from %s", basename, plugin_dir) + local ls = refused_list[root_dir == USERDIR and 'userdir' or 'datadir'].plugins + ls[#ls + 1] = filename + end + if version_match and config[basename] ~= false then + local modname = "plugins." .. basename + local ok = core.try(require, modname) + if ok then core.log_quiet("Loaded plugin %q from %s", basename, plugin_dir) end + if not ok then + no_errors = false + end end end end