#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=lib/common.sh source "${SCRIPT_DIR}/lib/common.sh" usage() { cat >&2 <<'EOF' Usage: rename.sh EOF exit 1 } [[ $# -eq 2 ]] || usage OLD="$1" NEW="$2" load_config log_info "改名 ${GITEA_USER}/${OLD} → ${GITEA_USER}/${NEW}" gitea_api PATCH "/repos/${GITEA_USER}/${OLD}" "{\"name\":\"${NEW}\"}" case "$HTTP_CODE" in 200|201) log_ok "改名完成" ;; 404) log_err "找不到 repo:${GITEA_USER}/${OLD}"; exit 1 ;; 422) log_err "新名稱可能已被使用或無效"; cat "$GITEA_API_RESP_FILE" >&2; echo "" >&2; exit 1 ;; *) log_err "改名失敗 (HTTP ${HTTP_CODE})" { cat "$GITEA_API_RESP_FILE"; echo ""; } >&2 exit 1 ;; esac # 若 cwd 的 origin 指到舊 repo,自動更新 if CURR="$(infer_repo_from_cwd 2>/dev/null)"; then if [[ "$CURR" == "${GITEA_USER}/${OLD}" ]]; then NEW_CLEAN_URL="${GITEA_URL}/${GITEA_USER}/${NEW}.git" git remote set-url origin "$NEW_CLEAN_URL" log_ok "cwd 的 origin 已更新為 ${NEW_CLEAN_URL}" fi fi NEW_WEB_URL="${GITEA_URL}/${GITEA_USER}/${NEW}" log_done "完成" echo "$NEW_WEB_URL"