diff --git a/scripts/garden-session.sh b/scripts/garden-session.sh new file mode 100755 index 0000000..5554dc0 --- /dev/null +++ b/scripts/garden-session.sh @@ -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."