feat/fix: sort the blog dir by date
All checks were successful
All checks were successful
This commit is contained in:
45
kewt.sh
45
kewt.sh
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user