2
from flexget.plugin import *
4
log = logging.getLogger('include')
7
class PluginInclude(object):
9
Include configuration from another yaml file.
15
File content must be valid for a feed configuration
19
from flexget import validator
20
root = validator.factory()
21
root.accept('text') # TODO: file
22
bundle = root.accept('list')
26
def get_config(self, feed):
27
config = feed.config.get('include', None)
28
#if only a single path is passed turn it into a 1 element list
29
if isinstance(config, basestring):
34
def on_process_start(self, feed):
35
if not 'include' in feed.config:
41
files = self.get_config(feed)
44
name = os.path.expanduser(name)
45
if not os.path.isabs(name):
46
name = os.path.join(feed.manager.config_base, name)
47
include = yaml.load(file(name))
48
log.debug('Merging %s into feed %s' % (name, feed.name))
50
from flexget.utils.tools import MergeException, merge_dict_from_to
52
merge_dict_from_to(include, feed.config)
53
except MergeException:
54
raise PluginError('Failed to merge include file to feed %s, incompatible datatypes' % (feed.name))
56
register_plugin(PluginInclude, 'include', builtin=True)