############################################################################
# tools/pynuttx/gdbinit.py
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.  The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################

import sys
from os import path
from pathlib import Path

here = path.dirname(path.abspath(__file__))

nuttx_path = Path(__file__).resolve().parents[2]
libcxx_path = path.join(
    nuttx_path, "libs", "libxx", "libcxx", "libcxx", "utils", "gdb", "libcxx"
)

if __name__ == "__main__":
    if here not in sys.path:
        sys.path.insert(0, here)

    if path.exists(libcxx_path):
        sys.path.insert(0, libcxx_path)
        import gdb
        import printers

        printer = printers.LibcxxPrettyPrinter("libcxx")
        gdb.pretty_printers.append(printer)
        printers.register_libcxx_printer_loader()

    modules = ("gdbrpc", "nxelf", "nxgdb", "nxreg", "nxstub", "nxtrace")
    for key in list(sys.modules):
        if key.startswith(modules):
            del sys.modules[key]

    import nxgdb  # noqa: F401

    print("GDB Plugin Loaded Successfully")