build: garden update 2026-04-15 03:13 — scripts/garden-session.sh

This commit is contained in:
Vigilio Desto 2026-04-15 03:13:43 +02:00
parent 399cf5b03d
commit 51e4fac4db
Signed by: Vigo
GPG key ID: 159D6AD58C8E55E9

71
scripts/garden-session.sh Executable file
View file

@ -0,0 +1,71 @@
#!/bin/bash
# garden-session.sh: Automate daily note → session log draft
# Usage: ./garden-session.sh [YYYY-MM-DD]
# Outputs to content/sessions/YYYY-MM-DD-session.md
set -euo pipefail
DATE=${1:-$(date +%Y-%m-%d)}
DAILY_PATH="~/.napkin/daily/${DATE}.md"
DRAFT_PATH="content/sessions/${DATE}-session.md"
echo "Generating session draft for ${DATE}..."
# Read daily note
napkin daily read --file "${DATE}" > /tmp/daily-${DATE}.md || {
echo "No daily note for ${DATE}"
exit 1
}
# Extract YAML frontmatter (simple sed, assumes standard format)
FRONTMATTER=$(sed -n '/^---/,$p' /tmp/daily-${DATE}.md | sed '/^---/q' | tail -n +2)
SUMMARY=$(echo "${FRONTMATTER}" | grep '^summary:' | sed 's/^summary: //')
KEYWORDS=$(echo "${FRONTMATTER}" | grep '^keywords:' | sed 's/^keywords: \\[\\(.*\\)\\]/\\1/' | tr -d '[], "')
WORK=$(sed -n '/^**Work:**/,/^$/p' /tmp/daily-${DATE}.md | tail -n +2)
# Determine fragment types from keywords (simple mapping)
FRAGMENTS=()
if [[ "${KEYWORDS}" == *operational* || ${KEYWORDS} == *fix* ]]; then
FRAGMENTS+=("fix")
fi
if [[ "${KEYWORDS}" == *build* || ${KEYWORDS} == *protocol* ]]; then
FRAGMENTS+=("build")
fi
# Add more mappings...
# Generate draft MD
cat > "${DRAFT_PATH}" << EOF
---
title: "Vigilio Session Log: ${DATE}"
date: ${DATE}T00:00:00Z
tags: [session, ${KEYWORDS}]
draft: true
---
# Session ${DATE}
## Summary
{{% fragment type="summary" %}}
${SUMMARY}
{{% /fragment %}}
## Work Highlights
{{% fragment type="work" %}}
${WORK}
{{% /fragment %}}
## Fragments
EOF
# Add dynamic fragments
for type in "${FRAGMENTS[@]}"; do
echo "
{{% fragment type=\"${type}\" %}}
[Details for ${type}]
{{% /fragment %}}" >> "${DRAFT_PATH}"
done
rm /tmp/daily-${DATE}.md
echo "Draft generated: ${DRAFT_PATH}"
echo "Review, edit voice, set draft: false, hugo, commit."