Files
qmk_firmware/lib/python/qmk/docs.py
Ryan 273d8d6a1a
Some checks failed
Update API Data / api_data (push) Has been cancelled
CI Build Major Branch / Determine concurrency (push) Has been cancelled
CLI CI / test (push) Has been cancelled
Update feature branches after develop merge / feature_branch_update (riot) (push) Has been cancelled
Update feature branches after develop merge / feature_branch_update (xap) (push) Has been cancelled
Lint Format / lint (push) Has been cancelled
Regenerate Files / regen (push) Has been cancelled
Unit Tests / test (push) Has been cancelled
CI Build Major Branch / Compile keymap default (push) Has been cancelled
CI Build Major Branch / Consolidation (push) Has been cancelled
qmk docs: restore --port and --browser arguments (#24623)
* `qmk docs`: restore `--port` and `--browser` arguments

* Make docs command args always a list
2025-02-01 21:19:30 +11:00

62 lines
1.9 KiB
Python

"""Handlers for the QMK documentation generator (docusaurus).
"""
import shutil
from pathlib import Path
from subprocess import DEVNULL
from os import chdir, environ, makedirs, pathsep
from milc import cli
from qmk.constants import QMK_FIRMWARE
DOCS_PATH = QMK_FIRMWARE / 'docs'
BUILDDEFS_PATH = QMK_FIRMWARE / 'builddefs' / 'docsgen'
BUILD_PATH = QMK_FIRMWARE / '.build'
CACHE_PATH = BUILD_PATH / 'cache'
NODE_MODULES_PATH = BUILD_PATH / 'node_modules'
BUILD_DOCS_PATH = BUILD_PATH / 'docs'
DOXYGEN_PATH = BUILD_DOCS_PATH / 'static' / 'doxygen'
def run_docs_command(verb, cmd_args=None):
environ['PATH'] += pathsep + str(NODE_MODULES_PATH / '.bin')
args = {'capture_output': False, 'check': True}
docs_env = environ.copy()
if cli.config.general.verbose:
docs_env['DEBUG'] = 'vitepress:*,vite:*'
args['env'] = docs_env
arg_list = ['yarn', verb]
if cmd_args:
arg_list.extend(cmd_args)
chdir(BUILDDEFS_PATH)
cli.run(arg_list, **args)
def prepare_docs_build_area(is_production):
if is_production:
# Set up a symlink for docs to be inside builddefs -- vitepress can't handle source files in parent directories
try:
docs_link = Path(BUILDDEFS_PATH / 'docs')
if not docs_link.exists():
docs_link.symlink_to(DOCS_PATH)
except NotImplementedError:
cli.log.error('Symlinks are not supported on this platform.')
return False
if BUILD_DOCS_PATH.exists():
shutil.rmtree(BUILD_DOCS_PATH)
# When not verbose we want to hide all output
args = {'capture_output': False if cli.config.general.verbose else True, 'check': True, 'stdin': DEVNULL}
makedirs(DOXYGEN_PATH)
cli.log.info('Generating doxygen docs at %s', DOXYGEN_PATH)
cli.run(['doxygen', 'Doxyfile'], **args)
cli.log.info('Installing vitepress dependencies')
run_docs_command('install')
return True