File size: 1,714 Bytes
dae60e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env bash
set -euo pipefail

source scripts/_env.sh

SERVICE="${1:-modal_apps/receipt_vlm_service.py}"

case "$SERVICE" in
  modal_apps/receipt_vlm_service.py)
    APP_NAME="${2:-dukaan-saathi-receipt-vlm}"
    FUNCTION_NAME="${3:-api}"
    ROUTE="${4:-/extract}"
    ENV_VAR="${5:-MODAL_RECEIPT_ENDPOINT}"
    ALSO_ARGS=(--also "MINICPM_RECEIPT_ENDPOINT")
    ;;
  modal_apps/speech_asr_service.py)
    APP_NAME="${2:-dukaan-saathi-speech-asr}"
    FUNCTION_NAME="${3:-transcribe}"
    ROUTE="${4:-}"
    ENV_VAR="${5:-MODAL_SPEECH_ENDPOINT}"
    ALSO_ARGS=(--also "SPEECH_ASR_ENDPOINT")
    ;;
  modal_apps/receipt_llm_service.py)
    APP_NAME="${2:-dukaan-saathi-receipt-llm}"
    FUNCTION_NAME="${3:-api}"
    ROUTE="${4:-/parse}"
    ENV_VAR="${5:-MODAL_RECEIPT_LLM_ENDPOINT}"
    ALSO_ARGS=(--also "MODAL_RECEIPT_PARSER_ENDPOINT")
    ;;
  modal_apps/command_nlu_service.py)
    APP_NAME="${2:-dukaan-saathi-command-nlu}"
    FUNCTION_NAME="${3:-extract}"
    ROUTE="${4:-}"
    ENV_VAR="${5:-MODAL_NLU_ENDPOINT}"
    ALSO_ARGS=()
    ;;
  *)
    APP_NAME="${2:?Usage: scripts/modal_deploy.sh <service> <app-name> <function-name> [route] [env-var]}"
    FUNCTION_NAME="${3:?Usage: scripts/modal_deploy.sh <service> <app-name> <function-name> [route] [env-var]}"
    ROUTE="${4:-}"
    ENV_VAR="${5:-MODAL_ENDPOINT}"
    ALSO_ARGS=()
    ;;
esac

echo "Deploying Modal service: $SERVICE"
uv run modal deploy "$SERVICE"

echo "Writing deployed Modal endpoint to .env..."
uv run python scripts/write_modal_endpoint.py \
  --app "$APP_NAME" \
  --function "$FUNCTION_NAME" \
  --route "$ROUTE" \
  --env-var "$ENV_VAR" \
  "${ALSO_ARGS[@]}"

echo "Done. Current endpoint:"
grep "$ENV_VAR" .env || true