#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="${PROJECT_DIR:-$(cd "$SCRIPT_DIR/.." && pwd)}" DIST_DIR="$PROJECT_DIR/dist" STAGE_ROOT="$(mktemp -d)" STAGE_DIR="$STAGE_ROOT/whisper-transcript-pipeline" STAMP="$(date +%Y%m%d-%H%M%S)" VERSION="$( python3 - <<'PY' from pathlib import Path import re content = Path("transcript_pipeline.py").read_text(encoding="utf-8") match = re.search(r'^PIPELINE_VERSION = "([^"]+)"$', content, re.M) print(match.group(1) if match else "unknown") PY )" ARCHIVE_NAME="whisper-transcript-pipeline-${VERSION}-portable-${STAMP}.tar.gz" mkdir -p "$DIST_DIR" "$STAGE_DIR" rsync -a \ --exclude '.env' \ --exclude '__pycache__/' \ --exclude '*.pyc' \ --exclude 'archive/' \ --exclude 'pipeline.log' \ --exclude 'pipeline_state.sqlite3' \ --exclude 'launchd.stdout.log' \ --exclude 'launchd.stderr.log' \ --exclude 'dist/' \ "$PROJECT_DIR/" "$STAGE_DIR/" tar -czf "$DIST_DIR/$ARCHIVE_NAME" -C "$STAGE_ROOT" "whisper-transcript-pipeline" rm -rf "$STAGE_ROOT" echo "$DIST_DIR/$ARCHIVE_NAME"