HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/local/bin/dhwp/dhwp/main.py
from cement import App, TestApp, init_defaults
from cement.core.exc import CaughtSignal
from .core.exc import DhWpError
from .controllers.base import Base
from .controllers.stage import Stage
from .controllers.install import Install
from .controllers.metrics import Metrics
from .controllers.test import Test

# configuration defaults
CONFIG = init_defaults('dhwp')
CONFIG['dhwp']['foo'] = 'bar'


class DhWp(App):
    """DH WP primary application."""

    class Meta:
        label = 'dhwp'

        # configuration defaults
        config_defaults = CONFIG

        # call sys.exit() on close
        close_on_exit = True

        # load additional framework extensions
        extensions = [
            'yaml',
            'colorlog',
            'jinja2',
        ]

        # configuration handler
        config_handler = 'yaml'

        # configuration file suffix
        config_file_suffix = '.yml'

        # set the log handler
        log_handler = 'colorlog'

        # set the output handler
        output_handler = 'jinja2'

        # register handlers
        handlers = [
            Base,
            Stage,
            Test,
            Install,
            Metrics,
        ]


class DhWpTest(TestApp, DhWp):
    """A sub-class of DhWp that is better suited for testing."""

    class Meta:
        label = 'dhwp'


def main():
    with DhWp() as app:
        try:
            app.run()

        except AssertionError as e:
            print('AssertionError > %s' % e.args[0])
            app.exit_code = 1

            if app.debug is True:
                import traceback
                traceback.print_exc()

        except DhWpError as e:
            print('DhWpError > %s' % e.args[0])
            app.exit_code = 1

            if app.debug is True:
                import traceback
                traceback.print_exc()

        except CaughtSignal as e:
            # Default Cement signals are SIGINT and SIGTERM, exit 0 (non-error)
            print('\n%s' % e)
            app.exit_code = 0


if __name__ == '__main__':
    main()