scripts/gestion/trigger/host.py
2014-08-01 23:22:19 +02:00

59 lines
1.4 KiB
Python

#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
#
# Basic trigger host, will be imported from any other
# Contains a TriggerFactory, which records the host functions
# decorated with @record.
# Contains a trigger which calls good functions from factory.
#
# Author : Pierre-Elliott Bécue <becue@crans.org>
# License : GPLv3
# Date : 28/04/2014
import collections
class TriggerFactory(object):
"""Factory containing which function is part of the trigger set
"""
_services = {}
_parsers = collections.defaultdict(list)
@classmethod
def register_service(cls, key, value):
cls._services[key] = value
@classmethod
def get_service(cls, key):
return cls._services.get(key, None)
@classmethod
def get_services(cls):
return cls._services.values()
@classmethod
def register_parser(cls, keys, parser):
for key in keys:
cls._parsers[key].append(parser)
@classmethod
def get_parser(cls, keyword):
return cls._parsers[keyword]
def record_service(func):
"""Records in the triggerfactory the function
The function provided are services to regen
"""
TriggerFactory.register_service(func.func_name, func)
def trigger_service(what):
return TriggerFactory.get_service(what)
def record_parser(*args):
def find_parser(func):
TriggerFactory.register_parser(args, func)
return func
return find_parser