1
0
Fork 0
mirror of synced 2024-06-15 13:51:08 -04:00
dotbot/dotbot/plugins/plugins.py
Andreas Schmidt e07ed9374a add plugins module to handle plugins in configuration file
Signed-off-by: Andreas Schmidt <mail@schmidt-andreas.de>
2018-12-08 13:57:55 +01:00

38 lines
1 KiB
Python

import os
import glob
import dotbot
from ..util import module
class Plugins(dotbot.Plugin):
'''
Plugins configuration
'''
_directive = 'plugins'
def can_handle(self, directive):
return directive == self._directive
def handle(self, directive, data):
if directive != self._directive:
raise ValueError('Plugins cannot handle directive %s' % directive)
return self._process_plugins(data)
def _process_plugins(self, plugins):
plugin_dirs = []
plugin_paths = []
for plugin in plugins:
if isinstance(plugin, dict):
plugin_dirs.append(plugin.get('dir', ''))
else:
plugin_paths.append(plugin)
for directory in plugin_dirs:
for plugin_path in glob.glob(os.path.join(directory, '*.py')):
plugin_paths.append(plugin_path)
for plugin in plugin_paths:
abspath = os.path.abspath(plugin)
module.load(abspath)
return True
# vim: ts=4 sw=4 et