From 77c0ad5e431d8980c5476e109678f7dd056e0d41 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 13 Oct 2025 16:03:21 +0200 Subject: [PATCH] Add Claude Code batch/script integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created comprehensive guide and enhanced sync script for integrating Claude Code into automated workflows: 1. CLAUDE_INTEGRATION.md: - 6 different integration options (CLI, file request, git hooks, GitHub Actions, API) - Detailed examples for each approach - Pros/cons and use case recommendations - Best practices and troubleshooting 2. sync_server_file_enhanced.sh: - Enhanced version of sync_server_file.sh - Automatic MATLAB file change detection - Intelligent module mapping (MATLAB → Python) - Auto-generates formatted request for Claude - Colored output with progress steps - Clipboard integration (xclip) - Editor auto-open option Features: ✅ Detects which Python modules need updating ✅ Creates markdown request with diff preview ✅ Shows affected files and modules ✅ Copies request to clipboard automatically ✅ Provides step-by-step instructions ✅ Commits MATLAB changes with metadata Workflow: 1. Run: ./sync_server_file_enhanced.sh 2. Script syncs MATLAB files from server 3. Auto-detects changes and creates request file 4. Open Claude Code and paste/provide the request 5. Claude updates Python code automatically 6. Validate with validation system Typical usage: ./sync_server_file_enhanced.sh # → Generates CLAUDE_SYNC_REQUEST_YYYYMMDD_HHMMSS.md # → Copy to clipboard or open in editor # → Provide to Claude Code for automatic Python sync 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CLAUDE_INTEGRATION.md | 520 +++++++++++++++++++++++++++++++++++ sync_server_file_enhanced.sh | 373 +++++++++++++++++++++++++ 2 files changed, 893 insertions(+) create mode 100644 CLAUDE_INTEGRATION.md create mode 100755 sync_server_file_enhanced.sh diff --git a/CLAUDE_INTEGRATION.md b/CLAUDE_INTEGRATION.md new file mode 100644 index 0000000..4b5c00c --- /dev/null +++ b/CLAUDE_INTEGRATION.md @@ -0,0 +1,520 @@ +# Integrazione Claude Code in Script Batch + +## Panoramica + +Claude Code può essere integrato in script batch/shell per automatizzare l'aggiornamento del codice Python quando i file MATLAB vengono modificati. + +## Opzioni di Integrazione + +### Opzione 1: Claude Code CLI (se disponibile) + +Se Claude Code ha una CLI: + +```bash +#!/bin/bash + +# Dopo sync MATLAB +CHANGED_FILES=$(git diff --staged --name-only | grep "\.m$") + +if [ ! -z "$CHANGED_FILES" ]; then + echo "File MATLAB modificati rilevati:" + echo "$CHANGED_FILES" + + # Chiama Claude Code + claude-code sync-matlab --files "$CHANGED_FILES" --auto-validate +fi +``` + +### Opzione 2: File di Richiesta + Notifica + +**Script che genera richiesta automatica:** + +```bash +#!/bin/bash +# sync_and_notify.sh + +# 1. Sync MATLAB files +rsync -avzm -e "ssh -p ${REMOTE_PORT}" \ + --include='*/' \ + --include='*.m' \ + --exclude='*' \ + "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_SRC}" "${LOCAL_DST}" + +# 2. Rileva modifiche +cd "${LOCAL_DST}/matlab_func" +git add . +CHANGED_FILES=$(git diff --staged --name-only | grep "\.m$") + +if [ -z "$CHANGED_FILES" ]; then + echo "Nessun file MATLAB modificato" + exit 0 +fi + +# 3. Crea file richiesta per Claude +TIMESTAMP=$(date +"%Y%m%d_%H%M%S") +REQUEST_FILE="/tmp/matlab_sync_request_${TIMESTAMP}.txt" + +cat > "$REQUEST_FILE" </dev/null || echo "Primo commit") +EOF + +echo "==========================================" +echo "File MATLAB modificati rilevati!" +echo "==========================================" +echo "$CHANGED_FILES" +echo "" +echo "Richiesta salvata in: $REQUEST_FILE" +echo "" +echo "Aprire Claude Code e fornire questo file per sincronizzare Python." +echo "==========================================" + +# 4. Commit MATLAB changes +git commit -m "Sync from remote server: $(date +'%Y-%m-%d %H:%M:%S')" + +# 5. Opzionale: copia negli appunti (se disponibile xclip) +if command -v xclip &> /dev/null; then + cat "$REQUEST_FILE" | xclip -selection clipboard + echo "✓ Richiesta copiata negli appunti" +fi + +# 6. Opzionale: apri file in editor +if [ -n "$EDITOR" ]; then + $EDITOR "$REQUEST_FILE" +fi +``` + +### Opzione 3: Git Hook Automatico + +**File: `.git/hooks/post-commit`** + +```bash +#!/bin/bash +# Post-commit hook per notificare modifiche MATLAB + +# Solo se il commit contiene file .m +MATLAB_FILES=$(git diff-tree --no-commit-id --name-only -r HEAD | grep "\.m$") + +if [ -z "$MATLAB_FILES" ]; then + exit 0 +fi + +# Crea notifica +HOOK_LOG="/tmp/matlab_changes_$(date +%Y%m%d).log" + +cat >> "$HOOK_LOG" <> $GITHUB_OUTPUT + echo "count=$(echo "$CHANGED_FILES" | wc -l)" >> $GITHUB_OUTPUT + + - name: Create Issue for Sync + if: steps.changes.outputs.count > 0 + uses: actions/github-script@v6 + with: + script: | + const files = process.env.CHANGED_FILES.split('\n'); + const body = ` + ## 🔄 MATLAB Files Changed - Python Sync Required + + **Date**: ${new Date().toISOString()} + **Commit**: ${{ github.sha }} + + ### Changed Files + ${files.map(f => `- ${f}`).join('\n')} + + ### Action Required + Please update corresponding Python code using Claude Code: + + 1. Open Claude Code + 2. Provide this list of changed files + 3. Run validation after sync + + ### Quick Reference + See [MATLAB_SYNC_GUIDE.md](../blob/main/MATLAB_SYNC_GUIDE.md) for mapping. + `; + + github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: '🔄 MATLAB Sync Required - ' + new Date().toLocaleDateString(), + body: body, + labels: ['matlab-sync', 'python-update'] + }); +``` + +### Opzione 5: Script Interattivo Avanzato + +**File: `sync_with_claude.sh`** + +```bash +#!/bin/bash +# Script di sincronizzazione con richiesta formattata per Claude + +set -e + +# Configurazione +REMOTE_USER="alex" +REMOTE_HOST="80.211.60.65" +REMOTE_PORT="2022" +REMOTE_SRC="/usr/local/matlab_func" +LOCAL_DST="/home/alex/devel/matlab-ase" +PYTHON_DIR="${LOCAL_DST}/matlab_func" + +# Colori per output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE}MATLAB → Python Sync Script${NC}" +echo -e "${BLUE}========================================${NC}" + +# 1. Sync MATLAB files +echo -e "\n${YELLOW}[1/5]${NC} Sincronizzazione file MATLAB da server remoto..." +rsync -avzm -e "ssh -p ${REMOTE_PORT}" \ + --include='*/' \ + --include='*.m' \ + --exclude='*' \ + "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_SRC}" "${LOCAL_DST}" + +if [ $? -ne 0 ]; then + echo -e "${RED}✗ Errore durante sincronizzazione${NC}" + exit 1 +fi + +echo -e "${GREEN}✓ Sincronizzazione completata${NC}" + +# 2. Rileva modifiche +echo -e "\n${YELLOW}[2/5]${NC} Rilevamento modifiche..." +cd "${LOCAL_DST}/matlab_func" + +# Backup dello stato attuale +git stash push -q -m "Pre-sync backup $(date +'%Y%m%d_%H%M%S')" || true + +# Aggiungi file .m +find . -type f -name "*.m" -exec git add {} \; + +# Ottieni lista modifiche +CHANGED_FILES=$(git diff --staged --name-only | grep "\.m$" || echo "") +CHANGED_COUNT=$(echo "$CHANGED_FILES" | grep -v '^$' | wc -l) + +if [ -z "$CHANGED_FILES" ] || [ "$CHANGED_COUNT" -eq 0 ]; then + echo -e "${GREEN}✓ Nessun file MATLAB modificato${NC}" + git stash pop -q 2>/dev/null || true + exit 0 +fi + +echo -e "${GREEN}✓ Rilevati ${CHANGED_COUNT} file modificati${NC}" + +# 3. Analizza tipo di modifiche +echo -e "\n${YELLOW}[3/5]${NC} Analisi modifiche..." + +declare -A module_map +module_map["CalcoloRSN"]="RSN" +module_map["CalcoloTLHR"]="Tilt" +module_map["CalcoloBL"]="Tilt" +module_map["CalcoloPL"]="Tilt" +module_map["CalcoloRL"]="ATD" +module_map["CalcoloLL"]="ATD" +module_map["CalcoloBiax"]="ATD" +module_map["CalcoloStella"]="ATD" +module_map["arot"]="Tilt" +module_map["asse_"]="Tilt" +module_map["database"]="Common" +module_map["carica"]="Common" + +declare -A affected_modules +for file in $CHANGED_FILES; do + basename=$(basename "$file" .m) + for pattern in "${!module_map[@]}"; do + if [[ "$basename" == *"$pattern"* ]]; then + affected_modules[${module_map[$pattern]}]=1 + fi + done +done + +echo "Moduli Python interessati:" +for module in "${!affected_modules[@]}"; do + echo -e " ${BLUE}→${NC} $module" +done + +# 4. Crea richiesta formattata per Claude +echo -e "\n${YELLOW}[4/5]${NC} Generazione richiesta per Claude Code..." + +REQUEST_FILE="${PYTHON_DIR}/SYNC_REQUEST_$(date +%Y%m%d_%H%M%S).md" + +cat > "$REQUEST_FILE" <> "$REQUEST_FILE" +done + +cat >> "$REQUEST_FILE" <> "$REQUEST_FILE" + echo '```matlab' >> "$REQUEST_FILE" + git diff --staged "$file" | head -n 50 >> "$REQUEST_FILE" + echo '```' >> "$REQUEST_FILE" + fi +done + +cat >> "$REQUEST_FILE" < /dev/null; then + cat "$REQUEST_FILE" | xclip -selection clipboard + echo -e "\n${GREEN}✓${NC} Richiesta copiata negli appunti" +fi + +# Opzione per aprire editor +echo -e "\n${BLUE}Premere ENTER per aprire la richiesta in editor...${NC}" +read -r +${EDITOR:-nano} "$REQUEST_FILE" + +echo -e "\n${BLUE}========================================${NC}" +echo -e "${GREEN}Processo completato!${NC}" +echo -e "${BLUE}========================================${NC}" +``` + +### Opzione 6: API Integration (se disponibile) + +```bash +#!/bin/bash +# Integrazione tramite API Claude (ipotetica) + +CLAUDE_API_KEY="your_api_key" +CHANGED_FILES=$(git diff --staged --name-only | grep "\.m$") + +if [ ! -z "$CHANGED_FILES" ]; then + # Crea payload JSON + PAYLOAD=$(jq -n \ + --arg files "$CHANGED_FILES" \ + '{ + action: "sync-matlab", + files: $files, + auto_validate: true, + create_commit: true + }') + + # Chiama API Claude + curl -X POST https://api.claude.ai/v1/code-sync \ + -H "Authorization: Bearer $CLAUDE_API_KEY" \ + -H "Content-Type: application/json" \ + -d "$PAYLOAD" +fi +``` + +## Raccomandazioni + +### Per il Tuo Caso + +Dato il tuo script `sync_server_file.sh`, consiglio: + +**Opzione Migliore: Script Interattivo Avanzato (Opzione 5)** + +Vantaggi: +- ✅ Genera richiesta formattata automaticamente +- ✅ Analizza quali moduli Python sono interessati +- ✅ Mostra diff preview +- ✅ Copia negli appunti per uso immediato +- ✅ Istruzioni chiare per next step + +### Quick Start + +1. Sostituire il tuo `sync_server_file.sh` con `sync_with_claude.sh` +2. Eseguire script +3. Ottenere file markdown formattato con tutte le info +4. Fornire file a Claude Code +5. Claude aggiorna Python automaticamente + +## File di Output Example + +Lo script genera file come questo: + +```markdown +# Richiesta Sincronizzazione MATLAB → Python + +**Data**: 2025-10-13 16:30:00 +**File modificati**: 3 + +## File MATLAB Modificati + +- CalcoloBiax_TuL.m +- CalcoloRSN.m +- arot.m + +## Moduli Python Interessati + +- ATD +- RSN +- Tilt + +## Azione Richiesta + +Aggiornare codice Python... +``` + +Che posso facilmente leggere e processare! + +## Conclusione + +**Risposta**: Sì! Ci sono multiple opzioni: + +1. **Script che genera file di richiesta** (consigliato) +2. **Git hooks** per notifiche automatiche +3. **GitHub Actions** per workflow CI/CD +4. **API calls** (se disponibile CLI Claude) + +La soluzione più pratica per te è lo **script interattivo** che genera una richiesta formattata che poi mi fornisci in Claude Code. + +Vuoi che implementi una di queste soluzioni specificatamente per il tuo caso? diff --git a/sync_server_file_enhanced.sh b/sync_server_file_enhanced.sh new file mode 100755 index 0000000..9fa2b0d --- /dev/null +++ b/sync_server_file_enhanced.sh @@ -0,0 +1,373 @@ +#!/bin/bash +# +# Script migliorato per sincronizzare file .m da server remoto +# e generare richiesta automatica per Claude Code +# +# Basato su: sync_server_file.sh +# Aggiunge: Rilevamento automatico modifiche e generazione richiesta Claude +# + +# Configurazione +REMOTE_USER="alex" +REMOTE_HOST="80.211.60.65" +REMOTE_PORT="2022" +REMOTE_SRC="/usr/local/matlab_func" +LOCAL_DST="/home/alex/devel/matlab-ase" +PYTHON_DIR="${LOCAL_DST}/matlab_func" + +# Colori per output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +BOLD='\033[1m' +NC='\033[0m' # No Color + +# ================================================ +# FUNZIONI UTILITY +# ================================================ + +print_header() { + echo -e "\n${BLUE}${BOLD}========================================${NC}" + echo -e "${BLUE}${BOLD}$1${NC}" + echo -e "${BLUE}${BOLD}========================================${NC}\n" +} + +print_step() { + echo -e "${YELLOW}[Step $1/$2]${NC} $3" +} + +print_success() { + echo -e "${GREEN}✓${NC} $1" +} + +print_error() { + echo -e "${RED}✗${NC} $1" +} + +print_info() { + echo -e "${BLUE}→${NC} $1" +} + +# Mappa file MATLAB → moduli Python +get_affected_module() { + local file=$1 + local basename=$(basename "$file" .m) + + # Mapping patterns + case "$basename" in + CalcoloRSN*|MediaRSN*|ConvRSN*) + echo "RSN" ;; + CalcoloTLHR*|CalcoloBL*|CalcoloPL*|CalcoloKLHR*|MediaTilt*|ConvTilt*) + echo "Tilt" ;; + arot*|asse_a*|asse_b*|qmult*|fqa*) + echo "Tilt" ;; + CalcoloRL*|CalcoloLL*|CalcoloPL*|Calcolo3DEL*|CalcoloCrL*) + echo "ATD" ;; + CalcoloBiax*|corrTuL*|CalcoloStella*) + echo "ATD" ;; + ConvATD*|MediaATD*) + echo "ATD" ;; + database*|carica_parametri*|carica_calibrazione*) + echo "Common" ;; + ValidaTemp*|Despiking*) + echo "Common" ;; + *) + echo "Unknown" ;; + esac +} + +# ================================================ +# MAIN SCRIPT +# ================================================ + +print_header "MATLAB → Python Sync Script with Claude Integration" + +# ------------------------------------------------ +# Step 1: Sincronizzazione MATLAB +# ------------------------------------------------ +print_step 1 6 "Sincronizzazione file MATLAB da server remoto" +echo " Host: ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PORT}" +echo " Source: ${REMOTE_SRC}" +echo " Destination: ${LOCAL_DST}" +echo "" + +rsync -avzm -e "ssh -p ${REMOTE_PORT}" \ + --include='*/' \ + --include='*.m' \ + --exclude='*' \ + "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_SRC}" "${LOCAL_DST}" + +if [ $? -eq 0 ]; then + print_success "Sincronizzazione completata" +else + print_error "Errore durante la sincronizzazione Rsync" + exit 1 +fi + +# ------------------------------------------------ +# Step 2: Rilevamento modifiche +# ------------------------------------------------ +print_step 2 6 "Rilevamento modifiche nei file MATLAB" + +cd "${PYTHON_DIR}" || exit 1 + +# Aggiungi file .m all'area di staging +find "${LOCAL_DST}" -type f -name "*.m" -print0 | xargs -0 git add 2>/dev/null + +# Ottieni lista modifiche +CHANGED_FILES=$(git diff --staged --name-only | grep "\.m$" || echo "") +CHANGED_COUNT=$(echo "$CHANGED_FILES" | grep -v '^$' | wc -l) + +if [ -z "$CHANGED_FILES" ] || [ "$CHANGED_COUNT" -eq 0 ]; then + print_success "Nessun file MATLAB modificato - Sistema già sincronizzato" + echo "" + echo "Nessuna azione richiesta." + exit 0 +fi + +print_success "Rilevati ${CHANGED_COUNT} file modificati" + +# ------------------------------------------------ +# Step 3: Analisi moduli interessati +# ------------------------------------------------ +print_step 3 6 "Analisi moduli Python interessati" + +declare -A affected_modules +for file in $CHANGED_FILES; do + module=$(get_affected_module "$file") + if [ "$module" != "Unknown" ]; then + affected_modules[$module]=1 + fi +done + +echo " Moduli da aggiornare:" +for module in "${!affected_modules[@]}"; do + print_info "$module" +done + +# ------------------------------------------------ +# Step 4: Generazione richiesta per Claude +# ------------------------------------------------ +print_step 4 6 "Generazione richiesta per Claude Code" + +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +REQUEST_FILE="${PYTHON_DIR}/CLAUDE_SYNC_REQUEST_${TIMESTAMP}.md" + +# Crea richiesta formattata +cat > "$REQUEST_FILE" <> "$REQUEST_FILE" + echo " - Files: elaboration.py, conversion.py, averaging.py, db_write.py" >> "$REQUEST_FILE" + ;; + Tilt) + echo "- **Tilt Module** → \`src/tilt/\`" >> "$REQUEST_FILE" + echo " - Files: elaboration.py, conversion.py, averaging.py, geometry.py, db_write.py" >> "$REQUEST_FILE" + ;; + ATD) + echo "- **ATD Module** → \`src/atd/\`" >> "$REQUEST_FILE" + echo " - Files: elaboration.py, conversion.py, averaging.py, db_write.py, star_calculation.py" >> "$REQUEST_FILE" + ;; + Common) + echo "- **Common Module** → \`src/common/\`" >> "$REQUEST_FILE" + echo " - Files: database.py, config.py, validators.py" >> "$REQUEST_FILE" + ;; + esac +done + +cat >> "$REQUEST_FILE" <<'EOF' + +--- + +## 📝 Preview Modifiche (prime 30 righe per file) + +EOF + +for file in $CHANGED_FILES; do + # Ottieni path relativo + rel_path=$(echo "$file" | sed "s|${LOCAL_DST}/||") + + cat >> "$REQUEST_FILE" </dev/null | head -n 30 >> "$REQUEST_FILE" || echo "No diff available" >> "$REQUEST_FILE" + + echo '```' >> "$REQUEST_FILE" +done + +cat >> "$REQUEST_FILE" <<'EOF' + +--- + +## ✅ Azione Richiesta + +Aggiornare il codice Python corrispondente ai file MATLAB modificati sopra. + +### Workflow Suggerito + +1. **Analizzare modifiche MATLAB** + - Leggere i file modificati + - Identificare cambiamenti negli algoritmi + - Verificare nuovi parametri o modifiche formule + +2. **Applicare modifiche Python** + - Aggiornare funzioni Python corrispondenti + - Mantenere coerenza con architettura esistente + - Aggiungere type hints e documentazione + +3. **Validare modifiche** + ```bash + # Test base + python -m src.main CU001 A + + # Validazione completa vs MATLAB + python -m src.validation.cli CU001 A --output validation_report.txt + + # Verifica report + cat validation_report.txt | grep "VALIDATION" + ``` + +4. **Commit e tag** + ```bash + git add src/ + git commit -m "Sync Python from MATLAB changes - $(date +%Y-%m-%d)" + git tag python-sync-$(date +%Y%m%d) + ``` + +--- + +## 📚 Riferimenti + +- **Mapping completo**: [MATLAB_SYNC_GUIDE.md](MATLAB_SYNC_GUIDE.md) +- **Quick reference**: [sync_matlab_changes.md](sync_matlab_changes.md) +- **Validation guide**: [README.md#validation](README.md#validation) + +--- + +## 💡 Note + +- I file MATLAB sono già stati committati nel repository +- Questo è un commit separato che richiede sync Python +- Dopo sync Python, eseguire validazione per verificare equivalenza + +--- + +*File generato automaticamente - Non modificare manualmente* +*Timestamp: $(date +"%Y-%m-%d %H:%M:%S")* + +EOF + +print_success "Richiesta salvata: ${REQUEST_FILE}" + +# ------------------------------------------------ +# Step 5: Commit MATLAB changes +# ------------------------------------------------ +print_step 5 6 "Commit modifiche MATLAB" + +SYNC_DATE=$(date +"%Y-%m-%d %H:%M:%S") +COMMIT_MSG="Sync from remote server: ${SYNC_DATE}" + +git commit -m "${COMMIT_MSG}" -m "Files changed: ${CHANGED_COUNT}" -m "$(echo "$CHANGED_FILES")" 2>/dev/null + +if [ $? -eq 0 ]; then + MATLAB_COMMIT=$(git rev-parse --short HEAD) + print_success "Commit MATLAB completato (${MATLAB_COMMIT})" +else + print_error "Nessuna modifica da committare (potrebbe essere già committato)" + MATLAB_COMMIT="N/A" +fi + +# ------------------------------------------------ +# Step 6: Summary e istruzioni +# ------------------------------------------------ +print_step 6 6 "Preparazione finale" + +# Copia negli appunti se xclip disponibile +CLIPBOARD_COPIED=false +if command -v xclip &> /dev/null; then + cat "$REQUEST_FILE" | xclip -selection clipboard 2>/dev/null && CLIPBOARD_COPIED=true + if [ "$CLIPBOARD_COPIED" = true ]; then + print_success "Richiesta copiata negli appunti" + fi +fi + +# ================================================ +# SUMMARY FINALE +# ================================================ + +print_header "Sincronizzazione Completata" + +echo -e "${BOLD}Status:${NC}" +print_success "File MATLAB sincronizzati: ${CHANGED_COUNT}" +print_success "Commit MATLAB: ${MATLAB_COMMIT}" +print_success "File richiesta Claude: ${REQUEST_FILE}" +[ "$CLIPBOARD_COPIED" = true ] && print_success "Richiesta negli appunti: Pronta per essere incollata" + +echo "" +echo -e "${BOLD}${YELLOW}⚠️ Prossimi Step - AZIONE RICHIESTA:${NC}" +echo "" +echo -e " ${BLUE}1.${NC} Aprire Claude Code" +echo -e " ${BLUE}2.${NC} Incollare o fornire il file:" +echo -e " ${GREEN}${REQUEST_FILE}${NC}" +echo -e " ${BLUE}3.${NC} Claude analizzerà e aggiornerà Python automaticamente" +echo -e " ${BLUE}4.${NC} Validare con:" +echo -e " ${GREEN}python -m src.validation.cli CU001 A${NC}" +echo "" + +echo -e "${BOLD}File modificati:${NC}" +echo "$CHANGED_FILES" | sed 's/^/ - /' + +echo "" +echo -e "${BOLD}Moduli Python da aggiornare:${NC}" +for module in "${!affected_modules[@]}"; do + echo " - $module" +done + +echo "" +print_header "Fine" + +# Opzione per aprire file in editor +echo -e "${BLUE}Premere ENTER per aprire la richiesta in editor, o CTRL+C per uscire...${NC}" +read -r + +# Apri in editor (priorità: $EDITOR, nano, vi) +if [ -n "$EDITOR" ]; then + $EDITOR "$REQUEST_FILE" +elif command -v nano &> /dev/null; then + nano "$REQUEST_FILE" +elif command -v vi &> /dev/null; then + vi "$REQUEST_FILE" +else + echo "Nessun editor trovato. File disponibile in: $REQUEST_FILE" +fi + +echo "" +print_success "Processo completato!" +echo ""