#!/usr/bin/env bash # Install claude-statusline for the current user. # Usage: bash install.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" INSTALL_DIR="${HOME}/.local/share/claude-statusline" CONFIG_DIR="${HOME}/.config/claude-statusline" CLAUDE_DIR="${HOME}/.claude" echo "==> Installing claude-statusline..." # Copy scripts mkdir -p "$INSTALL_DIR" cp "$SCRIPT_DIR/statusline.js" "$INSTALL_DIR/" cp "$SCRIPT_DIR/fetch-usage.js" "$INSTALL_DIR/" chmod +x "$INSTALL_DIR"/*.js # Create config dir mkdir -p "$CONFIG_DIR" if [ ! -f "$CONFIG_DIR/session-key" ]; then echo "# Paste your claude.ai sessionKey cookie value here" > "$CONFIG_DIR/session-key" chmod 600 "$CONFIG_DIR/session-key" echo " Created $CONFIG_DIR/session-key (edit with your session key)" fi # Configure Claude Code statusline mkdir -p "$CLAUDE_DIR" SETTINGS="$CLAUDE_DIR/settings.json" NODE_BIN="$(which node 2>/dev/null || echo '/usr/bin/node')" if [ -f "$SETTINGS" ]; then # Check if statusLine already configured if grep -q '"statusLine"' "$SETTINGS" 2>/dev/null; then echo " statusLine already configured in $SETTINGS — skipping" else # Insert statusLine before last closing brace TMP=$(mktemp) sed '$ d' "$SETTINGS" > "$TMP" # Add comma if needed if grep -q '[^{]' "$TMP"; then echo ',' >> "$TMP" fi cat >> "$TMP" < "$SETTINGS" < Optional: set up usage fetcher cron (every 5 min):" echo " crontab -e" echo " */5 * * * * ${NODE_BIN} ${INSTALL_DIR}/fetch-usage.js 2>/dev/null" echo "" echo "==> Done! Restart Claude Code to see the statusline." echo " Don't forget to add your session key to: $CONFIG_DIR/session-key"