dotfiles/private_dot_local/bin/clone-all-gitea-repos.sh

39 lines
1.0 KiB
Bash

#!/usr/bin/env bash
GITEA_HOST=$1
if [ -z "$GITEA_HOST" ] || [ -z "$GITEA_ACCESS_TOKEN" ] ; then
echo "Clones all repos that you have access to into the current directory."
echo "You must set \$GITEA_ACCESS_TOKEN to a value from the gitea interface."
echo "Usage: $0 <gitea_host>"
exit 1
fi
mkdir -p archived
for i in $(curl -s --header "Authorization: token $GITEA_ACCESS_TOKEN" "${GITEA_HOST}/api/v1/user/repos?limit=50" | jq -r 'map(.name + "," + .ssh_url + "," + (.archived | tostring)) | flatten[]') ; do
OLDIFS=$IFS
IFS=','
set -- "$i"
if [ "$3" == "true" ] ; then
if [ -d "$1" ] ; then
echo "Moving $1 into archived/$1..."
mv "$1" archived/
else
if [ -d "archived/$1" ] ; then
echo "Archived repo $1 already exists, skipping."
else
echo "Cloning archived/$1 from $2"
git clone -q "$2" "archived/$1"
fi
fi
else
if [ -d "$1" ] ; then
echo "Repo $1 already exists, skipping."
else
echo "Cloning $1 from $2"
git clone -q "$2"
fi
fi
IFS=$OLDIFS
done