#!/bin/sh set -eu ROOT=$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd) if [ "$#" -ne 2 ]; then echo "Usage: $0 ENV_FILE GOOGLE_SERVICES_JSON" >&2 exit 1 fi env_file=$1 client_file=$2 if [ ! -f "$client_file" ]; then echo "Firebase Android configuration does not exist: $client_file" >&2 exit 1 fi package_name=$( awk -F= ' $1 == "ANDROID_APP_LINKS_PACKAGE_NAME" { print substr($0, index($0, "=") + 1) exit } ' "$env_file" ) if [ -z "$package_name" ]; then echo "ANDROID_APP_LINKS_PACKAGE_NAME is missing from the selected environment." >&2 exit 1 fi if ! jq --exit-status --arg package "$package_name" ' [ .client[]? | select(.client_info.android_client_info.package_name == $package) ] as $clients | ($clients | length == 1) and (.project_info.project_id | type == "string" and length > 0) and (.project_info.project_number | type == "string" and length > 0) and ($clients[0].client_info.mobilesdk_app_id | type == "string" and length > 0) and ($clients[0].api_key[0].current_key | type == "string" and length > 0) ' "$client_file" >/dev/null; then echo "Firebase Android configuration does not contain exactly one complete client for package $package_name." >&2 exit 1 fi values_file=$(mktemp "${TMPDIR:-/tmp}/wnh-firebase-android-values.XXXXXX") trap 'rm -f "$values_file"' EXIT HUP INT TERM chmod 600 "$values_file" jq --raw-output --arg package "$package_name" ' ( .client[] | select(.client_info.android_client_info.package_name == $package) ) as $client | "WNH_FIREBASE_APPLICATION_ID=\($client.client_info.mobilesdk_app_id)", "WNH_FIREBASE_API_KEY=\($client.api_key[0].current_key)", "WNH_FIREBASE_PROJECT_ID=\(.project_info.project_id)", "WNH_FIREBASE_GCM_SENDER_ID=\(.project_info.project_number)" ' "$client_file" >"$values_file" "$ROOT/scripts/set-env-values.sh" "$env_file" "$values_file" >/dev/null echo "Public Firebase Android values imported for package $package_name."