hacks/download-starred-github-repos/download-starred-github-rep...

45 lines
1.4 KiB
Bash

#!/bin/bash
# thanks to @sebble for the basis for this script, he did the hard work:
# https://gist.github.com/sebble/e5af3d03700bfd31c62054488bfe8d4f
function list_starred_repos {
USER=${1:-sneak}
STARS=$(curl -sI https://api.github.com/users/$USER/starred?per_page=1|egrep '^Link'|egrep -o 'page=[0-9]+'|tail -1|cut -c6-)
PAGES=$((658/100+1))
echo You have $STARS starred repositories. > /dev/stderr
# cloning
# https://github.com/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
# breaks github's auth system
REPOS=""
for PAGE in `seq $PAGES`; do
REPOS+=" $(
curl -sH "Accept: application/vnd.github.v3.star+json" \
"https://api.github.com/users/$USER/starred?per_page=100&page=$PAGE" |
jq -r '.[]|[.repo.full_name][0]' |
grep -v eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
)"
done
for REPO in $REPOS ; do
echo "$REPO"
done
}
function fetch_starred_repos {
for SHORTNAME in $(list_starred_repos); do
UN="$(echo $SHORTNAME | cut -d'/' -f1)"
if [[ ! -d "dl/$SHORTNAME" ]]; then
if [[ ! -d "dl/$UN" ]]; then
mkdir -p dl/$UN
fi
git clone https://github.com/$SHORTNAME dl/$SHORTNAME
fi
done
}
fetch_starred_repos