def init_handlers(skp, conf): u''' ハンドラを登録する ''' from pekipeki import plugins, utils for mod in utils.list_package_modules(plugins): if not hasattr(mod, 'init_skype') and not hasattr(mod, 'init_handler'): sys.stderr.write('skip {0}\n'.format(mod.__name__)) continue sec = conf.get_section(utils.get_name(mod)) try: if hasattr(mod, 'init_skype'): mod.init_skype(skp, sec) elif hasattr(mod, 'init_handler'): mod.init_handler(skp, sec) print 'register handler plugin:', mod.__name__ except KeyboardInterrupt: raise except: import traceback traceback.print_exc()
def init(conf): from . import skype, slack from pekipeki import utils proxy = ServiceProxy() for service in [slack, skype]: name = utils.get_name(service) s = service.init(conf.get_section(name)) if s: proxy.add_service(s) print 'initialized service:', name return proxy
def init_config(): u''' コンフィグのセクション情報を追加する ''' from . import config, utils conf = config.ConfigSetting() targets = itertools.chain(load_services(), load_plugins()) for mod in targets: def conf_addr(keys, defaults): conf.add_section(utils.get_name(mod), keys, defaults) if hasattr(mod, 'init_config'): mod.init_config(conf_addr) if not conf.has_section(utils.get_name(mod)): conf_addr([], {}) return conf
def conf_addr(keys, defaults): conf.add_section(utils.get_name(mod), keys, defaults)