#!/bin/bash
cgit="https://cgit.heqnx.com"
mkdir -p repos
repos=$(curl -sSL "${cgit}" | grep -o "" | sed -E "s/^/\1/" | sort -u)
while IFS= read -r repo_path; do
repo_name=$(basename "${repo_path}")
repo_url="${cgit}${repo_path}"
repo_dir="repos/${repo_name}"
printf "%s\n" "[inf] processing ${repo_url}"
if test -d "${repo_dir}"; then
if test -d "${repo_dir}/.git.bak"; then
printf "%s\n" "[inf] restoring .git from .git.bak for ${repo_name}"
mv "${repo_dir}/.git.bak" "${repo_dir}/.git"
fi
printf "%s\n" "[inf] fetching updates for ${repo_name}"
git -C "${repo_dir}" fetch origin
git -C "${repo_dir}" reset --hard origin/HEAD
else
printf "%s\n" "[inf] cloning ${repo_name}"
git -C repos clone "${repo_url}"
fi
if test -d "${repo_dir}/.git"; then
printf "%s\n" "[inf] moving .git to .git.bak for ${repo_name}"
mv "${repo_dir}/.git" "${repo_dir}/.git.bak"
fi
done <<< "${repos}"