diff options
Diffstat (limited to 'tools/cru-py/cru/service/_base.py')
| -rw-r--r-- | tools/cru-py/cru/service/_base.py | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/tools/cru-py/cru/service/_base.py b/tools/cru-py/cru/service/_base.py new file mode 100644 index 0000000..707fb66 --- /dev/null +++ b/tools/cru-py/cru/service/_base.py @@ -0,0 +1,23 @@ +from argparse import ArgumentParser, Namespace +from typing import Protocol +from cru.app import ApplicationPath, CruApplication + + +class AppFunction(Protocol): +    @property +    def name(self) -> str: ... + +    def add_arg_parser(self, arg_parser: ArgumentParser) -> None: ... + +    def run_command(self, args: Namespace) -> None: ... + + +class AppBase(CruApplication): +    def __init__(self, name: str, app_dir: str): +        super().__init__(name) +        self._app_dir = app_dir +        self._template_dir = ApplicationPath(app_dir, "templates", True) + +    @property +    def app_dir(self) -> str: +        return self._app_dir | 
