Squashed 'third_party/pico-sdk/' content from commit 2062372d2
Change-Id: Ic20f199d3ed0ea8d3a6a1bbf513f875ec7500cc6
git-subtree-dir: third_party/pico-sdk
git-subtree-split: 2062372d203b372849d573f252cf7c6dc2800c0a
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/tools/check_doxygen_groups.py b/tools/check_doxygen_groups.py
new file mode 100755
index 0000000..bbcd9f5
--- /dev/null
+++ b/tools/check_doxygen_groups.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#
+# Little script to check that every \ingroup has a matching \defgroup
+#
+# Usage:
+#
+# Run from the root of the tree to check
+
+
+import subprocess
+import re
+import sys
+import os
+
+groups = {}
+any_errors = False
+
+res = subprocess.run(['git', 'grep', '\\defgroup'], check=True, stdout=subprocess.PIPE)
+for line in res.stdout.decode('utf8').split('\n'):
+ m = re.match(r'^(\S+):.*\\defgroup\s+(\w+)', line)
+ if m:
+ filename = m.group(1)
+ group = m.group(2)
+ if os.path.basename(filename) in ('check_doxygen_groups.py', 'index.h'):
+ continue
+ if group in groups:
+ any_errors = True
+ print("{} uses \\defgroup {} but so does {}".format(groups[group], group, filename))
+ else:
+ groups[group] = filename
+
+res = subprocess.run(['git', 'grep', '\\ingroup'], check=True, stdout=subprocess.PIPE)
+for line in res.stdout.decode('utf8').split('\n'):
+ m = re.match(r'^(\S+):.*\\ingroup\s+(\w+)', line)
+ if m:
+ filename = m.group(1)
+ group = m.group(2)
+ if os.path.basename(filename) in ('check_doxygen_groups.py', 'index.h'):
+ continue
+ if group not in groups:
+ any_errors = True
+ print("{} uses \\ingroup {} which was never defined".format(filename, group))
+
+sys.exit(any_errors)