#!/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: archive.sh [--unarchive] [-y|--yes] EOF exit 1 } [[ $# -ge 1 ]] || usage REPO="" ACTION="archive" while [[ $# -gt 0 ]]; do case "$1" in --unarchive) ACTION="unarchive"; shift ;; -y|--yes) GITEA_YES=1; shift ;; -h|--help) usage ;; -*) log_err "未知參數:$1"; usage ;; *) if [[ -z "$REPO" ]]; then REPO="$1"; else log_err "多餘參數:$1"; usage; fi shift ;; esac done [[ -n "$REPO" ]] || usage load_config if [[ "$ACTION" == "archive" ]]; then confirm_destructive "確定要 archive ${GITEA_USER}/${REPO}?" BODY='{"archived":true}' MSG="archived" else confirm_destructive "確定要 unarchive ${GITEA_USER}/${REPO}?" BODY='{"archived":false}' MSG="unarchived" fi log_info "${ACTION} ${GITEA_USER}/${REPO}" gitea_api PATCH "/repos/${GITEA_USER}/${REPO}" "$BODY" case "$HTTP_CODE" in 200|201) log_ok "$MSG" ;; 404) log_err "找不到 repo:${GITEA_USER}/${REPO}"; exit 1 ;; *) log_err "${ACTION} 失敗 (HTTP ${HTTP_CODE})"; { cat "$GITEA_API_RESP_FILE"; echo ""; } >&2; exit 1 ;; esac log_done "完成" echo "${GITEA_URL}/${GITEA_USER}/${REPO}"