mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
8023aa3d47
This also patches menuconfig.py to use the new class. For now it implements a version of _parse_help which removes Doxygen markers.
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
""" RIOT customization of Kconfig """
|
|
import argparse
|
|
import sys
|
|
|
|
from kconfiglib import Kconfig, KconfigError
|
|
|
|
|
|
class RiotKconfig(Kconfig):
|
|
""" RIOT adaption of Kconfig class """
|
|
def _parse_help(self, node):
|
|
""" Parses the help section of a node, removing Doxygen markers """
|
|
doxygen_markers = ["@ref ", "@see "]
|
|
|
|
# call default parsing
|
|
super(RiotKconfig, self)._parse_help(node)
|
|
|
|
# remove Doxygen markers
|
|
for marker in doxygen_markers:
|
|
node.help = node.help.replace(marker, "")
|
|
|
|
|
|
def standard_riot_kconfig(description=None):
|
|
"""
|
|
Argument parsing helper for tools that take a single optional Kconfig file
|
|
argument (default: Kconfig). Returns the RiotKconfig instance for the parsed
|
|
configuration. Uses argparse internally.
|
|
|
|
Exits with sys.exit() (which raises SystemExit) on errors.
|
|
|
|
description (default: None):
|
|
The 'description' passed to argparse.ArgumentParser().
|
|
argparse.RawDescriptionHelpFormatter is used, so formatting is preserved.
|
|
"""
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description=description)
|
|
|
|
parser.add_argument(
|
|
"kconfig",
|
|
metavar="KCONFIG",
|
|
default="Kconfig",
|
|
nargs="?",
|
|
help="Kconfig file (default: Kconfig)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# Suppress backtraces for expected exceptions
|
|
try:
|
|
return RiotKconfig(args.kconfig)
|
|
except (EnvironmentError, KconfigError) as e:
|
|
# Some long exception messages have extra newlines for better
|
|
# formatting when reported as an unhandled exception. Strip them here.
|
|
sys.exit(str(e).strip())
|