diff --git a/.github/read_metadata.py b/.github/read_metadata.py new file mode 100644 index 0000000..f87f5e9 --- /dev/null +++ b/.github/read_metadata.py @@ -0,0 +1,30 @@ +import os +import json + + +def readMetadata(src_path, gh_link="", metadata_file_name="metadata.json"): + notes_metadata = {} + + # Reads courses metadata + for root, _, files in os.walk(src_path): + if metadata_file_name in files: + with open(os.path.join(root, metadata_file_name)) as f: + metadata = json.load(f) + dir_name = os.path.relpath(root, src_path) + gh_path = os.path.join(gh_link, dir_name) + + if metadata["year"] not in notes_metadata: notes_metadata[metadata["year"]] = {} + if metadata["semester"] not in notes_metadata[metadata["year"]]: notes_metadata[metadata["year"]][metadata["semester"]] = {} + + notes_metadata[metadata["year"]][metadata["semester"]][metadata["name"]] = { + "name": metadata["name"], + "content": [ + { + "name": pdf["name"], + "url": os.path.join(gh_path, pdf["path"]) + } + for pdf in metadata["pdfs"] + ] + } + + return notes_metadata \ No newline at end of file diff --git a/utils/update_readme.py b/.github/update_readme.py similarity index 54% rename from utils/update_readme.py rename to .github/update_readme.py index 042cf6a..4a7fc43 100644 --- a/utils/update_readme.py +++ b/.github/update_readme.py @@ -1,9 +1,5 @@ import argparse -import os -import pathlib -import json - -METADATA_FILENAME = "metadata.json" +from read_metadata import readMetadata if __name__ == "__main__": @@ -13,29 +9,7 @@ if __name__ == "__main__": parser.add_argument("--gh-link", type=str, required=True, help="Link to the GitHub repo") args = parser.parse_args() - notes_metadata = {} - - # Reads courses metadata - for root, dirs, files in os.walk(args.src_path): - if METADATA_FILENAME in files: - with open(os.path.join(root, METADATA_FILENAME)) as f: - metadata = json.load(f) - dir_name = os.path.relpath(root, args.src_path) - gh_path = os.path.join(args.gh_link, dir_name) - - if metadata["year"] not in notes_metadata: notes_metadata[metadata["year"]] = {} - if metadata["semester"] not in notes_metadata[metadata["year"]]: notes_metadata[metadata["year"]][metadata["semester"]] = {} - - notes_metadata[metadata["year"]][metadata["semester"]][metadata["name"]] = { - "name": metadata["name"], - "content": [ - { - "name": pdf["name"], - "url": os.path.join(gh_path, pdf["path"]) - } - for pdf in metadata["pdfs"] - ] - } + notes_metadata = readMetadata(args.src_path, args.gh_link) # Appends links to README with open(args.readme_path, "a") as readme_f: diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 2f8ee8a..19a6c6a 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -4,7 +4,7 @@ on: push: branches: - main - paths: ["src/**", .github/workflows/**, compile.sh] + paths: ["src/**", .github/**, compile.sh] jobs: compile: @@ -32,17 +32,20 @@ jobs: - name: Prepare output directory run: | - mkdir .compiled - cp LICENSE .compiled + mkdir ${GITHUB_WORKSPACE}/.compiled + cp ${GITHUB_WORKSPACE}/LICENSE ${GITHUB_WORKSPACE}/.compiled - name: Compile run: | - bash ./utils/compile.sh src .compiled .currpdfs + bash ${GITHUB_WORKSPACE}/utils/compile.sh src ${GITHUB_WORKSPACE}/.compiled ${GITHUB_WORKSPACE}/.currpdfs - name: Generate README run: | cp README.md .compiled/README.md - python3 ./utils/update_readme.py --src-path ./src --readme-path .compiled/README.md --gh-link https://github.com/NotXia/unibo-ai-notes/blob/pdfs + python3 ${GITHUB_WORKSPACE}/.github/update_readme.py \ + --src-path ${GITHUB_WORKSPACE}/src \ + --readme-path ${GITHUB_WORKSPACE}/.compiled/README.md \ + --gh-link https://github.com/NotXia/unibo-ai-notes/blob/pdfs - name: Move to pdfs branch