#!/usr/bin/env bash set -euo pipefail # CI helper: resolve starter placeholders for staging. # Called from .gitea/workflows/deploy.yml (before validate/build). # Keeps placeholders in git (template), patches CI workspace only (.env + api/config.yml). # # Detection: PROJECT_NAME=__PROJECT_NAME__ or TIBI_NAMESPACE=__TIBI_NAMESPACE__ # Real projects: no-op (already concrete values). # shellcheck disable=SC1091 set -o allexport # shellcheck disable=SC1091 . ./.env 2>/dev/null || true set +o allexport is_starter="false" if [ "${PROJECT_NAME:-}" = "__PROJECT_NAME__" ]; then is_starter="true" fi if [ "${TIBI_NAMESPACE:-}" = "__TIBI_NAMESPACE__" ]; then is_starter="true" fi if [ "${is_starter}" != "true" ]; then echo "ci-starter-defaults: real project (PROJECT_NAME=${PROJECT_NAME:-?}), nothing to do." exit 0 fi echo "ci-starter-defaults: starter detected, patching CI workspace only (.env + api/config.yml)." PROJECT_NAME="tibi-svelte-starter" TIBI_NAMESPACE="tibi-svelte-starter" SENTRY_PROJECT="tibi-svelte-starter" STAGING_URL="https://dev-tibi-svelte-starter.staging.testversion.online" CODING_URL="https://tibi-svelte-starter.code.testversion.online" CODING_TIBIADMIN_URL="https://tibi-svelte-starter-tibiadmin.code.testversion.online" # Build uses LIVE_URL as originURL/PREVIEW_URL base — point it at staging for the starter LIVE_URL="${STAGING_URL}" # Staging never runs with mock data (build-time flag __MOCK__) MOCK="0" patch_env() { key="$1" val="$2" if grep -q "^${key}=" .env; then sed -i 's#^'"${key}"'=.*#'"${key}"'='"${val}"'#g' .env else printf '%s=%s\n' "${key}" "${val}" >> .env fi } patch_env "PROJECT_NAME" "${PROJECT_NAME}" patch_env "TIBI_NAMESPACE" "${TIBI_NAMESPACE}" patch_env "SENTRY_PROJECT" "${SENTRY_PROJECT}" patch_env "STAGING_URL" "${STAGING_URL}" patch_env "CODING_URL" "${CODING_URL}" patch_env "CODING_TIBIADMIN_URL" "${CODING_TIBIADMIN_URL}" patch_env "LIVE_URL" "${LIVE_URL}" patch_env "MOCK" "${MOCK}" # tibi-server reads the namespace from api/config.yml (not .env) — # without this the staged api/ still carries __TIBI_NAMESPACE__ and staging reports "project not found". if [ -f api/config.yml ]; then sed -i 's#^namespace:.*#namespace: '"${TIBI_NAMESPACE}"'#g' api/config.yml echo "______ api/config.yml (namespace) ______" head -3 api/config.yml fi # Apache fallback (unused in staging docker setup, kept consistent) if [ -f frontend/.htaccess ]; then sed -i 's#__TIBI_NAMESPACE__#'"${TIBI_NAMESPACE}"'#g' frontend/.htaccess || true fi echo "______ .env (starter-resolved) ______" cat .env