From 8b8344809224b26d43269579ab221298d5dcbb49 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Sat, 29 Mar 2025 18:51:09 -0400 Subject: feat: don't include page on index if no date frontmatter --- README.md | 6 ++++-- ssg-blog | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f394d21..1dd1461 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ See [https://romansolotarev.com/ssg.html](https://romanzolotarev.com/ssg.html) f 3. `chmod +x /usr/bin/ssg-blog` 4. `ssg-blog src dst 'https://my-website.net'` -ssg-blog checks for subdirectories in the src directory, each of which becomes a category heading (non-recursively). It will generate a sorted list of links to any .md file in those directory (including nested directories). Each .md file requires frontmatter including the title and a YYYY-MM-DD date like this to be included in the index page: +ssg-blog checks for subdirectories in the src directory, each of which becomes a category heading (non-recursively). It will generate a sorted list of links to any .md file in those directory (including nested directories). Each .md file may include frontmatter with the title and a YYYY-MM-DD date like this to be included in the index page: ```markdown --- @@ -23,7 +23,9 @@ publish: false --- ``` -If you add `publish: false` to the frontmatter, the post will not show up in the index (it will still be rendered and appear in the sitemap). This field is optional otherwise. +If a file has no frontmatter, no `date`, or `publish: false`, the page won't be included in the index. It will still be rendered in sitemap.xml. + +Setting `publish: true` is optional and equivalent to not having `publish` at all. ## Example diff --git a/ssg-blog b/ssg-blog index 9ea93d0..478e317 100755 --- a/ssg-blog +++ b/ssg-blog @@ -217,11 +217,11 @@ render_index() { find "$category_dir" -type f \( -name "*.md" -o -name "index.md" \) ! -path "*/.*" | while read -r article; do publish=$(sed -n '/^publish: /s/^publish: //p' "$article" | head -n 1) - if [ "$publish" = "false" ]; then - continue - fi title=$(sed -n '/^title: /s/title: //p' "$article" | head -n 1) date=$(sed -n '/^date: /s/date: //p' "$article" | head -n 1) + if [ "$publish" = "false" ] || [ -z "$date" ]; then + continue + fi article_url="${article#"$src"}" article_url="${article_url%.md}.html" if [ "${article_url##*/}" = "index.html" ]; then -- cgit v1.2.3