homepage/generate.py
2025-07-09 14:10:52 +02:00

47 lines
1.7 KiB
Python

import os
import yaml
from datetime import datetime
from jinja2 import Environment, FileSystemLoader
if __name__ == '__main__':
with open('data.yaml', 'r') as file:
profile_data = yaml.safe_load(file)
env = Environment(loader=FileSystemLoader('templates'))
current_year = datetime.now().year
os.makedirs('dist', exist_ok=True)
os.makedirs('dist/publications', exist_ok=True)
os.makedirs('dist/projects', exist_ok=True)
os.makedirs('dist/presentations', exist_ok=True)
os.makedirs('dist/teaching', exist_ok=True)
def render_template(template_name, output_path, **kwargs):
template = env.get_template(template_name)
html = template.render(year=current_year, **kwargs)
with open(output_path, 'w') as file:
file.write(html)
print(f'Generated {output_path}')
# Always generate the main index page
render_template('index.html', 'dist/index.html', data=profile_data, is_home_page=True)
# Generate individual section pages only if they're in the sections list
sections = profile_data.get('sections', [])
if 'publications' in sections:
render_template('publications.html', 'dist/publications/index.html', data=profile_data, is_home_page=False)
if 'projects' in sections:
render_template('projects.html', 'dist/projects/index.html', data=profile_data, is_home_page=False)
if 'presentations' in sections:
render_template('presentations.html', 'dist/presentations/index.html', data=profile_data, is_home_page=False)
if 'teaching' in sections:
render_template('teaching.html', 'dist/teaching/index.html', data=profile_data, is_home_page=False)
print('Static site generation complete!')