diff --git a/.gitignore b/.gitignore index 273c7b58..b0069d19 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ local.properties PUBSYNC_IN_PROGRESS _fulltest_buildfile_* ballistica_files/ +src/assets/sphinx/apidoc **/.#* # Environment files diff --git a/tools/batools/docs.py b/tools/batools/docs.py index 0c9c05e1..4f89dccd 100755 --- a/tools/batools/docs.py +++ b/tools/batools/docs.py @@ -212,3 +212,47 @@ def _run_pdoc() -> None: duration = time.monotonic() - starttime print(f'{Clr.GRN}Generated pdoc documentation in {duration:.1f}s.{Clr.RST}') + +def generate_sphinxdoc(): + _run_sphinx() + +def _run_sphinx() -> None: + """Do the actual docs generation with sphinx.""" + import time + import shutil + + from batools.version import get_current_version + version, buildnum = get_current_version() + + sphinx_src = 'src/assets/sphinx/' + build_dir = 'build/docs_sphinx_html' + sphinx_apidoc_out = sphinx_src + 'apidoc/' + template_dir = Path(sphinx_src+'template/') + assets_dir = 'src/assets/ba_data/python/' + dummy_modules_dir = 'build/dummymodules/' + os.makedirs(build_dir, exist_ok=True) + os.makedirs(sphinx_apidoc_out, exist_ok=True) + assert template_dir.is_dir() + + shutil.copytree(template_dir, sphinx_apidoc_out, dirs_exist_ok= True) + + os.environ['BALLISTICA_ROOT'] = os.getcwd() + + starttime = time.monotonic() + + subprocess.run(['sphinx-apidoc', + '-f', # Force overwriting of any existing generated files. + '-H', 'Bombsquad', # project + '-A','Efroemling', # author + '-V', str(version), # version + '-R', str(buildnum), # release + # '--templatedir', template_dir, + '-o', sphinx_apidoc_out, + assets_dir, ], + # dummy_modules_dir], # dummy modules doesn't get included like this + check=True) + + + subprocess.run( ['make', 'html'], check = True, cwd= sphinx_apidoc_out) + duration = time.monotonic() - starttime + print(f'Generated sphinx documentation in {duration:.1f}s.') diff --git a/tools/batools/pcommands.py b/tools/batools/pcommands.py index 8fa3e42e..99fc72f1 100644 --- a/tools/batools/pcommands.py +++ b/tools/batools/pcommands.py @@ -561,6 +561,9 @@ def gen_docs_pdoc() -> None: print(f'{Clr.BLU}Generating documentation...{Clr.RST}') batools.docs.generate_pdoc(projroot=str(pcommand.PROJROOT)) +def gen_docs_sphinx(): + import batools.docs + batools.docs.generate_sphinxdoc() def list_pip_reqs() -> None: """List Python Pip packages needed for this project.""" @@ -581,12 +584,12 @@ def install_pip_reqs() -> None: pcommand.disallow_in_batch() # Make sure pip itself is up to date first. - subprocess.run( - [PYTHON_BIN, '-m', 'pip', 'install', '--upgrade', 'pip'], check=True - ) +# subprocess.run( +# [PYTHON_BIN, '-m', 'pip', 'install', '--upgrade', 'pip'], check=True +# ) subprocess.run( - [PYTHON_BIN, '-m', 'pip', 'install', '--upgrade'] + get_pip_reqs(), + [PYTHON_BIN, '-m', 'pip', 'install', '--upgrade', '--break-system-packages'] + get_pip_reqs(), check=True, ) print(f'{Clr.GRN}All pip requirements installed!{Clr.RST}') diff --git a/tools/pcommand b/tools/pcommand index 5cd05df5..0a6eef2a 100755 --- a/tools/pcommand +++ b/tools/pcommand @@ -99,6 +99,7 @@ from batools.pcommands import ( get_modern_make, warm_start_asset_build, gen_docs_pdoc, + gen_docs_sphinx, list_pip_reqs, install_pip_reqs, checkenv,