#!/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 " 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