convertito in formato unix sync enhanced
This commit is contained in:
@@ -1,373 +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" <<EOF
|
||||
# Richiesta Sincronizzazione MATLAB → Python
|
||||
|
||||
**Generato automaticamente da**: sync_server_file_enhanced.sh
|
||||
**Data**: $(date +"%Y-%m-%d %H:%M:%S")
|
||||
**File modificati**: ${CHANGED_COUNT}
|
||||
|
||||
---
|
||||
|
||||
## 📋 File MATLAB Modificati
|
||||
|
||||
\`\`\`
|
||||
$CHANGED_FILES
|
||||
\`\`\`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Moduli Python Interessati
|
||||
|
||||
EOF
|
||||
|
||||
for module in "${!affected_modules[@]}"; do
|
||||
case "$module" in
|
||||
RSN)
|
||||
echo "- **RSN Module** → \`src/rsn/\`" >> "$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" <<EOF
|
||||
|
||||
### 📄 ${rel_path}
|
||||
|
||||
\`\`\`diff
|
||||
EOF
|
||||
|
||||
# Aggiungi diff (massimo 30 righe)
|
||||
git diff --staged "$file" 2>/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 ""
|
||||
#!/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" <<EOF
|
||||
# Richiesta Sincronizzazione MATLAB → Python
|
||||
|
||||
**Generato automaticamente da**: sync_server_file_enhanced.sh
|
||||
**Data**: $(date +"%Y-%m-%d %H:%M:%S")
|
||||
**File modificati**: ${CHANGED_COUNT}
|
||||
|
||||
---
|
||||
|
||||
## 📋 File MATLAB Modificati
|
||||
|
||||
\`\`\`
|
||||
$CHANGED_FILES
|
||||
\`\`\`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Moduli Python Interessati
|
||||
|
||||
EOF
|
||||
|
||||
for module in "${!affected_modules[@]}"; do
|
||||
case "$module" in
|
||||
RSN)
|
||||
echo "- **RSN Module** → \`src/rsn/\`" >> "$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" <<EOF
|
||||
|
||||
### 📄 ${rel_path}
|
||||
|
||||
\`\`\`diff
|
||||
EOF
|
||||
|
||||
# Aggiungi diff (massimo 30 righe)
|
||||
git diff --staged "$file" 2>/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 ""
|
||||
|
||||
Reference in New Issue
Block a user