#!/usr/bin/env bash set -euo pipefail PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BUNDLE_NAME="${BUNDLE_NAME:-store_dwell_alert_bundle}" BUILD_DATE="${BUILD_DATE:-$(date +%F)}" DIST_DIR="${PROJECT_DIR}/dist" STAGE_DIR="${DIST_DIR}/${BUNDLE_NAME}" ARCHIVE_PATH="${DIST_DIR}/${BUNDLE_NAME}_${BUILD_DATE}.tar.gz" WHEELHOUSE_SOURCE="${WHEELHOUSE_SOURCE:-${PROJECT_DIR}/wheelhouse}" WEIGHTS_SOURCE="${WEIGHTS_SOURCE:-${PROJECT_DIR}/weights/yolo11n.pt}" require_path() { local target="$1" if [[ ! -e "${target}" ]]; then echo "Missing required path: ${target}" >&2 exit 1 fi } require_path "${PROJECT_DIR}/app" require_path "${PROJECT_DIR}/config/config.example.yaml" require_path "${PROJECT_DIR}/deploy/store-dwell-alert.service.tpl" require_path "${PROJECT_DIR}/requirements.txt" require_path "${PROJECT_DIR}/requirements.lock.txt" require_path "${PROJECT_DIR}/README.md" require_path "${PROJECT_DIR}/README_zh.md" require_path "${PROJECT_DIR}/scripts/install.sh" require_path "${PROJECT_DIR}/scripts/run.sh" require_path "${PROJECT_DIR}/scripts/install_service.sh" require_path "${WHEELHOUSE_SOURCE}" require_path "${WEIGHTS_SOURCE}" rm -rf "${STAGE_DIR}" mkdir -p \ "${STAGE_DIR}/config" \ "${STAGE_DIR}/data/runtime" \ "${STAGE_DIR}/data/staff_gallery" \ "${STAGE_DIR}/deploy" \ "${STAGE_DIR}/logs" \ "${STAGE_DIR}/scripts" \ "${STAGE_DIR}/weights" cp -R "${PROJECT_DIR}/app" "${STAGE_DIR}/app" cp "${PROJECT_DIR}/README.md" "${STAGE_DIR}/README.md" cp "${PROJECT_DIR}/README_zh.md" "${STAGE_DIR}/README_zh.md" cp "${PROJECT_DIR}/requirements.txt" "${STAGE_DIR}/requirements.txt" cp "${PROJECT_DIR}/requirements.lock.txt" "${STAGE_DIR}/requirements.lock.txt" cp "${PROJECT_DIR}/config/config.example.yaml" "${STAGE_DIR}/config/config.example.yaml" cp "${PROJECT_DIR}/deploy/store-dwell-alert.service.tpl" "${STAGE_DIR}/deploy/store-dwell-alert.service.tpl" cp "${PROJECT_DIR}/scripts/install.sh" "${STAGE_DIR}/scripts/install.sh" cp "${PROJECT_DIR}/scripts/run.sh" "${STAGE_DIR}/scripts/run.sh" cp "${PROJECT_DIR}/scripts/install_service.sh" "${STAGE_DIR}/scripts/install_service.sh" cp "${WEIGHTS_SOURCE}" "${STAGE_DIR}/weights/yolo11n.pt" cp -R "${WHEELHOUSE_SOURCE}" "${STAGE_DIR}/wheelhouse" chmod +x \ "${STAGE_DIR}/scripts/install.sh" \ "${STAGE_DIR}/scripts/run.sh" \ "${STAGE_DIR}/scripts/install_service.sh" rm -f "${ARCHIVE_PATH}" tar -czf "${ARCHIVE_PATH}" -C "${DIST_DIR}" "${BUNDLE_NAME}" echo "Bundle created: ${ARCHIVE_PATH}"