Files
flutter/scripts/40-mapflow-runtime-config.sh
T
Ruslan Bakiev 6552c915a8
Build and deploy Flutter Web / build (push) Successful in 6m25s
Load Flutter runtime config from Vault
2026-06-24 02:29:46 +07:00

51 lines
1.3 KiB
Bash

#!/bin/sh
set -eu
config_path="/usr/share/nginx/html/config.js"
require_env() {
name="$1"
eval "value=\${$name:-}"
if [ -z "$value" ]; then
echo "$name is required when VAULT_ENABLED=true." >&2
exit 1
fi
}
read_vault_path() {
path="$1"
curl -fsS \
-H "X-Vault-Token: $VAULT_TOKEN" \
"$VAULT_ADDR/v1/$VAULT_KV_MOUNT/data/$path" |
jq -e '.data.data'
}
json_string() {
jq -Rn --arg value "$1" '$value'
}
if [ "${VAULT_ENABLED:-}" = "true" ]; then
require_env VAULT_ADDR
require_env VAULT_TOKEN
require_env VAULT_KV_MOUNT
require_env VAULT_SHARED_PATH
require_env VAULT_PROJECT_PATH
shared_env="$(read_vault_path "$VAULT_SHARED_PATH")"
project_env="$(read_vault_path "$VAULT_PROJECT_PATH")"
runtime_env="$(jq -n --argjson shared "$shared_env" --argjson project "$project_env" '$shared * $project')"
MAPBOX_ACCESS_TOKEN="$(printf '%s' "$runtime_env" | jq -er '.MAPBOX_ACCESS_TOKEN')"
MAPBOX_STYLE="$(printf '%s' "$runtime_env" | jq -r '.MAPBOX_STYLE // "mapbox/standard"')"
else
MAPBOX_ACCESS_TOKEN="${MAPBOX_ACCESS_TOKEN:-}"
MAPBOX_STYLE="${MAPBOX_STYLE:-mapbox/standard}"
fi
cat >"$config_path" <<EOF
window.__MAPFLOW_CONFIG__ = {
mapboxAccessToken: $(json_string "$MAPBOX_ACCESS_TOKEN"),
mapboxStyle: $(json_string "$MAPBOX_STYLE")
};
EOF