Add create-daily task

This commit is contained in:
Oliver Davies 2024-01-03 20:00:00 +00:00
parent 41a55e8651
commit 09ca6183a4
2 changed files with 55 additions and 0 deletions

44
run
View file

@ -7,6 +7,50 @@ function clean {
rm -fr output_*/ source/build/
}
# Create a new daily email.
function create-daily {
local date="${1}"
local title="${2}"
if [ "${date}" == "next" ]; then
next_date=$(ls -1 source/_daily_emails | tail -n 1 | tr -d '.md' | xargs -I {} date +%Y-%m-%d -d '{} +1 day')
else
next_date="${date}"
fi
filepath="source/_daily_emails/${next_date}.md"
shift 1
# Generate the title and slug.
title="${*}"
slug=$(echo "${title}" | \
tr '[:upper:]' '[:lower:]' | \
sed 's/[^a-z0-9]/-/g' | \
sed 's/\-\-+/-/g' | \
sed 's/^\-//;s/\-$//')
# Create the file.
cp -f --no-clobber stub.md "${filepath}"
date=$(date -d "${next_date}" +%Y-%m-%d)
day=$(date -d "${next_date}" +%d)
month=$(date -d "${next_date}" +%m)
year=$(date -d "${next_date}" +%Y)
# Replace the placeholders.
sed -i "s/{{ date }}/${date}/" "${filepath}"
sed -i "s/{{ title }}/${title}/" "${filepath}"
sed -i "s#{{ permalink }}#archive/${year}/${month}/${day}/${slug}#" "${filepath}"
# Create a commit with the appropriate date in the message
git add "${filepath}"
git commit --quiet -m "Add daily email for ${date}
${title}"
echo "${filepath}"
}
function generate {
local args=()

11
stub.md Normal file
View file

@ -0,0 +1,11 @@
---
title: >-
{{ title }}
date: {{ date }}
permalink: {{ permalink }}
snippet: |
TODO
# tags:
# - a
# - b
---