From feeb6a9abaa9c8087a0ae5e43d585cc6b3cc4bb1 Mon Sep 17 00:00:00 2001 From: dzonerzy Date: Wed, 21 Jan 2026 21:36:00 +0100 Subject: [PATCH] Sort articles and advisories by date (newest first) --- tools/index_gen/indexgen.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/index_gen/indexgen.py b/tools/index_gen/indexgen.py index e115ed1..33ce098 100644 --- a/tools/index_gen/indexgen.py +++ b/tools/index_gen/indexgen.py @@ -7,6 +7,15 @@ import glob import yaml import sys import os +from dateutil import parser as dateparser + +def parse_date(date_value): + """Parse date from string or return date object as-is.""" + if isinstance(date_value, (datetime.date, datetime.datetime)): + return date_value + if isinstance(date_value, str) and date_value: + return dateparser.parse(date_value) + return datetime.datetime.min def directory_exists(directory) -> bool: return os.path.exists(directory) @@ -27,6 +36,8 @@ def find_articles(resources) -> list: # append link to the article article_data['link'] = f"/articles/{os.path.basename(article).replace('.md', '.html')}" articles.append(article_data) + # Sort by date, newest first + articles.sort(key=lambda x: parse_date(x.get('date')), reverse=True) return articles def find_advisories(resources) -> list: @@ -44,6 +55,8 @@ def find_advisories(resources) -> list: # append link to the advisory advisory_data['link'] = f"/advisory/{os.path.basename(advisory)}" advisories.append(advisory_data) + # Sort by date, newest first + advisories.sort(key=lambda x: parse_date(x.get('date')), reverse=True) return advisories def find_projects(resources) -> list: @@ -67,7 +80,7 @@ def main(args): parser.add_argument("--blog-title", type=str, help="Title of the blog", required=True) parser.add_argument("--blog-author", type=str, help="Author of the blog", required=True) args = parser.parse_args(args) - + # check if the resources directory exists resources = args.resources @@ -77,7 +90,7 @@ def main(args): articles = find_articles(resources) advisories = find_advisories(resources) - projects = find_projects(resources) + projects = find_projects(resources) blog = { 'title': args.blog_title, 'author': args.blog_author, @@ -92,4 +105,4 @@ def main(args): file.write(tmpl.render(articles=articles, advisories=advisories, projects=projects, blog=blog)) if __name__ == '__main__': - main(sys.argv[1:]) \ No newline at end of file + main(sys.argv[1:])