feat/fix: sort the blog dir by date
All checks were successful
Lint / shellcheck (push) Successful in 20s
Release Standalone Builder / build (release) Successful in 32s
Release Standalone Builder / publish-aur (release) Successful in 35s
Release Standalone Builder / publish-homebrew (release) Successful in 8s

This commit is contained in:
2026-04-01 09:02:46 +02:00
parent 100979d28a
commit 81d3caff45

45
kewt.sh
View File

@@ -895,13 +895,16 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while
sort_args="-r" sort_args="-r"
fi fi
find "$dir" ! -name "$(basename "$dir")" -prune ! -name ".*" -print | LC_ALL=C sort $sort_args | while read -r entry; do temp_entries="$KEWT_TMPDIR/entries_$$.txt"
: > "$temp_entries"
find "$dir" ! -name "$(basename "$dir")" -prune ! -name ".*" -print | while read -r entry; do
name="${entry##*/}" name="${entry##*/}"
case "$name" in case "$name" in
template.html|site.conf|style.css|index.md) continue ;; template.html|site.conf|style.css|index.md) continue ;;
esac esac
if [ -d "$entry" ]; then if [ -d "$entry" ]; then
echo "- [${name}/](${name}/index.html)" >> "$temp_list" echo "${name}|- [${name}/](${name}/index.html)" >> "$temp_entries"
elif [ "${entry%.md}" != "$entry" ]; then elif [ "${entry%.md}" != "$entry" ]; then
label="${name%.md}" label="${name%.md}"
@@ -969,12 +972,20 @@ eval "find \"$src\" \( $IGNORE_ARGS \) -prune -o -type d -print" | sort | while
label="$p_date $p_time" label="$p_date $p_time"
fi fi
fi fi
echo "- [$label](${name%.md}.html)" >> "$temp_list" if [ "$is_post_entry" = "true" ]; then
sort_key="${p_date} ${p_time}"
else else
echo "- [$name]($name)" >> "$temp_list" sort_key="$name"
fi
echo "${sort_key}|- [$label](${name%.md}.html)" >> "$temp_entries"
else
echo "${name}|- [$name]($name)" >> "$temp_entries"
fi fi
done done
LC_ALL=C sort $sort_args "$temp_entries" | cut -d'|' -f2- >> "$temp_list"
rm -f "$temp_entries"
is_home="false"; [ "$dir" = "$src" ] && is_home="true" is_home="false"; [ "$dir" = "$src" ] && is_home="true"
target_url="/$rel_dir/index.html" target_url="/$rel_dir/index.html"
[ "$rel_dir" = "." ] && target_url="/index.html" [ "$rel_dir" = "." ] && target_url="/index.html"
@@ -1198,7 +1209,31 @@ if [ "$generate_feed" = "true" ] && [ -n "$base_url" ]; then
printf ' <lastBuildDate>%s</lastBuildDate>\n' "$build_date" printf ' <lastBuildDate>%s</lastBuildDate>\n' "$build_date"
} >> "$feed_path" } >> "$feed_path"
find "$src" -type f -name '*.md' -path "*${posts_dir:-__no_posts__}*" -print | LC_ALL=C sort -r | while IFS= read -r post_file; do temp_feed_files="$KEWT_TMPDIR/feed_files_$$.txt"
: > "$temp_feed_files"
find "$src" -type f -name '*.md' -path "*${posts_dir:-__no_posts__}*" -print | while IFS= read -r post_file; do
post_basename=$(basename "$post_file" .md)
# Parse frontmatter to get date
parse_frontmatter "$post_file"
[ "$fm_draft" = "true" ] && continue
if [ -n "$fm_date" ]; then
post_date=$(echo "$fm_date" | sed 's/^\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\).*/\1/')
post_time="00:00"
if echo "$fm_date" | grep -q '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}[ T_-]\?[0-9]\{2\}[:\-][0-9]\{2\}'; then
post_time=$(echo "$fm_date" | sed 's/^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}[ T_-]\?\([0-9]\{2\}[:\-][0-9]\{2\}\).*/\1/' | tr '-' ':')
fi
else
post_date=$(echo "$post_basename" | sed 's/^\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\).*/\1/')
post_time="00:00"
if echo "$post_basename" | grep -q '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}[:\-][0-9]\{2\}'; then
post_time=$(echo "$post_basename" | sed 's/^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-\([0-9]\{2\}[:\-][0-9]\{2\}\).*/\1/' | tr '-' ':')
fi
fi
echo "${post_date} ${post_time}|${post_file}" >> "$temp_feed_files"
done
LC_ALL=C sort -r "$temp_feed_files" | cut -d'|' -f2- | while IFS= read -r post_file; do
post_basename=$(basename "$post_file" .md) post_basename=$(basename "$post_file" .md)
# Parse frontmatter # Parse frontmatter