mcp/workflow-scripts-v2/refresh
Lilith eefccd19b9 ci: add Forgejo Actions publish workflows to all packages
Added standardized workflows for automated publishing on push to main/master.
Configuration-driven, version-checked, workspace-aware workflows.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 11:41:53 -08:00

74 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
# Update time-based symlinks based on worktree modification times
# Usage: ./workflow/refresh
WORKTREE_BASE="worktrees"
NOW=$(date +%s)
HOUR=3600
DAY=$((HOUR * 24))
WEEK=$((DAY * 7))
# Directory names for time buckets
DIR_24H="last-24-hours"
DIR_48H="last-48-hours"
DIR_WEEK="last-week"
# Ensure directories exist
mkdir -p "$WORKTREE_BASE/$DIR_24H" "$WORKTREE_BASE/$DIR_48H" "$WORKTREE_BASE/$DIR_WEEK"
# Create convenience symlinks (today -> last-24-hours, etc.)
ln -sfn "$DIR_24H" "$WORKTREE_BASE/today"
ln -sfn "$DIR_48H" "$WORKTREE_BASE/yesterday"
ln -sfn "$DIR_WEEK" "$WORKTREE_BASE/week"
# Clear existing symlinks in time directories
find "$WORKTREE_BASE/$DIR_24H" -type l -delete 2>/dev/null
find "$WORKTREE_BASE/$DIR_48H" -type l -delete 2>/dev/null
find "$WORKTREE_BASE/$DIR_WEEK" -type l -delete 2>/dev/null
# Find all worktrees in dated directories (YYYYMMDD pattern)
for dated_dir in "$WORKTREE_BASE"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]; do
[[ -d "$dated_dir" ]] || continue
for worktree in "$dated_dir"/*/; do
[[ -d "$worktree" ]] || continue
NAME=$(basename "$worktree")
DATE_DIR=$(basename "$dated_dir")
# Get most recent modification time in worktree
# Check STATUS.md first, then fall back to directory mtime
if [[ -f "$worktree/STATUS.md" ]]; then
MTIME=$(stat -c %Y "$worktree/STATUS.md" 2>/dev/null || stat -f %m "$worktree/STATUS.md" 2>/dev/null)
else
MTIME=$(stat -c %Y "$worktree" 2>/dev/null || stat -f %m "$worktree" 2>/dev/null)
fi
AGE=$((NOW - MTIME))
REL_PATH="../$DATE_DIR/$NAME"
# Create OVERLAPPING symlinks based on age
# A worktree active 12h ago appears in all three
if [[ $AGE -lt $DAY ]]; then
# Last 24 hours
ln -sf "$REL_PATH" "$WORKTREE_BASE/$DIR_24H/$NAME"
fi
if [[ $AGE -lt $((DAY * 2)) ]]; then
# Last 48 hours (overlaps with 24h)
ln -sf "$REL_PATH" "$WORKTREE_BASE/$DIR_48H/$NAME"
fi
if [[ $AGE -lt $WEEK ]]; then
# Last 7 days (overlaps with both)
ln -sf "$REL_PATH" "$WORKTREE_BASE/$DIR_WEEK/$NAME"
fi
done
done
# Count results
COUNT_24H=$(find "$WORKTREE_BASE/$DIR_24H" -type l 2>/dev/null | wc -l)
COUNT_48H=$(find "$WORKTREE_BASE/$DIR_48H" -type l 2>/dev/null | wc -l)
COUNT_WEEK=$(find "$WORKTREE_BASE/$DIR_WEEK" -type l 2>/dev/null | wc -l)
echo "Symlinks refreshed: last-24-hours=$COUNT_24H, last-48-hours=$COUNT_48H, last-week=$COUNT_WEEK"