diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7daf34c0a7c24d621ce331a90c8093198ed8ade8..f31cd39ffd68ae45ea82664eca28fb275e32965c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,6 +33,8 @@ deploy_cpanel: - echo "{{</csv-table>}}" >> content/cloud/flavors/index.md - cat content/cloud/flavors/index.md - sed -i -e "s/BUILDIDTAG/$CI_COMMIT_SHORT_SHA/g" ./layouts/partials/site-footer.html + - curl https://cloud.gitlab-pages.ics.muni.cz/image-rotation/image-rotation-journal.md >> content/cloud/image-rotation/index.md + - python3 ci/image_rotation_news_gen.py - hugo --config config.toml -D --destination=./public - eval $(ssh-agent -s) @@ -48,5 +50,4 @@ deploy_cpanel: - latest_commit=$(git log -1 --pretty=format:%h ) - "curl -H 'Cache-Control: no-cache' https://docs.cloud.muni.cz | grep $latest_commit" only: - - master - + - master \ No newline at end of file diff --git a/ci/image_rotation_news_gen.py b/ci/image_rotation_news_gen.py new file mode 100644 index 0000000000000000000000000000000000000000..a37e275775d7066b7d046de717610b7ecf644c85 --- /dev/null +++ b/ci/image_rotation_news_gen.py @@ -0,0 +1,53 @@ +"""Generated dynamically image rotation news updates""" + +import re +import datetime + +DOC_NEWS_FILE = "content/cloud/news/index.md" +IMAGE_ROTATION_FILE = "content/cloud/image-rotation/index.md" + + +def get_image_update_log_dates(): + """Gets all image rotation update dates""" + with open(IMAGE_ROTATION_FILE, "r", encoding="utf-8") as rotate_file: + file_content = rotate_file.read() + return re.findall( + r"## Image rotation update from [0-9]{4}-[0-9]{2}-[0-9]{2}:", file_content + ) + + +def generate_news(image_update_dates): + """Generates news with image update news""" + with open(DOC_NEWS_FILE, "r", encoding="utf-8") as news_file: + news_content = news_file.readlines() + news_content = [line.strip() for line in news_content] + + for update_date in image_update_dates: + update_date = datetime.datetime.strptime( + update_date, "## Image rotation update from %Y-%m-%d:" + ) + + for line_idx, line in enumerate(news_content): + if re.match(r".*\*\*[0-9]{4}-[0-9]{2}-[0-9]{2}\*\*.*", line): + news_date = line.split("**")[1] + news_date = datetime.datetime.strptime(news_date, "%Y-%m-%d") + if update_date > news_date or line_idx == len(news_content) - 1: + update_date = datetime.datetime.strftime(update_date, "%Y-%m-%d") + new_entry = [ + f"**{update_date}** Image rotation update, details [here](https://docs.cloud.muni.cz/" + f"cloud/image-rotation/image-rotation-update-from-{update_date})", + ] + news_content = ( + news_content[:line_idx] + new_entry + [""] + news_content[line_idx:] + if line_idx != len(news_content) - 1 + else news_content + [""] + new_entry + ) + break + with open(DOC_NEWS_FILE, "w", encoding="utf-8") as news_file: + news_file.write("\n".join(news_content)) + + +if __name__ == "__main__": + IMAGE_UPDATE_DATES = get_image_update_log_dates() + if IMAGE_UPDATE_DATES: + generate_news(IMAGE_UPDATE_DATES) diff --git a/content/cloud/image-rotation/index.md b/content/cloud/image-rotation/index.md new file mode 100644 index 0000000000000000000000000000000000000000..f793e50dec386c418dd29f7ba7bbc7edad4b845a --- /dev/null +++ b/content/cloud/image-rotation/index.md @@ -0,0 +1,8 @@ +--- +title: "Image rotation journal" +date: 2022-01-23T20:31:35+02:00 +draft: false +disableToc: true +GeekdocHidden: true +--- + diff --git a/content/image-rotation/image-rotation-journal.md b/content/image-rotation/image-rotation-journal.md deleted file mode 100644 index 141055a10023a4d4195858eb01ef6ed630caf2b4..0000000000000000000000000000000000000000 --- a/content/image-rotation/image-rotation-journal.md +++ /dev/null @@ -1 +0,0 @@ -# Image rotation news \ No newline at end of file