Files
appfactory-tools/scripts/fix-gitea-remotes.sh
T
2026-06-15 07:25:13 +00:00

67 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
CONFIG_FILE="/opt/appfactory/config/appfactory.env"
if [ -f "$CONFIG_FILE" ]; then
set -a
# shellcheck disable=SC1090
source "$CONFIG_FILE"
set +a
else
echo "ERROR: Missing config file: $CONFIG_FILE"
exit 1
fi
APPFACTORY_DIR="${APPFACTORY_DIR:-/opt/appfactory}"
WORKSPACE_DIR="${WORKSPACE_DIR:-$APPFACTORY_DIR/workspace}"
GITEA_ORG="${GITEA_ORG:-appfactory}"
GITEA_PUBLIC_URL="${GITEA_PUBLIC_URL:-${GITEA_URL:-}}"
if [ -z "$GITEA_PUBLIC_URL" ]; then
echo "ERROR: GITEA_URL or GITEA_PUBLIC_URL is not configured"
exit 1
fi
GITEA_PUBLIC_URL="${GITEA_PUBLIC_URL%/}"
echo "Fixing Gitea remotes"
echo "Workspace: $WORKSPACE_DIR"
echo "Target Gitea URL: $GITEA_PUBLIC_URL"
echo "Org: $GITEA_ORG"
echo
if [ ! -d "$WORKSPACE_DIR" ]; then
echo "ERROR: Workspace directory not found: $WORKSPACE_DIR"
exit 1
fi
find "$WORKSPACE_DIR" -mindepth 2 -maxdepth 2 -type d -name ".git" | sort | while read -r git_dir; do
repo_dir="$(dirname "$git_dir")"
repo_name="$(basename "$repo_dir")"
git config --global --add safe.directory "$repo_dir" >/dev/null 2>&1 || true
current_url="$(git -C "$repo_dir" remote get-url origin 2>/dev/null || true)"
if [ -z "$current_url" ]; then
echo "SKIP: $repo_name has no origin remote"
continue
fi
new_url="$GITEA_PUBLIC_URL/$GITEA_ORG/$repo_name.git"
if [ "$current_url" = "$new_url" ]; then
echo "OK: $repo_name -> $current_url"
continue
fi
echo "FIX: $repo_name"
echo " old: $current_url"
echo " new: $new_url"
git -C "$repo_dir" remote set-url origin "$new_url"
done
echo
echo "DONE"