A Total Overhaul on the Lunaix's Virtual Memory Model (#26)
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / commands.py
index 698ea85d80d5b7bc39809b89746f147349f3d615..ec3fe82f37a993bc3eee31bd3f72a8bc553693f4 100644 (file)
@@ -1,8 +1,29 @@
-from .region_dump import MemoryRegionDump
-from .proc_table_dump import ProcessDump, ProcessTableDump
+from gdb import Command, COMMAND_USER
 
 
+import argparse
+import shlex
 
 
-def load_commands():
-    MemoryRegionDump()
-    ProcessTableDump()
-    ProcessDump()
\ No newline at end of file
+class LunadbgCommand(Command):
+    def __init__(self, name: str) -> None:
+        super().__init__(name, COMMAND_USER)
+        self._parser = argparse.ArgumentParser()
+
+    def _parse_args(self, gdb_argstr: str):
+        try:
+            args, argv = self._parser.parse_known_args(shlex.split(gdb_argstr), None)
+            if argv:
+                print('unrecognized arguments: %s'%(' '.join(argv)))
+            else:
+                return args
+        except SystemExit:
+            pass 
+        return None
+    
+    def invoke(self, argument: str, from_tty: bool) -> None:
+        parsed = self._parse_args(argument)
+        if not parsed:
+            return
+        self.on_execute(parsed, argument, from_tty)
+    
+    def on_execute(self, parsed, gdb_args, from_tty):
+        raise NotImplementedError()
\ No newline at end of file