Add scripts/fix-gitea-remotes.sh
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
#!/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"
|
||||||
Reference in New Issue
Block a user