Skip to content

Instantly share code, notes, and snippets.

@jeffpignataro
Last active August 26, 2023 15:08
Show Gist options
  • Save jeffpignataro/a20428ae38b6f7bd12bf1484b705c1c1 to your computer and use it in GitHub Desktop.
Save jeffpignataro/a20428ae38b6f7bd12bf1484b705c1c1 to your computer and use it in GitHub Desktop.
Clone all repos
# ORIGINAL
CNTX={users}; NAME={jeffpignataro}; PAGE=1
curl "https://api.github.com/$CNTX/$NAME/repos?page=$PAGE&per_page=100" |
grep -e 'git_url*' |
cut -d \" -f 4 |
xargs -L1 git clone
# Jq with Background Processes using GH CLI
CNTX={users}; NAME={jeffpignataro}; PAGE=1
curl "https://api.github.com/$CNTX/$NAME/repos?page=$PAGE&per_page=100" | jq ".[].name" | xargs -I % sh -c 'gh repo clone jeffpignataro/% &'
# Jq with Parallism using GH CLI
CNTX={users}; NAME={jeffpignataro}; PAGE=1
curl "https://api.github.com/$CNTX/$NAME/repos?page=$PAGE&per_page=100" | jq ".[].name" | xargs -P $(nproc) -I % sh -c 'gh repo clone jeffpignataro/%'
# Handles up to 1000 repos, Jq with Parallism using GH CLI
NAME=jeffpignataro; \
for i in {1..10}; \
do curl "https://api.github.com/users/$NAME/repos?page=$i&per_page=100" | \
jq ".[].name" | \
xargs -P $(nproc) -I {} gh repo clone $NAME/{}; \
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment