91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
# SPDX-FileCopyrightText: 2025 QinHan
|
||
# SPDX-License-Identifier: MPL-2.0
|
||
import argparse
|
||
import sys # 用于检查命令行参数数量
|
||
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(
|
||
description="DocuTranslate: 一个文档翻译工具。",
|
||
# 更新示例,展示如何使用 host 参数
|
||
epilog="示例:\n"
|
||
" docutranslate -i (启动图形界面,默认本地访问)\n"
|
||
" docutranslate -i --host 0.0.0.0 (允许局域网内其他设备访问)\n"
|
||
" docutranslate -i -p 8081 (指定端口号)\n"
|
||
" docutranslate -i --cors (启用默认的跨域设置)\n",
|
||
formatter_class=argparse.RawDescriptionHelpFormatter
|
||
)
|
||
|
||
parser.add_argument(
|
||
"-i", "--interactive",
|
||
action="store_true",
|
||
help="打开图形化用户界面 (GUI) 并启动后端服务。"
|
||
)
|
||
|
||
# --- 新增 host 参数 ---
|
||
parser.add_argument(
|
||
"--host",
|
||
type=str,
|
||
default=None,
|
||
help="指定服务监听的主机地址。默认为 '127.0.0.1' (仅本地)。若需局域网访问请设为 '0.0.0.0'。"
|
||
)
|
||
# ---------------------
|
||
|
||
parser.add_argument(
|
||
"-p", "--port",
|
||
type=int,
|
||
default=None,
|
||
help="指定服务监听的端口号(默认:8010)。"
|
||
)
|
||
|
||
parser.add_argument(
|
||
"--cors",
|
||
action="store_true",
|
||
help="启用跨域资源共享 (CORS)。如果是前后端分离开发或需跨域调用 API,请开启此选项。"
|
||
)
|
||
|
||
parser.add_argument(
|
||
"--cors-regex",
|
||
type=str,
|
||
default=r"^(https?://.*|null|file://.*)$",
|
||
help="设置 CORS 允许的 Origin 正则表达式。默认为允许所有 HTTP 和 HTTPS 请求。"
|
||
)
|
||
|
||
parser.add_argument(
|
||
"--version",
|
||
action="store_true",
|
||
help="查看版本号。"
|
||
)
|
||
|
||
# 检查是否没有提供任何参数
|
||
if len(sys.argv) == 1:
|
||
print("欢迎使用 DocuTranslate!")
|
||
print("请使用 '-i' 或 '--interactive' 选项来启动图形化界面。")
|
||
print("\n示例:")
|
||
print(" docutranslate -i")
|
||
print(" docutranslate -i --host 0.0.0.0 (局域网共享)")
|
||
print("\n如需查看所有可用选项,请运行:")
|
||
print(" docutranslate --help")
|
||
sys.exit(0)
|
||
|
||
args = parser.parse_args()
|
||
|
||
# 调用核心逻辑
|
||
if args.interactive:
|
||
from docutranslate.app import run_app
|
||
run_app(
|
||
host=args.host,
|
||
port=args.port,
|
||
enable_CORS=args.cors,
|
||
allow_origin_regex=args.cors_regex
|
||
)
|
||
elif args.version:
|
||
from docutranslate import __version__
|
||
print(__version__)
|
||
else:
|
||
parser.print_help()
|
||
sys.exit(1)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |