This commit is contained in:
2026-05-14 16:19:15 +03:00
parent 4ce98d0ff1
commit 8ae59e40b2
8 changed files with 349 additions and 48 deletions

71
packaging/install.sh Normal file
View File

@@ -0,0 +1,71 @@
#!/usr/bin/env sh
set -eu
PYTHON_BIN="${PYTHON:-python3}"
INSTALL_ROOT="${FLOW_INSTALL_ROOT:-$HOME/.local/share/flow}"
BIN_DIR="${FLOW_BIN_DIR:-$HOME/.local/bin}"
VENV_DIR="$INSTALL_ROOT/venv"
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
WHEELHOUSE="$SCRIPT_DIR/wheelhouse"
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
echo "python3 is required. Set PYTHON=/path/to/python3 to override." >&2
exit 1
fi
if ! "$PYTHON_BIN" -m venv --help >/dev/null 2>&1; then
echo "python3 was built without the venv module. Install Python's venv package." >&2
exit 1
fi
if ! "$PYTHON_BIN" -m pip --version >/dev/null 2>&1; then
echo "python3 pip module is required. Install pip for the selected python." >&2
exit 1
fi
if [ ! -d "$WHEELHOUSE" ]; then
echo "wheelhouse not found: $WHEELHOUSE" >&2
exit 1
fi
FLOW_WHEELS_COUNT=0
FLOW_WHEEL=""
for candidate in "$WHEELHOUSE"/flow-*.whl; do
if [ -f "$candidate" ]; then
FLOW_WHEELS_COUNT=$((FLOW_WHEELS_COUNT + 1))
if [ -z "$FLOW_WHEEL" ]; then
FLOW_WHEEL="$candidate"
fi
fi
done
if [ "$FLOW_WHEELS_COUNT" -eq 0 ]; then
echo "flow wheel not found in $WHEELHOUSE" >&2
exit 1
fi
if [ "$FLOW_WHEELS_COUNT" -gt 1 ]; then
echo "multiple flow wheels found in $WHEELHOUSE. Ensure exactly one release wheel is present." >&2
exit 1
fi
mkdir -p "$INSTALL_ROOT"
"$PYTHON_BIN" -m venv "$VENV_DIR"
if ! "$VENV_DIR/bin/python" -m pip --version >/dev/null 2>&1; then
echo "Created venv does not expose pip. Ensure Python's ensurepip is available." >&2
exit 1
fi
"$VENV_DIR/bin/python" -m pip install --no-cache-dir --upgrade "$FLOW_WHEEL"
mkdir -p "$BIN_DIR"
cat > "$BIN_DIR/flow" <<EOF
#!/usr/bin/env sh
exec "$VENV_DIR/bin/flow" "\$@"
EOF
chmod 755 "$BIN_DIR/flow"
echo "Installed flow to $BIN_DIR/flow"
echo "Run: $BIN_DIR/flow --version"