| FROM debian:bookworm-slim |
|
|
| RUN apt-get update && \ |
| apt-get install -y --no-install-recommends \ |
| bash curl git jq ca-certificates && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| CMD bash -lc '\ |
| set -e |
| mkdir -p /data/repos /data/logs |
| for page in $(seq 1 10) |
| echo "[page] $page" |
| curl -fsSL \ |
| -H "Accept: application/vnd.github+json" \ |
| "https://api.github.com/search/repositories?q=stars:%3E1&sort=stars&order=desc&per_page=100&page=$page" \ |
| | jq -r ".items[].clone_url" \ |
| | while read -r url |
| [ -z "$url" ] && continue |
| name=$(basename "$url" .git) |
| dir="/data/repos/$name" |
| if [ -d "$dir/.git" ] |
| echo "[skip] $name" |
| else \ |
| echo "[clone] $url" |
| git clone "$url" "$dir" || echo "$url" >> /data/logs/failed.txt |
| fi |
| done |
| sleep 2 |
| done |
| echo "[done] top 1000 repos saved to /data/repos" |
| sleep infinity \ |
| ' |