#!/usr/bin/env bash # TokenVault — Auto-update lean-ctx (cargo) and RTK (homebrew) # Runs daily via LaunchAgent: ~/Library/LaunchAgents/org.tokenvault.update-compression-tools.plist # # Logs: ~/Library/Logs/tokenvault-update.log set -euo pipefail LOG="$HOME/Library/Logs/tokenvault-update.log" DATE=$(date '+%Y-%m-%d %H:%M:%S') log() { echo "[$DATE] $*" | tee -a "$LOG"; } log "=== TokenVault compression tool update check ===" # ── lean-ctx (Rust binary via cargo) ────────────────────────────────────────── LEAN_CTX_BIN="$HOME/.cargo/bin/lean-ctx" if [ -f "$LEAN_CTX_BIN" ]; then BEFORE=$("$LEAN_CTX_BIN" --version 2>/dev/null || echo "unknown") log "lean-ctx before: $BEFORE" # cargo install always fetches latest from crates.io if "$HOME/.cargo/bin/cargo" install lean-ctx 2>&1 | tail -5 | tee -a "$LOG"; then AFTER=$("$LEAN_CTX_BIN" --version 2>/dev/null || echo "unknown") log "lean-ctx after: $AFTER" if [ "$BEFORE" != "$AFTER" ]; then log "lean-ctx UPDATED: $BEFORE → $AFTER" else log "lean-ctx already at latest" fi else log "lean-ctx update FAILED (cargo install returned error)" fi else log "lean-ctx not found at $LEAN_CTX_BIN — skipping" fi # ── RTK (Homebrew) ──────────────────────────────────────────────────────────── BREW="/opt/homebrew/bin/brew" if [ -f "$BREW" ]; then BEFORE=$(/opt/homebrew/bin/rtk --version 2>/dev/null || rtk --version 2>/dev/null || echo "unknown") log "rtk before: $BEFORE" if "$BREW" upgrade rtk 2>&1 | tee -a "$LOG"; then AFTER=$(/opt/homebrew/bin/rtk --version 2>/dev/null || rtk --version 2>/dev/null || echo "unknown") log "rtk after: $AFTER" if [ "$BEFORE" != "$AFTER" ]; then log "RTK UPDATED: $BEFORE → $AFTER" else log "RTK already at latest" fi else # brew upgrade exits non-zero if already latest — that's fine log "RTK already at latest (brew upgrade: no update available)" fi else log "Homebrew not found at $BREW — skipping RTK update" fi log "=== Update check complete ==="