aboutsummaryrefslogtreecommitdiff
path: root/tools/cru-py/cru/service/_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cru-py/cru/service/_base.py')
-rw-r--r--tools/cru-py/cru/service/_base.py23
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