46 lines
1.4 KiB
Bash
Executable file
46 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR=$(cd "$(dirname "$0")/../.." && pwd)
|
|
# shellcheck disable=SC1091
|
|
source "$ROOT_DIR/scripts/hetzner/lib.sh"
|
|
load_bootstrap_env
|
|
|
|
resolve_secret_var FORGEJO_ADMIN_PASSWORD required
|
|
|
|
: "${FORGEJO_ROOT_URL:?set FORGEJO_ROOT_URL}"
|
|
: "${FORGEJO_ADMIN_USERNAME:?set FORGEJO_ADMIN_USERNAME}"
|
|
: "${FORGEJO_REPO_OWNER:=$FORGEJO_ADMIN_USERNAME}"
|
|
: "${FORGEJO_REPO_NAME:=$(basename "$ROOT_DIR")}"
|
|
: "${FORGEJO_PUSH_REMOTE_NAME:=forgejo}"
|
|
: "${FORGEJO_PUSH_REF:=HEAD:refs/heads/main}"
|
|
|
|
require git
|
|
|
|
remote_url="${FORGEJO_ROOT_URL%/}/${FORGEJO_REPO_OWNER}/${FORGEJO_REPO_NAME}.git"
|
|
current_remote_url="$(git remote get-url "$FORGEJO_PUSH_REMOTE_NAME" 2>/dev/null || true)"
|
|
if [[ -z "$current_remote_url" ]]; then
|
|
git remote add "$FORGEJO_PUSH_REMOTE_NAME" "$remote_url"
|
|
elif [[ "$current_remote_url" != "$remote_url" ]]; then
|
|
git remote set-url "$FORGEJO_PUSH_REMOTE_NAME" "$remote_url"
|
|
fi
|
|
|
|
askpass_script="$(mktemp)"
|
|
trap 'rm -f "$askpass_script"' EXIT
|
|
cat > "$askpass_script" <<'EOF'
|
|
#!/usr/bin/env sh
|
|
case "$1" in
|
|
*sername*) printf '%s\n' "$FORGEJO_ADMIN_USERNAME" ;;
|
|
*assword*) printf '%s\n' "$FORGEJO_ADMIN_PASSWORD" ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
EOF
|
|
chmod 700 "$askpass_script"
|
|
|
|
GIT_TERMINAL_PROMPT=0 \
|
|
GIT_ASKPASS="$askpass_script" \
|
|
FORGEJO_ADMIN_USERNAME="$FORGEJO_ADMIN_USERNAME" \
|
|
FORGEJO_ADMIN_PASSWORD="$FORGEJO_ADMIN_PASSWORD" \
|
|
git push "$FORGEJO_PUSH_REMOTE_NAME" "$FORGEJO_PUSH_REF"
|
|
|
|
echo "seeded ${remote_url}"
|