37 lines
1.1 KiB
Bash
37 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Current date for the 'updated' field
|
||
|
current_date=$(date +%F)
|
||
|
|
||
|
# Recursive search for all markdown files in the content folder
|
||
|
find ../content -type f -name "*.md" | while read file; do
|
||
|
# Check if the file has frontmatter enclosed in +++
|
||
|
if [ "$(head -n 1 "$file")" = "+++" ]; then
|
||
|
# Check if the 'date' field exists in the frontmatter
|
||
|
if grep -q '^date\s*=' "$file"; then
|
||
|
# Check if the 'updated' field is already present
|
||
|
if grep -q '^updated\s*=' "$file"; then
|
||
|
echo "✘ Skipped: 'updated' field already present in $file"
|
||
|
else
|
||
|
# Use awk to insert the 'updated' field after the 'date' field
|
||
|
awk -v date="$current_date" '
|
||
|
BEGIN { inserted=0 }
|
||
|
/^date\s*=/ && inserted == 0 {
|
||
|
print $0
|
||
|
print "updated = " date
|
||
|
inserted = 1
|
||
|
next
|
||
|
}
|
||
|
{ print }
|
||
|
' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
|
||
|
|
||
|
echo "✔ Inserted 'updated' after date in $file"
|
||
|
fi
|
||
|
else
|
||
|
echo "✘ No date field found in the frontmatter of $file"
|
||
|
fi
|
||
|
else
|
||
|
echo "✘ No frontmatter found in $file"
|
||
|
fi
|
||
|
done
|