diff --git a/.env.example b/.env.example index 8ec9d57e964..84e20d96058 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,6 @@ DATABASE_URL=postgres://paperclip:paperclip@localhost:5432/paperclip PORT=3100 SERVE_UI=false BETTER_AUTH_SECRET=paperclip-dev-secret + +# Discord webhook for daily merge digest (scripts/discord-daily-digest.sh) +# DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/... diff --git a/scripts/discord-daily-digest.sh b/scripts/discord-daily-digest.sh new file mode 100755 index 00000000000..07060e309b8 --- /dev/null +++ b/scripts/discord-daily-digest.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$REPO_ROOT" + +WEBHOOK_URL="${DISCORD_WEBHOOK_URL:-}" +DATE="${1:-$(date +%Y-%m-%d)}" +REPO_URL="https://github.com/paperclipai/paperclip" + +if [[ -z "$WEBHOOK_URL" ]]; then + echo "Error: DISCORD_WEBHOOK_URL env var is required" >&2 + echo "Usage: DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/... $0 [date]" >&2 + echo " date defaults to today (YYYY-MM-DD format)" >&2 + exit 1 +fi + +NEXT_DATE=$(date -j -v+1d -f "%Y-%m-%d" "$DATE" "+%Y-%m-%d" 2>/dev/null \ + || date -d "$DATE + 1 day" "+%Y-%m-%d" 2>/dev/null) + +COMMITS=$(git log --since="${DATE}T00:00:00" --until="${NEXT_DATE}T00:00:00" master \ + --format="%h|%s|%an" 2>/dev/null || true) + +if [[ -z "$COMMITS" ]]; then + PAYLOAD=$(cat </dev/null || echo "$PAYLOAD" + exit 0 +fi + +RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \ + -H "Content-Type: application/json" \ + -d "$PAYLOAD" \ + "$WEBHOOK_URL") + +if [[ "$RESPONSE" == "204" || "$RESPONSE" == "200" ]]; then + echo "Discord digest posted for ${DATE} (${COMMIT_COUNT:-0} commits)" +else + echo "Error: Discord webhook returned HTTP ${RESPONSE}" >&2 + exit 1 +fi