Files
ChatApp/scripts/prod/push-edge-function.sh
2026-04-18 23:11:35 +02:00

45 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Deploy a Supabase Edge Function to the prod self-hosted stack.
# Uploads `supabase/functions/<name>/` to
# `${PROD_SUPABASE_DIR}/volumes/functions/<name>/` and restarts the
# edge-runtime container so it picks up the new code.
#
# Usage:
# ./scripts/prod/push-edge-function.sh <function-name>
# ./scripts/prod/push-edge-function.sh mint-livekit-token
set -euo pipefail
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${here}/config.sh"
name="${1:-}"
if [[ -z "${name}" ]]; then
echo "usage: $0 <function-name>" >&2
exit 1
fi
repo_root="$(cd "${here}/../.." && pwd)"
local_dir="${repo_root}/supabase/functions/${name}"
if [[ ! -d "${local_dir}" ]]; then
echo "function dir not found: ${local_dir}" >&2
exit 1
fi
remote_dir="${PROD_SUPABASE_DIR}/volumes/functions/${name}"
echo "syncing ${local_dir}${SSH_HOST}:${remote_dir}"
remote "mkdir -p ${remote_dir}"
# shellcheck disable=SC2086
scp ${SSH_OPTS} -r "${local_dir}/." "${SSH_HOST}:${remote_dir}/"
echo
echo "restarting edge-runtime"
remote "cd ${PROD_SUPABASE_DIR} && docker compose up -d functions"
remote "cd ${PROD_SUPABASE_DIR} && docker compose logs functions --tail=10"
echo
echo "done — function '${name}' deployed."