--- /dev/null
+#!/bin/bash
+
+set -x
+
+if ! doxygen -v 2>&1 > /dev/null; then
+ echo "doxygen not found! Please install it!"
+ exit 1
+elif ! moxygen -V 2>&1 > /dev/null; then
+ echo -n "moxygen not found! Would you like to install it? [y/n] "
+ read ANSWER
+ case $ANSWER in
+ y|Y|yes|YES|Yes)
+ npm install -g moxygen
+ ;;
+ *)
+ exit 1
+ ;;
+ esac
+fi
+
+if [ ! -e Doxyfile ]; then
+ echo "Error: You must run this from the top-level qmk_firmware directory!"
+ exit 1
+fi
+
+# Generate the doxygen XML files
+rm -rf doxygen
+doxygen Doxyfile
+
+# Generate the moxygen Markdown files
+moxygen -a -g -o docs/internals_%s.md doxygen/xml