#!/bin/bash # BlackRoad Repo Search — find any repo across all orgs # Usage: repo-search — search by name/description # repo-search --cat — 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 Search by name/description" echo " repo-search --stats Show statistics" echo " repo-search --cat 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