| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """命令行交互:议题、是否网络附录、运行前确认。"""
- from __future__ import annotations
- import sys
- def prompt_yes_no(question: str, *, default: bool = True) -> bool:
- """
- 询问 Y/n 或 y/N,回车采用 default。
- 在非 TTY 环境下直接返回 default,避免管道挂住。
- """
- if not sys.stdin.isatty():
- return default
- hint = " [Y/n] " if default else " [y/N] "
- try:
- raw = input(question + hint).strip().lower()
- except EOFError:
- return default
- if raw == "":
- return default
- if raw in ("y", "yes", "是", "好", "确认", "1"):
- return True
- if raw in ("n", "no", "否", "不", "0"):
- return False
- return default
- def prompt_topic(default_topic: str) -> str:
- if not sys.stdin.isatty():
- return default_topic
- try:
- raw = input(
- f"请输入历史议题(直接回车使用示例):\n> ",
- ).strip()
- except EOFError:
- return default_topic
- return raw if raw else default_topic
|