File size: 1,958 Bytes
37d26f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
60
61
62
63
#!/usr/bin/env bash
set -euo pipefail

APPLY_CHANGES=false
if [[ "${1:-}" == "--apply" ]]; then
  APPLY_CHANGES=true
fi

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${ROOT_DIR}"

if ! command -v firebase >/dev/null 2>&1; then
  echo "Error: firebase CLI not found."
  exit 1
fi

FIREBASE_PROJECT="$(sed -nE 's/.*"default"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/p' .firebaserc | head -n1)"
if [[ -z "${FIREBASE_PROJECT}" ]]; then
  echo "Error: Could not parse default project from .firebaserc"
  exit 1
fi

FRONTEND_ENV="web_app_pro/frontend/.env"
FRONTEND_PROJECT=""
if [[ -f "${FRONTEND_ENV}" ]]; then
  FRONTEND_PROJECT="$(sed -nE 's/^VITE_FIREBASE_PROJECT_ID=(.*)$/\1/p' "${FRONTEND_ENV}" | tail -n1 | tr -d '"' | xargs)"
fi

echo "Firebase default project (.firebaserc): ${FIREBASE_PROJECT}"
echo "Frontend VITE_FIREBASE_PROJECT_ID: ${FRONTEND_PROJECT:-<missing>}"

if [[ -n "${FRONTEND_PROJECT}" && "${FRONTEND_PROJECT}" != "${FIREBASE_PROJECT}" ]]; then
  echo "Mismatch detected: frontend project ID differs from .firebaserc default."
  echo "Recommendation: align VITE_FIREBASE_PROJECT_ID with ${FIREBASE_PROJECT}."
  exit 2
fi

echo
echo "Checking Firebase access for project ${FIREBASE_PROJECT}..."
firebase firestore:databases:list --project "${FIREBASE_PROJECT}" >/dev/null
echo "Firestore database access: OK"

echo "Listing Firestore indexes (remote):"
firebase firestore:indexes --project "${FIREBASE_PROJECT}" | head -n 50

echo
echo "Local config files used for sync:"
echo "  - firebase.json"
echo "  - firestore.rules"
echo "  - firestore.indexes.json"

if [[ "${APPLY_CHANGES}" == "true" ]]; then
  echo
  echo "Deploying Firestore rules and indexes to ${FIREBASE_PROJECT}..."
  firebase deploy --only firestore:rules,firestore:indexes --project "${FIREBASE_PROJECT}"
  echo "Sync complete."
else
  echo
  echo "Dry check only."
  echo "Run this to apply sync:"
  echo "  ./scripts/check_firebase_sync.sh --apply"
fi