ruch
Version:
Revolutionary React TypeScript CLI with hexagonal architecture & AI-powered development assistance. Create maintainable, scalable applications with domain-driven design and integrated AI tooling.
148 lines (102 loc) • 3.77 kB
Markdown
# Amélioration de la commande `ruch msw update`
## 🎯 Objectif
Permettre la mise à jour des fichiers MSW d'un domaine spécifique lorsque l'utilisateur a modifié ses entités, ports ou adapters.
## ✨ Nouvelle fonctionnalité
### Avant
```bash
# Seulement mise à jour générale pour nouveaux domaines
ruch msw update
```
### Après
```bash
# Mise à jour générale (comportement existant conservé)
ruch msw update
# 🆕 Mise à jour d'un domaine spécifique
ruch msw update user
ruch msw update product
```
## 🔧 Implémentation
### Modifications apportées
1. **Nouvelle fonction `updateMswDomain`** dans `src/commands/msw.ts`
- Valide l'existence du domaine
- Crée des sauvegardes spécifiques avec timestamp
- Régénère handler et mock data
- Demande confirmation utilisateur
2. **Commande CLI mise à jour** dans `src/index.ts`
- Paramètre optionnel `[domain]` ajouté
- Routage automatique vers la bonne fonction
- Aide mise à jour
3. **Documentation enrichie** dans `MSW_COMMANDS.md`
- Exemples d'usage spécifique
- Workflow mis à jour
- Gestion des sauvegardes détaillée
## 🛡️ Sécurité et robustesse
### Validation
- ✅ Vérification existence du domaine
- ✅ Liste des domaines disponibles en cas d'erreur
- ✅ Vérification MSW initialisé
### Sauvegardes automatiques
- ✅ Handler : `{domain}.ts.backup.{timestamp}`
- ✅ Mock data : `mockData.ts.backup.{timestamp}`
- ✅ Messages informatifs sur les sauvegardes
### Confirmation utilisateur
- ✅ Demande de confirmation avant écrasement
- ✅ Possibilité d'annuler l'opération
- ✅ Messages d'avertissement clairs
## 📋 Cas d'usage
### Scenario 1 : Modification d'entité
```typescript
// Modification dans src/domains/user/entities/User.ts
interface User {
id: string;
name: string;
email: string;
role: 'admin' | 'user';
// 🆕 Nouveau champ ajouté
avatar?: string;
}
```
**Action :**
```bash
ruch msw update user
```
**Résultat :**
- Handler régénéré avec nouveaux endpoints
- Mock data régénéré avec nouveaux champs
- Sauvegardes créées pour restauration si besoin
### Scenario 2 : Modification d'adapter
```typescript
// Nouveau endpoint ajouté dans UserApiAdapter
async getUserPreferences(userId: string): Promise<UserPreferences>
```
**Action :**
```bash
ruch msw update user
```
**Résultat :**
- Handler MSW synchronisé avec adapter
- Mock data mis à jour pour nouveaux types
## 🧪 Tests effectués
### ✅ Tests de fonctionnement
- Mise à jour domaine existant (`user`) : ✅
- Gestion domaine inexistant : ✅
- Confirmation utilisateur : ✅
- Création sauvegardes : ✅
- Comportement sans paramètre conservé : ✅
### ✅ Tests d'erreur
- Domaine inexistant → Message d'erreur + liste domaines disponibles
- MSW non initialisé → Message d'erreur clair
- Annulation utilisateur → Pas de modification
## 🔄 Workflow recommandé
1. **Modifier les fichiers du domaine** (entities, ports, adapters)
2. **Régénérer les mocks** : `ruch msw update {domain}`
3. **Confirmer l'opération** quand demandé
4. **Vérifier les fichiers générés** et ajuster si nécessaire
5. **Restaurer depuis backup** si des modifications custom étaient présentes
## 💡 Avantages
- **Efficacité** : Mise à jour ciblée au lieu de tout régénérer
- **Sécurité** : Sauvegardes automatiques avec timestamp
- **Flexibilité** : Choix entre mise à jour générale ou spécifique
- **Robustesse** : Validation et gestion d'erreurs complète
- **UX** : Messages clairs et informatifs
Cette amélioration rend le CLI Ruch encore plus pratique pour le développement en permettant une synchronisation fine des mocks avec l'évolution du code métier.