#!/bin/bash

# blob:summary=Print Claude Code session and weekly usage limits
# blob:group=claude
# blob:hidden=true

set -euo pipefail

credentials_file="$HOME/.claude/.credentials.json"
usage_url="https://api.anthropic.com/api/oauth/usage"

[[ -r $credentials_file ]] || { echo "Sign in to Claude Code first" >&2; exit 1; }

access_token=$(jq -r '.claudeAiOauth.accessToken // empty' "$credentials_file")
[[ -n $access_token ]] || { echo "Sign in to Claude Code first" >&2; exit 1; }

response=$(printf 'Authorization: Bearer %s\nanthropic-beta: oauth-2025-04-20\n' "$access_token" |
  curl -fsS --max-time 10 -H @- "$usage_url" 2>/dev/null) || {
  echo "Could not load usage, open Claude Code to refresh sign-in" >&2
  exit 1
}

jq -r '
  def limit_rows(name; limit):
    if limit then
      "\(name)_percent\t\((limit.utilization // 0) | floor)",
      "\(name)_resets\t\(limit.resets_at // "")"
    else empty end;
  limit_rows("session"; .five_hour),
  limit_rows("weekly"; .seven_day),
  limit_rows("weekly_opus"; .seven_day_opus)
' <<<"$response"
