58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Mac/Linux → Windows 배포용 zip 생성 (vendor 포함, .venv 제외)
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
STAMP="$(date +%Y%m%d)"
|
|
OUT="${1:-$ROOT/../juc500-windows-${STAMP}.zip}"
|
|
|
|
if [[ ! -f "$ROOT/vendor/libusb-1.0.dll" ]]; then
|
|
echo "[!] vendor/libusb-1.0.dll 없음" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$ROOT/vendor/wheels/pyusb-1.2.1-py3-none-any.whl" ]]; then
|
|
echo "[!] vendor/wheels 없음" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$ROOT/vendor/tools/zadig.exe" ]]; then
|
|
echo "[!] vendor/tools/zadig.exe 없음 — WinUSB 오프라인 도구. ./scripts/make_offline_windows_update.sh 전에 준비하세요." >&2
|
|
# non-fatal: bundle still usable if peer already has Zadig
|
|
fi
|
|
|
|
echo "=== Windows 배포 zip 생성 ==="
|
|
echo "출력: $OUT"
|
|
|
|
# zip: 프로젝트 루트 내용을 아카이브 루트에 넣음 (juc500/ 접두사 없음)
|
|
rm -f "$OUT"
|
|
(
|
|
cd "$ROOT"
|
|
zip -r -q "$OUT" . \
|
|
-x ".venv/*" \
|
|
-x ".venv-build/*" \
|
|
-x ".venv-build-win/*" \
|
|
-x ".venv-offline-test/*" \
|
|
-x ".git/*" \
|
|
-x "*/__pycache__/*" \
|
|
-x "*.py[cod]" \
|
|
-x "*.egg-info/*" \
|
|
-x "dist/*" \
|
|
-x "dist-windows/*" \
|
|
-x "build/*" \
|
|
-x "juc500-app/node_modules/*" \
|
|
-x "juc500-app/src-tauri/target/*" \
|
|
-x ".DS_Store" \
|
|
-x "*.zip" \
|
|
-x "*.tar.gz" \
|
|
-x ".juc500/*" \
|
|
-x "hub.log"
|
|
)
|
|
|
|
bytes="$(wc -c <"$OUT" | tr -d ' ')"
|
|
echo "완료: $OUT ($bytes bytes)"
|
|
echo ""
|
|
echo "Windows에서:"
|
|
echo " 1) zip 압축 해제 (예: C:\\dev\\juc500)"
|
|
echo " 2) Git Bash: cd /c/dev/juc500 && ./start_win.sh"
|
|
echo " (첫 실행 시 vendor 로 .venv 자동 생성)"
|