#!/usr/bin/env bash # Preflight: src/lib/proposal/profile.ts contiene dati placeholder? # # profile.ts e' uno SNAPSHOT: finisce dentro proposals.content al momento della # generazione e ci resta. Un placeholder spedito una volta non si corregge piu' # modificando il file — va rigenerato il preventivo. # # exit 0 = pulito · exit 1 = placeholder trovati set -uo pipefail ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd) F="$ROOT/src/lib/proposal/profile.ts" [ -f "$F" ] || { echo "profile.ts non trovato in $F" >&2; exit 1; } # Ogni riga: etichetta|regex. Sono i segni concreti di "da riempire". PATTERNS=( 'testimonianza segnaposto|→ Aggiungere' 'nome cliente finto|"Cliente [0-9]"' 'ruolo generico|role: "Professione"' 'campo da compilare|// → ' 'dominio sbagliato (il brand e iamcavalli.net)|iamcavalli\.com' ) TROVATI=0 for p in "${PATTERNS[@]}"; do ETICHETTA="${p%%|*}"; RE="${p#*|}" N=$(grep -cE "$RE" "$F" || true) if [ "$N" -gt 0 ]; then printf ' ✗ %-48s %s occorrenz%s\n' "$ETICHETTA" "$N" "$([ "$N" = 1 ] && echo a || echo e)" TROVATI=$((TROVATI + N)) fi done if [ "$TROVATI" -gt 0 ]; then cat >&2 <<'MSG' BLOCCO — profile.ts spedisce dati placeholder in ogni preventivo generato. Non si riempiono a occhio: i numeri divulgabili stanno in brand/prove.md, che oggi e' ancora `stato: scheletro-intervista`. Finche' non sono verificati, la mossa giusta non e' inventare — e' non renderizzare il blocco. Regola: ../../../.claude/rules/lingua-e-tono.md — «un numero affermato con sicurezza e mai verificato e' il modo piu' veloce per bruciare la credibilita' che il tono costruisce». MSG exit 1 fi echo " ✓ profile.ts pulito"