This repository has been archived on 2021-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Mikubot/plugins/plugins.lua

121 lines
2.7 KiB
Lua
Raw Normal View History

2015-04-05 16:27:04 +02:00
do
2014-12-24 12:44:57 +01:00
-- Retruns the key (index) in the config.enabled_plugins table
2015-04-05 16:27:04 +02:00
local function plugin_enabled( name )
for k,v in pairs(_config.enabled_plugins) do
2014-12-24 12:44:57 +01:00
if name == v then
return k
end
end
-- If not found
return false
end
-- Returns true if file exists in plugins folder
2015-04-05 16:27:04 +02:00
local function plugin_exists( name )
2014-12-24 12:44:57 +01:00
for k,v in pairs(plugins_names()) do
if name..'.lua' == v then
2014-12-24 12:44:57 +01:00
return true
end
end
return false
end
2015-04-05 16:27:04 +02:00
local function list_plugins(only_enabled)
2014-12-24 01:38:41 +01:00
local text = ''
for k, v in pairs( plugins_names( )) do
-- ✔ enabled, ❌ disabled
local status = ''
-- Check if is enabled
for k2, v2 in pairs(_config.enabled_plugins) do
if v == v2..'.lua' then
2014-12-24 01:38:41 +01:00
status = ''
end
end
if not only_enabled or status == '' then
2015-01-06 14:51:38 +01:00
-- get the name
v = string.match (v, "(.*)%.lua")
text = text..v..' '..status..'\n'
2014-12-24 01:38:41 +01:00
end
end
return text
end
2015-04-06 23:26:13 +02:00
local function reload_plugins( )
plugins = {}
load_plugins()
return list_plugins(true)
end
local function enable_plugin( filename )
-- Check if plugin is enabled
if plugin_enabled(filename) then
return 'Plugin '..filename..' is enabled'
end
-- Checks if plugin exists
if plugin_exists(filename) then
-- Add to the config table
table.insert(_config.enabled_plugins, filename)
save_config()
-- Reload the plugins
return reload_plugins( )
else
return 'Plugin '..filename..' does not exists'
end
end
local function disable_plugin( name )
-- Check if plugins exists
if not plugin_exists(name) then
return 'Plugin '..name..' does not exists'
end
local k = plugin_enabled(name)
-- Check if plugin is enabled
if not k then
return 'Plugin '..name..' not enabled'
end
-- Disable and reload
table.remove(_config.enabled_plugins, k)
save_config( )
return reload_plugins(true)
end
2015-04-05 16:27:04 +02:00
local function run(msg, matches)
2014-12-24 01:38:41 +01:00
-- Show the available plugins
if matches[1] == '!plugins' then
return list_plugins()
end
-- Enable a plugin
if matches[1] == 'enable' then
print("enable: "..matches[2])
return enable_plugin(matches[2])
end
2014-12-24 12:44:57 +01:00
-- Disable a plugin
if matches[1] == 'disable' then
print("disable: "..matches[2])
return disable_plugin(matches[2])
end
-- Reload all the plugins!
if matches[1] == 'reload' then
return reload_plugins(true)
end
2014-12-24 01:38:41 +01:00
end
return {
2015-02-04 23:03:42 +01:00
description = "Plugin to manage other plugins. Enable, disable or reload.",
2015-01-23 23:49:51 +01:00
usage = {
"!plugins: list all plugins",
2015-02-04 23:03:42 +01:00
"!plugins enable [plugin]: enable plugin",
"!plugins disable [plugin]: disable plugin",
"!plugins reload: reloads all plugins" },
2014-12-24 01:38:41 +01:00
patterns = {
"^!plugins$",
2014-12-24 12:44:57 +01:00
"^!plugins? (enable) (.*)$",
"^!plugins? (disable) (.*)$",
2015-01-23 23:49:51 +01:00
"^!plugins? (reload)$" },
run = run,
privileged = true
2015-04-05 16:27:04 +02:00
}
end