Files
fanuzu/app/firebase/setup-project.sh
T

74 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# FANUZU Firebase 프로젝트 개설 — 별첨 3 B-1 「저희 계정으로 먼저 개설」.
#
# 사전 조건: `firebase login` 을 한 번 해 두어야 합니다(브라우저가 열립니다).
#
# cd firebase && npx firebase login
# ./setup-project.sh
#
# 하는 일
# 1. 프로젝트 개설 (이미 있으면 건너뜁니다)
# 2. Android · iOS 앱 등록
# 3. 설정 파일 두 개를 제자리에 내려받기
# 4. Firestore 규칙·인덱스 배포
#
# **Cloud Functions 배포는 하지 않습니다.** Blaze 요금제 전환이 필요하고(D-10),
# 그건 결제 수단이 걸린 결정이라 발주사 회신 대상입니다.
set -euo pipefail
cd "$(dirname "$0")"
export PATH="$PWD/node_modules/.bin:$PATH"
PROJECT_ID="${FANUZU_PROJECT_ID:-fanuzu-dev-b020d}"
ANDROID_ID="${FANUZU_ANDROID_ID:-kr.co.fanuzu.app}"
IOS_ID="${FANUZU_IOS_ID:-kr.co.fanuzu.app}"
if ! firebase login:list 2>&1 | grep -q '@'; then
echo "먼저 로그인하십시오: npx firebase login" >&2
exit 1
fi
echo "▸ 프로젝트 $PROJECT_ID"
firebase projects:list --json 2>/dev/null | grep -q "\"$PROJECT_ID\"" \
|| firebase projects:create "$PROJECT_ID" --display-name "FANUZU Dev"
echo "▸ Android 앱 $ANDROID_ID"
firebase apps:list ANDROID --project "$PROJECT_ID" --json 2>/dev/null | grep -q "\"packageName\": *\"$ANDROID_ID\"" \
|| firebase apps:create ANDROID "FANUZU Android" \
--package-name "$ANDROID_ID" --project "$PROJECT_ID"
echo "▸ iOS 앱 $IOS_ID"
firebase apps:list IOS --project "$PROJECT_ID" --json 2>/dev/null | grep -q "\"bundleId\": *\"$IOS_ID\"" \
|| firebase apps:create IOS "FANUZU iOS" \
--bundle-id "$IOS_ID" --project "$PROJECT_ID"
echo "▸ 설정 파일 내려받기"
# 앱이 둘 이상(레거시 kr.co.sweech.fancake 잔존)이라 첫 행이 아니라 패키지명으로 고른다.
ANDROID_APP=$(firebase apps:list ANDROID --project "$PROJECT_ID" --json 2>/dev/null \
| python3 -c "import json,sys;print(next(a['appId'] for a in json.load(sys.stdin)['result'] if a.get('packageName')=='$ANDROID_ID'))")
IOS_APP=$(firebase apps:list IOS --project "$PROJECT_ID" --json 2>/dev/null \
| python3 -c "import json,sys;print(next(a['appId'] for a in json.load(sys.stdin)['result'] if a.get('bundleId')=='$IOS_ID'))")
firebase apps:sdkconfig ANDROID "$ANDROID_APP" --project "$PROJECT_ID" \
--out ../android/app/google-services.json
firebase apps:sdkconfig IOS "$IOS_APP" --project "$PROJECT_ID" \
--out ../ios/Runner/GoogleService-Info.plist
echo "▸ Firestore 규칙·인덱스 배포"
firebase deploy --only firestore --project "$PROJECT_ID"
cat <<'DONE'
끝났습니다. 남은 것 둘.
1. Firebase 콘솔에서 Authentication → Sign-in method →
「이메일/비밀번호」와 「Google」을 켜 주십시오. CLI 로는 켤 수 없습니다.
Google 을 켜야 google-services.json 에 oauth_client 가 채워집니다.
2. Android SHA-1 지문 등록도 CLI 에 명령이 없습니다. 콘솔의
프로젝트 설정 → 내 앱 → Android 앱 → 「디지털 지문 추가」로 넣으십시오.
절차와 현재 등록값은 BUILD.md 「Firebase 앱 등록」에 있습니다.
3. Cloud Functions 배포는 Blaze 요금제 전환(D-10) 뒤에 합니다.
설정 파일 두 개는 .gitignore 에 걸려 있어 저장소에 올라가지 않습니다.
DONE