You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

88 lines
2.0 KiB

local M = require('module'):new()
local package_manager = require('plugin/vim_plug')
local file_exists = require('lib/file_exists')
local has_command = require('lib/has_command')
function M:initialize()
self.path = self.config.path or "~/.config/nvim/plugins/"
self.auto_install = self.config.auto_install or true
self.auto_cleanup = self.config.auto_cleanup or true
self.plugins = {}
self.keymap = nukevim.modules:get('keymap')
end
function M:register()
for idx, plugin in pairs(self.config.plugins) do
if (plugin.enable == nil or plugin.enable == true) then
self:add(plugin.name, plugin.config or nil, plugin.keys or nil, plugin.requires or nil)
end
end
end
function M:commit()
package_manager:initialize(self.path)
package_manager:enter()
for idx, plugin in pairs(self.plugins) do
package_manager:add(plugin.name, plugin.config or nil)
end
package_manager:exit()
-- Check if any plugins have lua modules, if so register them
for idx, plugin in pairs(self.plugins) do
if (file_exists(vim.env.HOME .. '/.config/nvim/lua/plugin/' .. plugin.name:gsub('%.', '-') .. '.lua')) then
local plugin_module = require('plugin/' .. plugin.name:gsub('%.', '-')):new()
plugin_module:configure(plugin.config)
nukevim.modules:addInstance(plugin.name, plugin_module)
end
end
end
function M:boot()
if (self.auto_install and package_manager:hasPendingPackages()) then
package_manager:install()
end
if (self.auto_cleanup) then
package_manager:cleanup()
end
end
function M:add(name, config, keys, requires)
if (requires ~= nil) then
for i=1,#requires do
if (not has_command(requires[i])) then
return
end
end
end
table.insert(self.plugins, { name = name, config = config })
if (keys ~= nil) then
for idx, key in ipairs(keys) do
self.keymap:add(key)
end
end
end
function M:has(name)
for idx, plugin in pairs(self.plugins) do
if (plugin.name == name) then
return true
end
end
return false
end
function M:install()
package_manager:install()
end
function M:cleanup()
package_manager:cleanup()
end
return M