diff --git a/.github/prepare_web_viewer.py b/.github/prepare_web_viewer.py new file mode 100644 index 0000000..8679b41 --- /dev/null +++ b/.github/prepare_web_viewer.py @@ -0,0 +1,68 @@ +import argparse +from read_metadata import readMetadata +import re +import os +from pathlib import Path +import shutil + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(prog="Web viewer formatter") + parser.add_argument("--src-path", type=str, required=True, help="Path to the .tex sources (for metadata)") + parser.add_argument("--out-path", type=str, required=True, help="Path of the output directory") + parser.add_argument("--pdfs-path", type=str, required=True, help="Path of the pdfs directory") + parser.add_argument("--template-path", type=str, default="./web-viewer", help="Path to the templates") + args = parser.parse_args() + + notes_metadata = readMetadata(args.src_path) + table_of_content = "" + url_pdf_dir = "pdfs" + dest_pdf_dir = os.path.join(args.out_path, url_pdf_dir) + with open(os.path.join(args.template_path, "index.html"), "r") as f: index_template = f.read() + with open(os.path.join(args.template_path, "view.html"), "r") as f: viewer_template = f.read() + + os.makedirs(args.out_path, exist_ok=True) + shutil.copytree(args.pdfs_path, dest_pdf_dir, dirs_exist_ok=True) + + + # Generate home page content + for year in sorted(notes_metadata.keys()): + for semester in sorted(notes_metadata[year].keys()): + for course in sorted(notes_metadata[year][semester]): + course_name = notes_metadata[year][semester][course]["name"] + course_content = notes_metadata[year][semester][course]["content"] + + if (len(course_content) == 1) and (course_content[0]["name"] is None): + table_of_content += f"

{course_name}

\n" + else: + table_of_content += f"

{course_name}

\n" + table_of_content += "\n" + + with open(os.path.join(args.out_path, "index.html"), "w") as f: + f.write( + re.sub( + r"[\s\S]*", + f"\n{table_of_content}\n", + index_template + ) + ) + + + # Generate viewer content + for year in notes_metadata.keys(): + for semester in notes_metadata[year].keys(): + for course in notes_metadata[year][semester]: + course_name = notes_metadata[year][semester][course]["name"] + course_content = notes_metadata[year][semester][course]["content"] + + for content in course_content: + content_local_path = os.path.join(url_pdf_dir, content["url"]) + content_html_name = f"{Path(content['url']).stem}.html" + with open(os.path.join(args.out_path, content_html_name), "w") as f: + page_content = re.sub(r"{{pdf-path}}", f"{content_local_path}", viewer_template) + page_content = re.sub(r"{{course-name}}", f"{Path(content['url']).name}", page_content) + f.write(page_content) + diff --git a/.github/web-viewer/index.html b/.github/web-viewer/index.html new file mode 100644 index 0000000..fea5f1f --- /dev/null +++ b/.github/web-viewer/index.html @@ -0,0 +1,22 @@ + + + + + + Document + + + + + +

Table of contents

+ + + + diff --git a/.github/web-viewer/view.html b/.github/web-viewer/view.html new file mode 100644 index 0000000..eff300b --- /dev/null +++ b/.github/web-viewer/view.html @@ -0,0 +1,23 @@ + + + + + + {{course-name}} + + + + +

+ There has been an error. View the pdf here +

+
+ + + diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 19a6c6a..7a25ab4 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -37,7 +37,10 @@ jobs: - name: Compile run: | - bash ${GITHUB_WORKSPACE}/utils/compile.sh src ${GITHUB_WORKSPACE}/.compiled ${GITHUB_WORKSPACE}/.currpdfs + bash ${GITHUB_WORKSPACE}/utils/compile.sh \ + ${GITHUB_WORKSPACE}/src \ + ${GITHUB_WORKSPACE}/.compiled \ + ${GITHUB_WORKSPACE}/.currpdfs - name: Generate README run: | @@ -47,14 +50,33 @@ jobs: --readme-path ${GITHUB_WORKSPACE}/.compiled/README.md \ --gh-link https://github.com/NotXia/unibo-ai-notes/blob/pdfs - - name: Move to pdfs branch uses: s0/git-publish-subdir-action@develop env: REPO: self BRANCH: pdfs - FOLDER: .compiled + FOLDER: ${GITHUB_WORKSPACE}/.compiled GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMMIT_NAME: "github-actions[bot]" COMMIT_EMAIL: "github-actions[bot]@users.noreply.github.com" MESSAGE: "🤖 Hello human, trying to not break anything ({sha})" + + + - name: Generate web viewer content + run: | + python3 ${GITHUB_WORKSPACE}/.github/prepare_web_viewer.py \ + --src-path=${GITHUB_WORKSPACE}/src \ + --out-path=/tmp/webviewer \ + --pdfs-path=${GITHUB_WORKSPACE}/.compiled \ + --template-path=${GITHUB_WORKSPACE}/.github/web-viewer \ + + - name: Move to pages branch + uses: s0/git-publish-subdir-action@develop + env: + REPO: self + BRANCH: pages + FOLDER: /tmp/webviewer + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COMMIT_NAME: "github-actions[bot]" + COMMIT_EMAIL: "github-actions[bot]@users.noreply.github.com" + MESSAGE: "🤖 Web developer stuff" \ No newline at end of file