create-fleetbo-project 1.0.29 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -105,20 +105,35 @@ async function setupProject() {
105
105
  if (response.statusCode === 301 || response.statusCode === 302) {
106
106
  return https.get(response.headers.location, (redirectResponse) => {
107
107
  redirectResponse.pipe(unzipper.Extract({ path: tempDir }))
108
- .on('finish', resolve)
108
+ .on('close', () => {
109
+ // Attendre un peu pour s'assurer que tous les fichiers sont écrits
110
+ setTimeout(resolve, 500);
111
+ })
109
112
  .on('error', (err) => reject(new Error(`Erreur de décompression: ${err.message}`)));
110
113
  }).on('error', (err) => reject(new Error(`Erreur réseau après redirection: ${err.message}`)));
111
114
  }
112
115
  response.pipe(unzipper.Extract({ path: tempDir }))
113
- .on('finish', resolve)
116
+ .on('close', () => {
117
+ // Attendre un peu pour s'assurer que tous les fichiers sont écrits
118
+ setTimeout(resolve, 500);
119
+ })
114
120
  .on('error', (err) => reject(new Error(`Erreur de décompression: ${err.message}`)));
115
121
  }).on('error', (err) => reject(new Error(`Erreur réseau: ${err.message}`)));
116
122
  });
117
123
 
118
- console.log(' [2/5] ✅ Template téléchargé. Organisation des fichiers...');
124
+ console.log(' [2/5] ✅ Template téléchargé. Vérification...');
125
+
126
+ // Vérifier que l'extraction est complète
127
+ if (!fs.existsSync(tempDir) || fs.readdirSync(tempDir).length === 0) {
128
+ throw new Error('Le téléchargement ou l\'extraction a échoué');
129
+ }
119
130
 
120
131
  // Étape 2 : Localiser intelligemment la racine du projet
121
- const unzippedBaseFolder = fs.readdirSync(tempDir)[0];
132
+ console.log(' [2/5] 🔍 Localisation de la racine du projet...');
133
+ const tempContents = fs.readdirSync(tempDir);
134
+ console.log(` → Contenu du dossier temporaire: ${tempContents.join(', ')}`);
135
+
136
+ const unzippedBaseFolder = tempContents[0];
122
137
  let sourceDir = path.join(tempDir, unzippedBaseFolder);
123
138
 
124
139
  if (!fs.existsSync(path.join(sourceDir, 'package.json'))) {
@@ -130,6 +145,27 @@ async function setupProject() {
130
145
  sourceDir = path.join(sourceDir, nestedProjectDir);
131
146
  }
132
147
 
148
+ console.log(` ✅ Racine du projet trouvée: ${sourceDir}`);
149
+
150
+ // Lister tous les fichiers du source avant copie
151
+ function countFilesRecursive(dir) {
152
+ let count = 0;
153
+ const items = fs.readdirSync(dir);
154
+ items.forEach(item => {
155
+ const fullPath = path.join(dir, item);
156
+ const stat = fs.statSync(fullPath);
157
+ if (stat.isDirectory()) {
158
+ count += countFilesRecursive(fullPath);
159
+ } else {
160
+ count++;
161
+ }
162
+ });
163
+ return count;
164
+ }
165
+
166
+ const totalSourceFiles = countFilesRecursive(sourceDir);
167
+ console.log(` → ${totalSourceFiles} fichiers au total dans le template`);
168
+
133
169
  // Étape 3 : Copier RÉCURSIVEMENT tous les fichiers et dossiers
134
170
  console.log(` [3/5] 📂 Copie de tous les fichiers du template...`);
135
171
 
@@ -139,19 +175,32 @@ async function setupProject() {
139
175
  }
140
176
 
141
177
  const sourceFiles = fs.readdirSync(sourceDir);
142
- console.log(` → ${sourceFiles.length} éléments détectés à la racine du template`);
178
+ console.log(` → ${sourceFiles.length} éléments à la racine: ${sourceFiles.join(', ')}`);
143
179
 
144
180
  // Copier récursivement tout le contenu
145
181
  copyRecursiveSync(sourceDir, projectDir);
146
182
 
147
183
  // Vérifier que la copie a réussi
148
- const copiedFiles = fs.readdirSync(projectDir);
149
- console.log(` ${copiedFiles.length} éléments copiés dans le nouveau projet`);
184
+ const totalCopiedFiles = countFilesRecursive(projectDir);
185
+ console.log(` ${totalCopiedFiles} fichiers copiés dans le nouveau projet`);
186
+
187
+ if (totalCopiedFiles !== totalSourceFiles) {
188
+ console.warn(` ⚠️ ATTENTION: ${totalSourceFiles - totalCopiedFiles} fichiers manquants!`);
189
+ }
150
190
 
151
191
  if (!fs.existsSync(path.join(projectDir, 'package.json'))) {
152
192
  throw new Error('Erreur: package.json n\'a pas été copié correctement');
153
193
  }
154
194
 
195
+ // Vérifier spécifiquement le dossier src
196
+ const srcDir = path.join(projectDir, 'src');
197
+ if (fs.existsSync(srcDir)) {
198
+ const srcFiles = fs.readdirSync(srcDir);
199
+ console.log(` → Dossier src contient: ${srcFiles.length} éléments`);
200
+ } else {
201
+ console.warn(' ⚠️ ATTENTION: Le dossier src n\'existe pas!');
202
+ }
203
+
155
204
  // Étape 4 : Récupération des clés
156
205
  console.log(' [4/5] 🔑 Récupération des clés de projet...');
157
206
  const keys = await fetchProjectKeys(bootstrapToken);
@@ -184,14 +233,23 @@ async function setupProject() {
184
233
  } catch (error) {
185
234
  console.error('\n❌ Une erreur est survenue lors de la création du projet :', error.message);
186
235
  console.error(' Détails:', error);
236
+
237
+ // NE PAS nettoyer le projectDir si on veut déboguer
238
+ // Commenter cette section pour garder les fichiers et voir ce qui manque
187
239
  if (fs.existsSync(projectDir)) {
188
240
  console.log(' 🧹 Nettoyage du projet incomplet...');
189
241
  fs.rmSync(projectDir, { recursive: true, force: true });
190
242
  }
191
243
  process.exit(1);
192
244
  } finally {
245
+ // Attendre avant de nettoyer pour être sûr que tout est copié
193
246
  if (fs.existsSync(tempDir)) {
194
- fs.rmSync(tempDir, { recursive: true, force: true });
247
+ console.log(' 🧹 Nettoyage du dossier temporaire...');
248
+ setTimeout(() => {
249
+ if (fs.existsSync(tempDir)) {
250
+ fs.rmSync(tempDir, { recursive: true, force: true });
251
+ }
252
+ }, 1000);
195
253
  }
196
254
  }
197
255
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fleetbo-project",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "description": "Creates a new Fleetbo project.",
5
5
  "main": "install-react-template.js",
6
6
  "bin": {