Initial commit: fork from canti
This commit is contained in:
Executable
+101
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- Configurazione ---
|
||||
DIST_PATH="www" # Solitamente Ionic usa 'www' o 'dist/app-name'
|
||||
APP_NAME="CantiCristiani"
|
||||
|
||||
echo "🚀 Inizio procedura di deploy PWA per: $APP_NAME"
|
||||
|
||||
# 1. Verifica dipendenze
|
||||
if ! [ -x "$(command -v npm)" ]; then
|
||||
echo "❌ Errore: npm non è installato." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1.5 Aggiornamento Versione
|
||||
VERSION=$(date +'%Y.%m.%d.%H%M')
|
||||
echo "export const VERSION = '$VERSION';" > src/app/version.ts
|
||||
echo "🏷️ Versione aggiornata a: $VERSION"
|
||||
|
||||
# --- Caricamento variabili d'ambiente ---
|
||||
if [ -f .env ]; then
|
||||
export $(grep -v '^#' .env | xargs)
|
||||
fi
|
||||
|
||||
# --- Configurazione Email e API Parametriche ---
|
||||
node -e "
|
||||
const fs = require('fs');
|
||||
const envEmail = process.env.CONTACT_EMAIL || 'info@canticristiani.it';
|
||||
const apiUser = process.env.API_AUTH_USER || 'canti';
|
||||
const apiPass = process.env.API_AUTH_PASS || 'antani2026';
|
||||
['src/environments/environment.ts', 'src/environments/environment.prod.ts'].forEach(file => {
|
||||
if (fs.existsSync(file)) {
|
||||
let content = fs.readFileSync(file, 'utf8');
|
||||
content = content.replace(/contactEmail:\s*'[^']*'/g, \`contactEmail: '\${envEmail}'\`);
|
||||
content = content.replace(/apiAuthUser:\s*'[^']*'/g, \`apiAuthUser: '\${apiUser}'\`);
|
||||
content = content.replace(/apiAuthPass:\s*'[^']*'/g, \`apiAuthPass: '\${apiPass}'\`);
|
||||
fs.writeFileSync(file, content, 'utf8');
|
||||
console.log(\`📧 Aggiornate variabili di ambiente in \${file}\`);
|
||||
}
|
||||
});
|
||||
"
|
||||
|
||||
# 2. Build dell'applicazione
|
||||
echo "📦 Compilazione in corso (Production Build)..."
|
||||
if ! npm run build -- --configuration=production --base-href=/; then
|
||||
echo "❌ Errore: La compilazione è fallita. Controlla gli errori sopra."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verifico se la cartella www esiste (Ionic/Angular)
|
||||
if [ ! -d "www" ]; then
|
||||
# Se non c'è www, cerco in dist/
|
||||
DIST_PATH=$(ls -d dist/*/ 2>/dev/null | head -n 1)
|
||||
if [ -z "$DIST_PATH" ]; then
|
||||
echo "❌ Errore: Cartella di build non trovata. Controlla il comando 'npm run build'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✅ Build completata con successo in: $DIST_PATH"
|
||||
|
||||
# --- Genera version.json per il polling PWA ---
|
||||
BUILD_TIMESTAMP=$(date +%s)000
|
||||
echo "{\"version\":\"$VERSION\",\"buildTime\":$BUILD_TIMESTAMP}" > www/version.json
|
||||
echo "📄 Generato version.json: v$VERSION (timestamp: $BUILD_TIMESTAMP)"
|
||||
|
||||
# 2.5 In locale usiamo la root
|
||||
echo "📁 Build pronta nella root..."
|
||||
# Nessuna sottocartella ionic necessaria in locale
|
||||
|
||||
# Nessun redirect necessario in locale
|
||||
|
||||
# 3. Recupero IP locale per connessione da cellulare
|
||||
IP_ADDRESS=$(ipconfig getifaddr en0 || ipconfig getifaddr en1 || hostname -I | awk '{print $1}')
|
||||
|
||||
if [ -z "$IP_ADDRESS" ]; then
|
||||
IP_ADDRESS="localhost"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "--------------------------------------------------------"
|
||||
echo "📱 INSTALLAZIONE SU CELLULARE:"
|
||||
echo "1. Assicurati che il cellulare sia sulla stessa rete Wi-Fi."
|
||||
echo "2. Apri il browser (Chrome su Android, Safari su iOS)."
|
||||
echo "3. Vai all'indirizzo: http://\$IP_ADDRESS:8080/"
|
||||
echo " ⚠️ NOTA: Per usare il MICROFONO su cellulare, i browser richiedono HTTPS."
|
||||
echo " Puoi usare uno strumento come 'ngrok' o 'local-ssl-proxy' per testarlo con HTTPS."
|
||||
echo "4. Una volta caricata l'app:"
|
||||
echo " - Android: Clicca sui 3 puntini -> 'Installa app' o 'Aggiungi a home'."
|
||||
echo " - iOS: Clicca l'icona 'Condividi' (quadrato con freccia) -> 'Aggiungi a schermata Home'."
|
||||
echo "--------------------------------------------------------"
|
||||
echo ""
|
||||
|
||||
# 4. Avvio server locale per test immediato
|
||||
echo "🌐 Liberazione porta 8080 (se occupata)..."
|
||||
lsof -ti:8080 | xargs kill -9 2>/dev/null || true
|
||||
|
||||
echo "🌐 Avvio server di distribuzione su http://$IP_ADDRESS:8080/ ..."
|
||||
echo "premi CTRL+C per fermare il server."
|
||||
|
||||
npx http-server "$DIST_PATH" -p 8080 -c-1 --proxy "http://localhost:8080?"
|
||||
Reference in New Issue
Block a user