"""Add user-defined commands to MongoDB."""

import lldb


def __lldb_init_module(debugger, *_args):
    """Register custom commands."""
    debugger.HandleCommand(
        "command script add -f lldb_commands.PrintGlobalServiceContext mongodb-service-context")
    debugger.HandleCommand(
        "command script add -f lldb_commands.PrintGlobalServiceContext mongodb-dump-locks")
    debugger.HandleCommand("command alias mongodb-help help")


#######################
# Command Definitions #
#######################


def PrintGlobalServiceContext(debugger, *_args):  # pylint: disable=invalid-name
    """Provide the mongodb-service-context command.

    Emulates the same convenience command available in GDB
    integrations to print the globalServiceContext.
    """
    debugger.HandleCommand("print *globalServiceContext")


def MongoDBDumpLocks(debugger, *_args):  # pylint: disable=invalid-name
    """Dump locks in the mongod process."""
    debugger.HandleCommand("call mongo::getGlobalLockManager()->dump()")
