ElfOS/configs/auto_clone.sh
2025-01-10 09:06:29 +01:00

43 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
token="$1"
page=1
project_dir="$HOME/projects"
base_url="https://gitea.finnvanreenen.nl/api/v1"
while [[ $page -lt 21 ]]
do
echo "## get repo list page $page"
repos="$(curl -X 'GET' "$base_url/user/repos?page=$page&token=$token" -H 'accept: application/json')"
login="$(echo "$repos" | sed -e 's/^.*"login":"\([^"]*\)".*$/\1/')"
if [[ "$repos" != "[]" ]]
then
for repo in $(echo "$repos" | sed -e 's/^\[{//' -e 's/}]$//' -e 's/},{/\n/g' -e 's/%/%p/g' -e 's/ /%20/g')
do
repo_json="$(echo "$repo" | sed -e 's/%20/ /g' -e 's/%p/%/g')"
full_name="$(echo "$repo_json" | sed -e 's/^.*"full_name":"\([^"]*\)".*$/\1/')"
ssh_url="$(echo "$repo_json" | sed -e 's/^.*"ssh_url":"\([^"]*\)".*$/\1/')"
clone_url="$(echo "$repo_json" | sed -e 's/^.*"clone_url":"\([^"]*\)".*$/\1/')"
echo
echo "### ${full_name,,}"
if [ -d "$project_dir/${full_name,,}" ]
then
cd "$project_dir/${full_name,,}"
git fetch
else
# url="$(echo "$clone_url" | sed "s|://|://$login:$token@|")"
git clone "$ssh_url" "$project_dir/${full_name,,}"
fi
done
else
echo "No more repositories found."
page=999
fi
page=$(( $page + 1 ))
done