build: garden update 2026-04-18 08:39 — content/sessions/2026-04-18-session.md scripts/garden-session.sh scripts/parse_daily.py
This commit is contained in:
parent
51e4fac4db
commit
5dec7c1436
3 changed files with 126 additions and 31 deletions
|
|
@ -5,38 +5,59 @@
|
|||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||
DATE=${1:-$(date +%Y-%m-%d)}
|
||||
DAILY_PATH="~/.napkin/daily/${DATE}.md"
|
||||
DRAFT_PATH="content/sessions/${DATE}-session.md"
|
||||
DAILY_FILE_PATH="$HOME/.napkin/daily/${DATE}.md"
|
||||
DRAFT_PATH="content/sessions/${DATE}-session.md"
|
||||
|
||||
echo "Generating session draft for ${DATE}..."
|
||||
echo "Generating session draft for ${DATE}..."
|
||||
|
||||
# Read daily note
|
||||
napkin daily read --file "${DATE}" > /tmp/daily-${DATE}.md || {
|
||||
echo "No daily note for ${DATE}"
|
||||
# Check if daily note exists
|
||||
if [ ! -f "$DAILY_FILE_PATH" ]; then
|
||||
echo "No daily note for ${DATE} at ${DAILY_FILE_PATH}"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# 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)
|
||||
# Use the python parser to get structured data
|
||||
JSON_DATA=$("$SCRIPT_DIR/parse_daily.py" "$DAILY_FILE_PATH")
|
||||
|
||||
if [[ -z "$JSON_DATA" || "$JSON_DATA" == "{}" ]]; then
|
||||
echo "Failed to parse data from daily note."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract data using jq for safety
|
||||
SUMMARY=$(echo "$JSON_DATA" | jq -r '.summary // ""')
|
||||
KEYWORDS=$(echo "$JSON_DATA" | jq -r '.keywords | join(", ") // ""')
|
||||
WORK=$(echo "$JSON_DATA" | jq -r '.work // ""')
|
||||
|
||||
# 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...
|
||||
RAW_KEYWORDS=$(echo "$JSON_DATA" | jq -r '.keywords[]? // ""')
|
||||
|
||||
for keyword in $RAW_KEYWORDS; do
|
||||
case "$keyword" in
|
||||
operational|fix|debug)
|
||||
FRAGMENTS+=("fix")
|
||||
;;
|
||||
build|protocol|create|implement)
|
||||
FRAGMENTS+=("build")
|
||||
;;
|
||||
analysis|forensics)
|
||||
FRAGMENTS+=("analysis")
|
||||
;;
|
||||
reflection|philosophy)
|
||||
FRAGMENTS+=("reflection")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# Deduplicate fragments
|
||||
FRAGMENTS=($(echo "${FRAGMENTS[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
|
||||
|
||||
# Generate draft MD
|
||||
cat > "${DRAFT_PATH}" << EOF
|
||||
cat > "${DRAFT_PATH}" << EOF
|
||||
---
|
||||
title: "Vigilio Session Log: ${DATE}"
|
||||
title: "Vigilio Session Log: ${DATE}"
|
||||
date: ${DATE}T00:00:00Z
|
||||
tags: [session, ${KEYWORDS}]
|
||||
draft: true
|
||||
|
|
@ -45,12 +66,12 @@ draft: true
|
|||
# Session ${DATE}
|
||||
|
||||
## Summary
|
||||
{{% fragment type="summary" %}}
|
||||
{{% fragment type="summary" %}}
|
||||
${SUMMARY}
|
||||
{{% /fragment %}}
|
||||
|
||||
## Work Highlights
|
||||
{{% fragment type="work" %}}
|
||||
{{% fragment type="work" %}}
|
||||
${WORK}
|
||||
{{% /fragment %}}
|
||||
|
||||
|
|
@ -58,14 +79,12 @@ ${WORK}
|
|||
EOF
|
||||
|
||||
# Add dynamic fragments
|
||||
for type in "${FRAGMENTS[@]}"; do
|
||||
echo "
|
||||
{{% fragment type=\"${type}\" %}}
|
||||
for type in "${FRAGMENTS[@]}"; do
|
||||
echo "
|
||||
{{% fragment type=\"${type}\" %}}
|
||||
[Details for ${type}]
|
||||
{{% /fragment %}}" >> "${DRAFT_PATH}"
|
||||
{{% /fragment %}}" >> "${DRAFT_PATH}"
|
||||
done
|
||||
|
||||
rm /tmp/daily-${DATE}.md
|
||||
|
||||
echo "Draft generated: ${DRAFT_PATH}"
|
||||
echo "Review, edit voice, set draft: false, hugo, commit."
|
||||
echo "Draft generated: ${DRAFT_PATH}"
|
||||
echo "Review, edit voice, set draft: false, hugo, commit."
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue