Эх сурвалжийг харах

fix(tool-moyu): 显式传 -c 视为彩色意图, 绕过 TTY 检测

- 新增 EXPLICIT_COLOR 标志: -c/--color-ratio 分支置 1, 独立于默认值
- COLOR 检测纳入该标志: 显式 -c 即使非 TTY 也 COLOR=1
- 默认值(35)不触发强制, 非 TTY 默认仍无色; NO_COLOR 仍可压制显式意图
- 实测: 管道 -c 100 全彩 / 默认无色 / NO_COLOR=1 -c 100 无色
b 1 сар өмнө
parent
commit
2f57615614
1 өөрчлөгдсөн 5 нэмэгдсэн , 2 устгасан
  1. 5 2
      tool-moyu.sh

+ 5 - 2
tool-moyu.sh

@@ -27,6 +27,7 @@ DELAY_MS=0   # 0 = 随机 80-400
 TYPE_EFFECT=0
 SILENT=0
 COLOR_RATIO=35 # 0-100, 命中语义的行的实际上色概率(降彩色密度)
+EXPLICIT_COLOR=0 # 显式传 -c 时置 1, 视为显式彩色意图
 
 show_usage() {
 	sed -n '1,24p' "$0"
@@ -59,6 +60,7 @@ while [ $# -gt 0 ]; do
 			;;
 		esac
 		[ "$COLOR_RATIO" -gt 100 ] && { echo "color ratio must be 0-100" >&2; exit 1; }
+		EXPLICIT_COLOR=1
 		shift 2
 		;;
 	--help | -h) show_usage ;;
@@ -70,10 +72,11 @@ while [ $# -gt 0 ]; do
 	esac
 done
 
-# ---- 颜色自动检测:仅 TTY 或 FORCE_COLOR=1 才上色;NO_COLOR 显式禁用 ----
+# ---- 颜色自动检测:TTY / FORCE_COLOR=1 / 显式传 -c 才上色;NO_COLOR 显式禁用 ----
 # 文件模式不上色(见 run_once),此处仅决定随机内容是否套用 ANSI 主题色
+# 默认值(35)不触发强制, 仅显式传 -c 视为用户想要彩色(即使非 TTY)
 COLOR=0
-if [ -z "${NO_COLOR:-}" ] && { [ "${FORCE_COLOR:-0}" = "1" ] || [ -t 1 ]; }; then
+if [ -z "${NO_COLOR:-}" ] && { [ "${FORCE_COLOR:-0}" = "1" ] || [ -t 1 ] || [ "$EXPLICIT_COLOR" = "1" ]; }; then
 	COLOR=1
 fi