Skip to content

main

dev_tool.main

log = logging.getLogger('dev_tool') module-attribute

cleanup

Source code in dev_tool/main.py
def cleanup() -> None:
    message = 'Exiting...'
    emit_normal(message)

    log.debug(message)

    logging.shutdown()

    CONTEXT.configuration.stop_watching()

    for thread in threading.enumerate():
        if thread is not threading.main_thread() and not thread.daemon:
            message = f'Waiting for thread {thread.name} to finish...'
            log.debug(message)

            thread.join(timeout=1)

main

Source code in dev_tool/main.py
def main() -> None:
    CONTEXT.configuration.validate_configuration()
    CONTEXT.configuration.initialize_watcher()
    CONTEXT.configuration.start_watching()

    is_containerized = (
        CONTEXT.configuration.pyproject
        .get_dev_tool_config()
        .get('containerized', False)
    )

    has_package_json = (BASE / 'package.json').exists()

    container = DependencyContainer()

    ServiceRegistry.register_all_services(container)
    CommandGroupRegistry.register_command_groups(container)

    container.resolve(HomeCommandGroup)
    container.resolve(DjangoCommandGroup)
    container.resolve(PythonCommandGroup)
    container.resolve(AICommandGroup)
    container.resolve(DatabaseCommandGroup)

    if is_containerized or has_package_json:
        container.resolve(JavaScriptCommandGroup)

    # SASS/SCSS support is a work in progress and currently disabled.
    # To enable, also uncomment the SassService registration in
    # service_registry.py and the SassCommandGroup registration in
    # command_registry.py.
    # if is_containerized or has_package_json:
    #     container.resolve(SassCommandGroup)

    container.resolve(TaskCommandGroup)
    container.resolve(OtherCommandGroup)

    if len(sys.argv) > 1:
        run_cli_application()
    else:
        run_tui_application()