#!/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 자동 생성)"