This repository has been archived on 2023-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
ictmpl/ictmpl/ictmpl.py

44 lines
1.2 KiB
Python

import sys
from .config import Config
from .argparser import init_parser
from importlib import import_module
__all__ = ('Ictmpl',)
class Ictmpl:
config = None
def __init__(self, config:Config):
self.config = config
self.parser = init_parser(self)
self.params = {}
def getconf(self, name, default=''):
return getattr(self.config, name, default)
def run(self, **args):
args = self.parser.parse_args(**args)
try:
if len(sys.argv) == 1:
self.parser.print_help()
elif callable(args.func):
args.func(args, self)
elif isinstance(args.func, str):
module_name, fn_name = args.func.rsplit('.', 1)
prefix = self.getconf('METHODS_MODULE_PREFIX')
if prefix:
module_name = '%s.%s' % (prefix, module_name)
module = import_module(module_name)
func = getattr(module, fn_name)
if callable(func):
func(args, self)
except Exception as e:
print("%s :: %s" % (e.__class__.__name__, str(e)))
exit()