blob: d9b18ea4376aa7d2a076796a08e7cb48b3a2e228 [file] [edit]
from abc import ABCMeta, abstractmethod
from typing import Optional
import lldb
class ScriptedCommand(metaclass=ABCMeta):
"""
The base class for a scripted (raw) command.
A raw command receives the unparsed argument string exactly as the user
typed it, and is responsible for any parsing it needs. For a command
with a table-driven option/argument parser, see `ParsedCommand` instead.
Register it with `command script add -c <ClassName> ...`.
Most of the base class methods are `@abstractmethod` that need to be
overwritten by the inheriting class.
"""
def __init__(self, debugger: lldb.SBDebugger):
"""Construct a scripted command.
Args:
debugger (lldb.SBDebugger): The debugger this command is being
added to.
"""
pass
@abstractmethod
def __call__(
self,
debugger: lldb.SBDebugger,
args: str,
exe_ctx: lldb.SBExecutionContext,
result: lldb.SBCommandReturnObject,
) -> None:
"""Execute the command.
Args:
debugger (lldb.SBDebugger): The debugger the command runs
against.
args (str): The raw, unparsed argument string.
exe_ctx (lldb.SBExecutionContext): The execution context.
result (lldb.SBCommandReturnObject): Write command output/errors
here.
"""
pass
def get_short_help(self) -> Optional[str]:
"""A one-line description shown by `help`.
Returns:
str: The short help string.
"""
pass
def get_long_help(self) -> Optional[str]:
"""The full help text shown by `help <command>`.
Returns:
str: The long help string.
"""
pass
def get_flags(self) -> int:
"""Command flags (a bitmask of `lldb.eCommandRequires*`/
`lldb.eCommandProcessMustBe*` etc.) controlling when this command is
available.
Returns:
int: The flags bitmask. Defaults to 0 (no restrictions).
"""
return 0
def get_repeat_command(self, command: str) -> Optional[str]:
"""Customize what runs when the user presses Enter to repeat this
command.
Args:
command (str): The command line that was run.
Returns:
str: The command line to run on repeat. Defaults to `None`,
meaning repeat the original command unmodified.
"""
pass