启动工作台.command 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/bin/bash
  2. # 门店检测工作台 —— macOS / Linux 启动器
  3. # 用法:
  4. # Finder 里双击本文件即可启动
  5. # 终端:./启动工作台.command [端口] [--local] [--no-open]
  6. # 端口默认 8787
  7. # --local 只允许本机访问(默认开放给同一局域网)
  8. # --no-open 启动后不自动打开浏览器
  9. cd "$(dirname "$0")" || exit 1
  10. # ---- 找 Python 3.7+ ----
  11. PY=""
  12. for c in python3 python; do
  13. if command -v "$c" >/dev/null 2>&1; then
  14. if "$c" -c 'import sys; sys.exit(0 if sys.version_info >= (3, 7) else 1)' >/dev/null 2>&1; then
  15. PY="$c"
  16. break
  17. fi
  18. fi
  19. done
  20. if [ -z "$PY" ]; then
  21. echo "✗ 没找到 Python 3.7 或更高版本。"
  22. echo ""
  23. echo " 安装方式(任选一种):"
  24. echo " 1) 到 https://www.python.org/downloads/ 下载安装包"
  25. echo " 2) 装了 Homebrew 的话:brew install python"
  26. echo ""
  27. read -r -p "按回车关闭窗口…" _
  28. exit 1
  29. fi
  30. # ---- 解析参数:端口 + 透传选项 ----
  31. PORT=8787
  32. PASSTHRU=()
  33. OPEN=1
  34. for a in "$@"; do
  35. case "$a" in
  36. --no-open) OPEN=0 ;;
  37. --local) PASSTHRU+=("$a") ;;
  38. --*) ;;
  39. *) PORT="$a" ;;
  40. esac
  41. done
  42. if [ "$OPEN" = "1" ]; then
  43. PASSTHRU+=("--open")
  44. fi
  45. # ---- 端口占用检查 ----
  46. if command -v lsof >/dev/null 2>&1 && lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
  47. echo "✗ 端口 $PORT 已被占用,可能工作台已经在运行。"
  48. echo " 先试试打开:http://127.0.0.1:$PORT"
  49. echo " 要换端口:./启动工作台.command 9000"
  50. echo ""
  51. read -r -p "按回车关闭窗口…" _
  52. exit 1
  53. fi
  54. echo "Python:$("$PY" --version 2>&1) ($(command -v "$PY"))"
  55. echo ""
  56. exec "$PY" -u backend/server.py --port "$PORT" "${PASSTHRU[@]}"