nutools/lib/pyulib/src/uapps/tasks/itfctl.py
2015-08-20 07:58:17 +04:00

40 lines
1.1 KiB
Python

# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
__all__ = ('get_tasks_itf',)
from ulib.base.uio import _u, _s
from ulib.tasks import TasksCtl
from taskscli import TasksCLI
def get_cmd_name(args, required=False):
cmd_name = args[0:1] and args[0] or None
if required and cmd_name is None:
raise ValueError("You must specify a command")
return cmd_name, args[1:]
def get_httpd():
import httpd.server
return httpd.server.Server
def get_httpstore():
import httpstore.server
return httpstore.server.Server
DEFAULT_CLASS_GETTER = lambda: TasksCLI
CLASSES_GETTERS = {'httpd': get_httpd,
'httpstore': get_httpstore,
}
def get_tasks_cls(args):
cmd_name, args = get_cmd_name(args)
if cmd_name is None: cls_getter = None
else: cls_getter = CLASSES_GETTERS.get(cmd_name, DEFAULT_CLASS_GETTER)
if cls_getter is None: cls = None
else: cls = cls_getter()
return cls, cmd_name, args
def get_tasks_itf(args, ctl=None):
cls, cmd_name, args = get_tasks_cls(args)
if cls is None: itf = None
else: itf = cls(ctl=ctl)
return itf, cmd_name, args