#!/usr/bin/env bash set -euo pipefail # Usage: scripts/build_plugin.sh [VERSION] # - Läuft im Projekt-.venv # - Optional: VERSION (z.B. 0.1.6.4). Wenn gesetzt, wird setup.py gepatcht. # - Baut wheel + sdist und erstellt zusätzlich ein "normales" ZIP der sdist-Struktur. ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" PLUGIN_DIR="$ROOT_DIR/octoprint_tailscale_funnel" DIST_DIR="$PLUGIN_DIR/dist" VENV_DIR="$ROOT_DIR/.venv" VERSION_INPUT="${1:-}" echo "Project root: $ROOT_DIR" echo "Plugin dir: $PLUGIN_DIR" echo "Venv dir: $VENV_DIR" # Ensure venv if [[ ! -x "$VENV_DIR/bin/python" ]]; then echo "Creating venv at $VENV_DIR" python3 -m venv "$VENV_DIR" fi "$VENV_DIR/bin/pip" install -q --upgrade pip setuptools wheel build packaging octoprint_setuptools # Optional: bump version if [[ -n "$VERSION_INPUT" ]]; then echo "Setting version to $VERSION_INPUT" "$VENV_DIR/bin/python" - "$VERSION_INPUT" "$PLUGIN_DIR/setup.py" <<'PY' import sys, re, pathlib ver = sys.argv[1] setup_path = pathlib.Path(sys.argv[2]) text = setup_path.read_text() new_text = re.sub(r'^(plugin_version\s*=\s*")([^"]*)(")', lambda m: m.group(1) + ver + m.group(3), text, flags=re.M) setup_path.write_text(new_text) print("Updated version to", ver) PY fi # Clean dist mkdir -p "$DIST_DIR" rm -f "$DIST_DIR"/* # Build wheel + sdist echo "Building (wheel + sdist)..." "$VENV_DIR/bin/python" -m build --no-isolation "$PLUGIN_DIR" # Create additional plain ZIP from sdist content (flat source zip) SDIST_TGZ=$(ls -1 "$DIST_DIR"/*.tar.gz | tail -n1 || true) if [[ -n "$SDIST_TGZ" ]]; then echo "Creating plain ZIP from sdist: $SDIST_TGZ" TMP_DIR="$(mktemp -d)" tar -xzf "$SDIST_TGZ" -C "$TMP_DIR" SRC_DIR="$(find "$TMP_DIR" -maxdepth 1 -type d -name 'octoprint_tailscale_funnel-*' | head -n1)" if [[ -n "$SRC_DIR" ]]; then ZIP_NAME="$(basename "$SRC_DIR").zip" (cd "$SRC_DIR" && zip -rq "$DIST_DIR/$ZIP_NAME" .) echo "Created: $DIST_DIR/$ZIP_NAME" else echo "WARN: Could not find extracted sdist directory to zip" fi rm -rf "$TMP_DIR" else echo "WARN: No sdist .tar.gz found, skipping plain ZIP creation" fi echo "Artifacts in $DIST_DIR:" ls -lah "$DIST_DIR" #!/usr/bin/env bash set -euo pipefail # Usage: scripts/build_plugin.sh [VERSION] # - Läuft im Projekt-.venv # - Optional: VERSION (z.B. 0.1.6.4). Wenn gesetzt, wird setup.py gepatcht. # - Baut wheel + sdist und erstellt zusätzlich ein "normales" ZIP der sdist-Struktur. ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" PLUGIN_DIR="$ROOT_DIR/octoprint_tailscale_funnel" DIST_DIR="$PLUGIN_DIR/dist" VENV_DIR="$ROOT_DIR/.venv" VERSION_INPUT="${1:-}" echo "Project root: $ROOT_DIR" echo "Plugin dir: $PLUGIN_DIR" echo "Venv dir: $VENV_DIR" # Ensure venv if [[ ! -x "$VENV_DIR/bin/python" ]]; then echo "Creating venv at $VENV_DIR" python3 -m venv "$VENV_DIR" fi "$VENV_DIR/bin/pip" install -q --upgrade pip setuptools wheel build packaging octoprint_setuptools # Optional: bump version if [[ -n "$VERSION_INPUT" ]]; then echo "Setting version to $VERSION_INPUT" "$VENV_DIR/bin/python" - "$VERSION_INPUT" "$PLUGIN_DIR/setup.py" <<'PY' import sys, re, pathlib ver = sys.argv[1] setup_path = pathlib.Path(sys.argv[2]) text = setup_path.read_text() new_text = re.sub(r'^(plugin_version\s*=\s*")([^"]*)(")', lambda m: m.group(1) + ver + m.group(3), text, flags=re.M) setup_path.write_text(new_text) print("Updated version to", ver) PY fi # Clean dist mkdir -p "$DIST_DIR" rm -f "$DIST_DIR"/* # Build wheel + sdist echo "Building (wheel + sdist)..." "$VENV_DIR/bin/python" -m build --no-isolation "$PLUGIN_DIR" # Create additional plain ZIP from sdist content (flat source zip) SDIST_TGZ=$(ls -1 "$DIST_DIR"/*.tar.gz | tail -n1 || true) if [[ -n "$SDIST_TGZ" ]]; then echo "Creating plain ZIP from sdist: $SDIST_TGZ" TMP_DIR="$(mktemp -d)" tar -xzf "$SDIST_TGZ" -C "$TMP_DIR" SRC_DIR="$(find "$TMP_DIR" -maxdepth 1 -type d -name 'octoprint_tailscale_funnel-*' | head -n1)" if [[ -n "$SRC_DIR" ]]; then ZIP_NAME="$(basename "$SRC_DIR").zip" (cd "$SRC_DIR" && zip -rq "$DIST_DIR/$ZIP_NAME" .) echo "Created: $DIST_DIR/$ZIP_NAME" else echo "WARN: Could not find extracted sdist directory to zip" fi rm -rf "$TMP_DIR" else echo "WARN: No sdist .tar.gz found, skipping plain ZIP creation" fi echo "Artifacts in $DIST_DIR:" ls -lah "$DIST_DIR"