#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
echo "==> 检查 Python / tkinter ..."
PYTHON=${PYTHON:-python3}
if ! command -v "$PYTHON" >/dev/null 2>&1; then
echo "错误:找不到 python3,请先安装 Python 3.8+。"; exit 1
fi
"$PYTHON" -c "import tkinter" 2>/dev/null \
|| { echo "错误:未安装 tkinter。Debian/Ubuntu: apt install python3-tk | Fedora: dnf install python3-tkinter"; exit 1; }
version=$("$PYTHON" --version 2>&1)
echo " 使用 $version"
echo "==> 安装 PyArmor(源码加密)+ PyInstaller(打包)..."
"$PYTHON" -m pip install --upgrade pyarmor pyinstaller \
|| "$PYTHON" -m pip install --upgrade pyarmor pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
echo "==> 1) 用 PyArmor 加密源码到 obf/ ..."
PYARMOR=$("$PYTHON" -c "import sys,glob;print([p for p in glob.glob(sys.prefix+'/../*/pyarmor') or glob.glob(sys.prefix+'/bin/pyarmor')][0])" 2>/dev/null || echo pyarmor)
"$PYTHON" -m pyarmor gen -O obf tcp_debug_tool.py tcp_utils.py base_tab.py client_tab.py server_tab.py app.py
echo "==> 2) 打包 Linux 二进制(目录方式)..."
"$PYTHON" -m PyInstaller --name pytcper \
--add-data "obf:obf" \
--paths obf \
--windowed \
--clean \
tcp_debug_tool.py
echo "==> 3) 打包单文件 Linux 二进制(分发用)..."
"$PYTHON" -m PyInstaller --onefile --name pytcper \
--add-data "obf:obf" \
--paths obf \
--windowed \
--clean \
tcp_debug_tool.py
echo "==> 完成。产物:"
echo " build/pytcper/ 目录方式(直接运行 ./build/pytcper/pytcper)"
echo " dist-linux/pytcper 单文件(分发给其它 Linux 机器直接运行)"
echo "==> 运行验证(后台拉起 GUI,3 秒后结束):"
./build/pytcper/pytcper & PID=$!
sleep 3
if kill -0 "$PID" 2>/dev/null; then
echo "OK:二进制正常进入 GUI 事件循环。"
kill "$PID" 2>/dev/null || true
else
echo "警告:二进制未能持续运行,请查看上方报错。"
fi