36 lines
1.1 KiB
Bash
Executable file
36 lines
1.1 KiB
Bash
Executable file
#!/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
|