added jinja templates and code refactoring

This commit is contained in:
Loup-Garou911XD 2024-03-19 18:55:06 +05:30
parent 896aa9c663
commit 486d983797
5 changed files with 34 additions and 17 deletions

View File

@ -4,10 +4,12 @@
contain the root `toctree` directive. contain the root `toctree` directive.
see https://pradyunsg.me/furo/reference/ for formatting help see https://pradyunsg.me/furo/reference/ for formatting help
.. image:: https://camo.githubusercontent.com/25021344ceaa7def6fa6523f79115f7ffada8d26b4768bb9a0cf65fc33304f45/68747470733a2f2f66696c65732e62616c6c6973746963612e6e65742f62616c6c6973746963615f6d656469612f62616c6c6973746963615f6c6f676f5f68616c662e706e67 .. image:: {{data.ballistica_image_url}}
Welcome to ballistica-bombsquad's documentation! Welcome to ballistica-bombsquad's documentation!
================================================ ================================================
*Last updated for Ballistica* **{{data.version_no}}** *(build {{data.build_no}})*
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
:caption: Contents: :caption: Contents:

View File

@ -231,8 +231,8 @@ def _run_sphinx(
import time import time
import shutil import shutil
from batools.version import get_current_version from batools.version import get_current_version
from jinja2 import Environment, FileSystemLoader
version, buildnum = get_current_version() version, buildnum = get_current_version()
@ -242,15 +242,20 @@ def _run_sphinx(
'efro_tools': 'tools/', # for efro and bacommon package 'efro_tools': 'tools/', # for efro and bacommon package
} }
sphinx_src = 'src/assets/sphinx/' paths = {'sphinx_src' :'src/assets/sphinx/',
template_dir = Path(sphinx_src + 'template/') 'build_dir' : 'build/sphinx/',
assert template_dir.is_dir() 'sphinx_apidoc_out' : '.cache/sphinx/',
build_dir = 'build/sphinx/' }
os.makedirs(build_dir, exist_ok=True) paths.update({'template_dir' : paths['sphinx_src'] + 'template/',
sphinx_apidoc_out = '.cache/sphinx/' # might want to use .cache dir 'static_dir' : paths['sphinx_src'] + 'static/'})
os.makedirs(sphinx_apidoc_out, exist_ok=True)
assert Path(paths['template_dir']).is_dir()
os.makedirs(paths['build_dir'], exist_ok=True)
os.makedirs(paths['sphinx_apidoc_out'], exist_ok=True)
os.environ['BALLISTICA_ROOT'] = os.getcwd() # used in sphinx conf.py os.environ['BALLISTICA_ROOT'] = os.getcwd() # used in sphinx conf.py
os.environ['BA_RUNNING_WITH_DUMMY_MODULES'] = '1'
os.environ['SPHINX_SETTINGS'] = str( os.environ['SPHINX_SETTINGS'] = str(
{ {
'project_name': project_name, 'project_name': project_name,
@ -260,14 +265,24 @@ def _run_sphinx(
'buildnum': buildnum, 'buildnum': buildnum,
} }
) )
os.environ['BA_RUNNING_WITH_DUMMY_MODULES'] = '1'
shutil.copytree(template_dir, sphinx_apidoc_out, dirs_exist_ok=True) file_loader = FileSystemLoader(paths['template_dir'])
env = Environment(loader=file_loader)
index_template = env.get_template('index.rst_t')
# maybe make it automatically render all files in templates dir in future
with open(paths['sphinx_apidoc_out']+'index.rst', 'w') as index_rst:
data = {'ballistica_image_url' : 'https://camo.githubusercontent.com/25021344ceaa7def6fa6523f79115f7ffada8d26b4768bb9a0cf65fc33304f45/68747470733a2f2f66696c65732e62616c6c6973746963612e6e65742f62616c6c6973746963615f6d656469612f62616c6c6973746963615f6c6f676f5f68616c662e706e67',
'version_no' : version,
'build_no' : str(buildnum)}
index_rst.write(index_template.render(data=data))
shutil.copytree(paths['sphinx_src']+'static/', paths['sphinx_apidoc_out'], dirs_exist_ok=True)
starttime = time.monotonic() starttime = time.monotonic()
apidoc_cmd = [ apidoc_cmd = [
'sphinx-apidoc', 'sphinx-apidoc',
'-f', # Force overwriting of any existing generated files. # '-f', # Force overwriting of any existing generated files.
'-H', '-H',
project_name, project_name,
'-A', '-A',
@ -278,7 +293,7 @@ def _run_sphinx(
str(buildnum), # release str(buildnum), # release
# '--templatedir', template_dir, # '--templatedir', template_dir,
'-o', '-o',
sphinx_apidoc_out, paths['sphinx_apidoc_out'],
] ]
if generate_dummymodules_doc: if generate_dummymodules_doc:
subprocess.run( subprocess.run(
@ -289,10 +304,10 @@ def _run_sphinx(
subprocess.run(apidoc_cmd + [assets_dirs['efro_tools']], check=True) subprocess.run(apidoc_cmd + [assets_dirs['efro_tools']], check=True)
subprocess.run(apidoc_cmd + [assets_dirs['ba_data']], check=True) subprocess.run(apidoc_cmd + [assets_dirs['ba_data']], check=True)
subprocess.run(['make', 'html'], check=True, cwd=sphinx_apidoc_out) subprocess.run(['make', 'html'], check=True, cwd=paths['sphinx_apidoc_out'])
shutil.copytree( shutil.copytree( # copying html builds from sphinx_apidoc_out to the final build_dir
sphinx_apidoc_out + '_build/html/', build_dir, dirs_exist_ok=True paths['sphinx_apidoc_out'] + '_build/html/', paths['build_dir'], dirs_exist_ok=True
) )
# shutil.rmtree(temp_modules_dir)
duration = time.monotonic() - starttime duration = time.monotonic() - starttime
print(f'Generated sphinx documentation in {duration:.1f}s.') print(f'Generated sphinx documentation in {duration:.1f}s.')