File: //usr/local/bin/dhwp/env/lib/python3.10/site-packages/cement/cli/main.py
from __future__ import annotations
from typing import Optional, List
from cement import App, CaughtSignal # noqa: E402
from .controllers.base import Base # noqa: E402
from cement.core.exc import FrameworkError
class CementApp(App):
class Meta:
label = 'cement'
controller = 'base'
template_module = 'cement.cli.templates'
template_handler = 'jinja2'
config_handler = 'yaml'
config_file_suffix = '.yml'
extensions = [
'generate',
'yaml',
'jinja2',
]
handlers = [
Base,
]
class CementTestApp(CementApp):
class Meta:
argv: List[str] = []
config_files: List[str] = []
exit_on_close = False
def main(argv: Optional[List[str]] = None) -> None:
# Issue #679: https://github.com/datafolklabs/cement/issues/679
try:
import yaml, jinja2 # type: ignore # noqa: F401 E401
except ModuleNotFoundError: # pragma: nocover
raise FrameworkError('Cement CLI Dependencies are missing! Install cement[cli] extras ' +
'package to resolve -> pip install cement[cli]')
with CementApp() as app:
try:
app.run()
except AssertionError as e: # pragma: nocover
print(f'AssertionError > {e.args[0]}') # pragma: nocover
app.exit_code = 1 # pragma: nocover
except CaughtSignal as e: # pragma: nocover
print(f'\n{e}') # pragma: nocover
app.exit_code = 0 # pragma: nocover
if __name__ == '__main__':
main() # pragma: nocover