74 lines
3.3 KiB
Bash
Executable File
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
|