#!/bin/bash
# BlackRoad Repo Search — find any repo across all orgs
# Usage: repo-search <query>        — search by name/description
#        repo-search --cat <name>   — list category
#        repo-search --dupes        — find duplicates
#        repo-search --stats        — show statistics

PINK='\033[38;5;205m'
GREEN='\033[38;5;82m'
CYAN='\033[38;5;69m'
AMBER='\033[38;5;214m'
DIM='\033[2m'
NC='\033[0m'

INDEX="$HOME/blackroad-operator/repo-index.json"
SEARCH="$HOME/blackroad-operator/repo-search.txt"

case "${1:---help}" in
  --stats)
    echo -e "${PINK}BlackRoad Repo Stats${NC}"
    python3 -c "
import json
with open('$INDEX') as f: d = json.load(f)
print(f'  Total:    {d[\"total\"]}')
print(f'  Active:   {d[\"active\"]}')
print(f'  Archived: {d[\"archived\"]}')
print()
for org, count in d['orgs'].items():
    print(f'  {org:25s} {count}')
print()
for cat, info in sorted(d['categories'].items(), key=lambda x: -x[1]['count']):
    print(f'  {cat:25s} {info[\"active\"]:3d} active / {info[\"count\"]:3d} total')
"
    ;;

  --cat)
    cat_name="${2:-core_platform}"
    echo -e "${PINK}Category: ${cat_name}${NC}"
    python3 -c "
import json
with open('$INDEX') as f: d = json.load(f)
cat = d['categories'].get('$cat_name', {})
for r in cat.get('repos', []):
    print(f'  {r[\"org\"]}/{r[\"name\"]:40s} [{r[\"lang\"] or \"-\":12s}] {r[\"desc\"]}')
"
    ;;

  --dupes)
    echo -e "${PINK}Potential Duplicates${NC}"
    python3 -c "
import json
from collections import defaultdict
with open('$INDEX') as f: d = json.load(f)
names = defaultdict(list)
for cat, info in d['categories'].items():
    for r in info.get('repos', []):
        base = r['name'].replace('blackroad-os-', '').replace('blackroad-', '').replace('-', '')
        names[base].append(f\"{r['org']}/{r['name']}\")
for base, repos in sorted(names.items()):
    if len(repos) > 1:
        print(f'  {base}:')
        for r in repos:
            print(f'    {r}')
        print()
"
    ;;

  --help|-h)
    echo -e "${PINK}BlackRoad Repo Search${NC}"
    echo "  repo-search <query>        Search by name/description"
    echo "  repo-search --stats        Show statistics"
    echo "  repo-search --cat <name>   List a category"
    echo "  repo-search --dupes        Find duplicates"
    echo ""
    echo -e "  ${DIM}Categories: core_platform, ai_agents, infrastructure, websites_brand,"
    echo -e "  education, creative_tools, blockchain_finance, security, data_analytics,"
    echo -e "  research_math, forks_external, archived_legacy, uncategorized${NC}"
    echo -e "  ${DIM}BlackRoad OS — Pave Tomorrow.${NC}"
    ;;

  *)
    query="$*"
    echo -e "${PINK}Search: ${CYAN}${query}${NC}"
    echo ""
    grep -i "$query" "$SEARCH" | grep -v "^#" | head -20 | while IFS= read -r line; do
      if echo "$line" | grep -q "active"; then
        echo -e "  ${GREEN}●${NC} $line"
      elif echo "$line" | grep -q "ARCHIVED"; then
        echo -e "  ${DIM}○ $line${NC}"
      else
        echo "  $line"
      fi
    done
    echo ""
    matches=$(grep -ic "$query" "$SEARCH" 2>/dev/null)
    echo -e "  ${DIM}${matches} matches${NC}"
    ;;
esac
