Files

38 lines
927 B
Bash
Raw Permalink Normal View History

2026-01-23 08:55:18 +01:00
#!/bin/bash
REPO_PATH="$1"
HOST_ALIAS=${2:-""} # optional, defaults to domain in remote URL
PROFILE_ALIAS=${3:-"$USER"}
PASSPHRASE=${4:-""}
[ -z "$REPO_PATH" ] && { echo "Usage: $0 /path/to/repo"; exit 1; }
cd "$REPO_PATH" || exit 1
KEY_PATH="$HOME/.ssh/$(basename "$REPO_PATH")_id_ed25519"
ssh-keygen -t ed25519 -f "$KEY_PATH" -C "$(basename "$REPO_PATH")" -N "$PASSPHRASE"
eval "$(ssh-agent -s)"
ssh-add "$KEY_PATH"
REMOTE_URL=$(git remote get-url origin)
# Extract domain from remote URL
if [[ "$REMOTE_URL" =~ ([^/:]+(:[0-9]+)?)[/:].* ]]; then
DOMAIN="${BASH_REMATCH[1]}"
else
echo "Could not parse remote domain. Please update manually."
exit 1
fi
# Use provided host alias if given
HOST_TO_USE=${HOST_ALIAS:-$DOMAIN}
REPO_NAME=$(basename "$REPO_PATH")
git remote set-url origin git@$HOST_TO_USE:$PROFILE_ALIAS/$REPO_NAME.git
echo "Remote URL updated to use SSH key for this repo."
cd -
exit 0