diff --git a/requirements.txt b/requirements.txt index 619bc7a..0426205 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ flake8 rst_include pandas odfpy +Jinja2 # The Python API for the SkyWater PDK. -e scripts/python-skywater-pdk diff --git a/scripts/python-skywater-pdk/skywater_pdk/generate-resources-rst.py b/scripts/python-skywater-pdk/skywater_pdk/generate-resources-rst.py index dd421ab..9c1e7e8 100644 --- a/scripts/python-skywater-pdk/skywater_pdk/generate-resources-rst.py +++ b/scripts/python-skywater-pdk/skywater_pdk/generate-resources-rst.py @@ -22,6 +22,107 @@ import argparse from pathlib import Path import pandas as pd import errno +from jinja2 import Template + + +resources_rst_template = """Further Resources +================= + + +News Articles +------------- + +{% for _, row in news_articles.iterrows() -%} +* `{{ row["Article"] }} <{{ row["Link"] }}>`__ +{% endfor %} + +Conferences +----------- +{% for _, row in conferences.iterrows() -%} + +{% if row["Conference"] %} +{{ row["Conference"] }} +{{ '~' * row["Conference"]|length }} + +{% endif -%} +{% if row["Description"] -%} +{{ row["Description"] }} + +{% endif -%} +{% if row["Related link"] -%} +* `{{ row["Related link"] }} <{{ row["Related link"] }}>`__ +{% endif -%} +{% endfor %} + +Talk Series +----------- +{% for _, row in talk_series.iterrows() -%} +{% if row["Talk series"] %} +{{ row["Talk series"] }} +{{ '~' * row["Talk series"]|length }} +{% if row["Description"] %} +{{ row["Description"] }} +{% endif -%} +{% if row["Page"] %} +**Page**: {{ row["Page"] }} +{% endif -%} +{% endif %} +{{ row["Title"] }} +{{ '^' * row["Title"]|length }} + +{% if row["Presenter"] -%} +**Presenter**: {{ row["Presenter"] }} +{% endif -%} +{% if row["Talk details"] -%} +**Details**: {{ row["Talk details"] }} +{% endif -%} +{% if row["Video link"] -%} +{% if row["Video"] -%} +**Video**: `{{ row["Video"] }} <{{ row["Video link"] }}>`__ +{% else -%} +**Video**: `{{ row["Video link"] }} <{{ row["Video link"] }}>`__ +{% endif -%} +{% endif -%} +{% if row["Slides PPTX link"] -%} +{% if row["Slides PPTX"] -%} +**Video**: `{{ row["Slides PPTX"] }} <{{ row["Slides PPTX link"] }}>`__ +{% else -%} +**Video**: `{{ row["Slides PPTX link"] }} <{{ row["Slides PPTX link"] }}>`__ +{% endif -%} +{% endif -%} +{% if row["Slides PDF link"] -%} +{% if row["Slides PDF"] -%} +**Video**: `{{ row["Slides PDF"] }} <{{ row["Slides PDF link"] }}>`__ +{% else -%} +**Video**: `{{ row["Slides PDF link"] }} <{{ row["Slides PDF link"] }}>`__ +{% endif -%} +{% endif -%} +{% endfor %} + +LinkedIn Posts +-------------- + +{% for _, row in linkedin.iterrows() -%} +* `{{ row["Title"] }} <{{ row["Link"] }}>`__ +{% endfor %} + +Courses +------- + +{% for _, row in courses.iterrows() -%} +{% if row["Courses"] %} +{{ row["Courses"] }} +{{ '~' * row["Courses"]|length }} +{% endif -%} +{% if row["Link"] -%} +{% if row["Link title"] -%} +* `{{ row["Link title"] }} <{{ row["Link"] }}>`__ +{% else -%} +* `{{ row["Link"] }} <{{ row["Link"] }}>`__ +{% endif -%} +{% endif -%} +{% endfor %} +""" def parse_entries(filepath, sheet_name, cols=None): @@ -82,96 +183,18 @@ def main(argv): linkedin = parse_entries(input_file, 'LinkedIn Posts') courses = parse_entries(input_file, 'Courses') + tm = Template(resources_rst_template) + resources_rst_content = tm.render( + news_articles=news_articles, + talk_series=talk_series, + conferences=conferences, + linkedin=linkedin, + courses=courses + ) + with open(args.output, 'w') as out: - out.write('Further Resources\n') - out.write('=================\n') - out.write('\n') - out.write('News Articles\n') - out.write('-------------\n') - out.write('\n') - for _, row in news_articles.iterrows(): - out.write(f'* `{row["Article"]} <{row["Link"]}>`__\n') - out.write('\n') - out.write('Conferences\n') - out.write('-----------\n') - out.write('\n') - for _, row in conferences.iterrows(): - if row["Conference"]: - out.write('\n') - out.write(f'{row["Conference"]}\n') - out.write('~' * len(row["Conference"]) + '\n') - out.write('\n') - if row["Description"]: - out.write(f'{row["Description"]}\n') - out.write('\n') - if row["Related link"]: - out.write( - f'* `{row["Related link"]} <{row["Related link"]}>`__\n' - ) - out.write('\n') - out.write('Talk Series\n') - out.write('-----------\n') - out.write('\n') - for _, entry in talk_series.iterrows(): - if entry["Talk series"]: - out.write('\n') - out.write(f'{entry["Talk series"]}\n') - out.write('~' * len(entry[0]) + '\n') - out.write('\n') - if entry["Description"]: - out.write(f'{entry["Description"]}') - out.write('\n') - if entry["Page"]: - out.write(f'\n**Page**: {entry["Page"]}\n') - out.write(f'\n{entry["Title"]}\n') - out.write('^' * len(entry["Title"]) + '\n') - out.write('\n') - if entry["Presenter"]: - out.write(f'**Presenter**: {entry["Presenter"]}\n\n') - if entry["Talk details"]: - out.write(f'**Description**: {entry["Talk details"]}\n\n') - if entry["Video link"]: - linkname = (entry["Video"] if entry["Video"] - else entry["Video link"]) - out.write( - f'**Video**: `{linkname} <{entry["Video link"]}>`__\n\n' - ) - if entry["Slides PPTX link"]: - linkname = (entry["Slides PPTX"] if entry["Slides PPTX"] - else entry["Slides PPTX link"]) - out.write( - '**Slides**: ' + - f'`{linkname} <{entry["Slides PPTX link"]}>`__\n\n' - ) - if entry["Slides PDF link"]: - linkname = (entry["Slides PDF"] if entry["Slides PDF"] - else entry["Slides PDF link"]) - out.write( - '**Slides (PDF)**: ' + - f'`{linkname} <{entry["Slides PDF link"]}>`__\n\n' - ) - out.write('\n') - out.write('LinkedIn Posts\n') - out.write('--------------\n') - out.write('\n') - for _, row in linkedin.iterrows(): - out.write(f'* `{row["Title"]} <{row["Link"]}>`__\n') - out.write('\n') - out.write('Courses\n') - out.write('-------\n') - out.write('\n') - for _, row in courses.iterrows(): - if row["Course"]: - out.write('\n') - out.write(f'{row["Course"]}\n') - out.write('~' * len(row["Course"]) + '\n') - out.write('\n') - if row["Link"]: - title = row['Link title'] if row['Link title'] else row['Link'] - out.write( - f'* `{title} <{row["Link"]}>`__\n' - ) - out.write('\n') + out.write(resources_rst_content) + return 0