#!/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}"