148 lines
4.5 KiB
Bash
Executable File
148 lines
4.5 KiB
Bash
Executable File
#!/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
|
|
|
|
if [[ -f "$ROOT_DIR/requirements.txt" ]]; then
|
|
"$VENV_DIR/bin/pip" install -q --upgrade pip
|
|
"$VENV_DIR/bin/pip" install -q -r "$ROOT_DIR/requirements.txt"
|
|
else
|
|
"$VENV_DIR/bin/pip" install -q --upgrade pip setuptools wheel build packaging octoprint_setuptools
|
|
fi
|
|
|
|
# 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"
|
|
|