Files
gitea/tools/write-confirm.sh
T

45 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env sh
# write-confirm.sh — Gitea 寫入前的人工確認。
#
# 為什麼要有這支腳本:wiki 與議題都是對外寫入。先確認,才能避免把
# 錯頁、錯內容、錯標籤直接送出去。
#
# 用法:
# write-confirm.sh <動作> <目標>
#
# 規則:
# - JSC_GITEA_CONFIRM=yes:直接放行。
# - JSC_GITEA_CONFIRM=no:直接拒絕。
# - 互動式執行:要求輸入「確認」。
# - 沒有互動終端:拒絕,避免默默寫出錯資料。
set -eu
action="${1:-}"
target="${2:-}"
[ -n "$action" ] || { echo '[jsc][Gitea][ERR]:缺少動作名稱。' >&2; exit 2; }
[ -n "$target" ] || { echo '[jsc][Gitea][ERR]:缺少目標名稱。' >&2; exit 2; }
case "${JSC_GITEA_CONFIRM:-}" in
yes|YES|1|true|TRUE)
exit 0 ;;
no|NO|0|false|FALSE)
echo "[jsc][Gitea][ERR]:已取消寫入「$target」。" >&2
exit 2 ;;
esac
if [ -t 0 ]; then
printf '[jsc][Gitea] 即將%s「%s」。輸入「確認」繼續:' "$action" "$target" >&2
IFS= read -r answer || exit 2
case "$answer" in
確認)
exit 0 ;;
*)
echo "[jsc][Gitea][ERR]:已取消寫入「$target」。" >&2
exit 2 ;;
esac
fi
echo "[jsc][Gitea][ERR]:寫入「$target」需要先確認;請改用互動式執行,或先設 JSC_GITEA_CONFIRM=yes。" >&2
exit 2