create-fleetbo-project 1.0.20 → 1.0.21

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.
@@ -73,27 +73,48 @@ function fetchProjectKeys(token) {
73
73
  /**
74
74
  * Fonction Principale Asynchrone
75
75
  */
76
+ /**
77
+ * Fonction Principale Asynchrone (Version corrigée)
78
+ */
76
79
  async function setupProject() {
77
80
  console.log(`\nCréation de votre projet Fleetbo "${projectName}"...`);
78
81
 
79
82
  try {
80
- // 1. Télécharger le template depuis GitHub
83
+ // Étape 1 & 2 : Télécharger et décompresser de manière sécurisée
81
84
  console.log(' [1/5] 📥 Téléchargement du template...');
82
- const response = await new Promise((resolve, reject) => {
83
- https.get(repoUrl, res => resolve(res)).on('error', err => reject(err));
84
- });
85
-
86
- // 2. Décompresser l'archive
87
85
  await new Promise((resolve, reject) => {
88
- response.pipe(unzipper.Extract({ path: '.' }))
89
- .on('finish', resolve)
90
- .on('error', reject);
86
+ https.get(repoUrl, (response) => {
87
+ // Gérer les redirections (très courant avec GitHub)
88
+ if (response.statusCode === 301 || response.statusCode === 302) {
89
+ console.log(' -> Redirection détectée, suivi du lien...');
90
+ https.get(response.headers.location, (redirectResponse) => {
91
+ if (redirectResponse.statusCode !== 200) {
92
+ return reject(new Error(`Échec du téléchargement après redirection. Code de statut: ${redirectResponse.statusCode}`));
93
+ }
94
+ redirectResponse.pipe(unzipper.Extract({ path: '.' }))
95
+ .on('finish', resolve)
96
+ .on('error', (err) => reject(new Error(`Erreur lors de la décompression: ${err.message}`)));
97
+ }).on('error', (err) => reject(new Error(`Erreur réseau après redirection: ${err.message}`)));
98
+ return;
99
+ }
100
+
101
+ // Gérer les erreurs directes (ex: 404 Dépôt non trouvé)
102
+ if (response.statusCode !== 200) {
103
+ return reject(new Error(`Échec du téléchargement du template. Code de statut: ${response.statusCode}`));
104
+ }
105
+
106
+ // Si le code est 200 OK, on décompresse
107
+ response.pipe(unzipper.Extract({ path: '.' }))
108
+ .on('finish', resolve)
109
+ .on('error', (err) => reject(new Error(`Erreur lors de la décompression: ${err.message}`)));
110
+
111
+ }).on('error', (err) => reject(new Error(`Erreur réseau lors du téléchargement: ${err.message}`)));
91
112
  });
92
- fs.renameSync(`${repoName}-main`, projectName);
93
- process.chdir(projectName);
113
+
94
114
  console.log(' [2/5] ✅ Template téléchargé et décompressé.');
95
115
 
96
- // 3. Récupérer les clés de projet sécurisées
116
+ // Le reste du script continue ici
117
+ process.chdir(projectName);
97
118
  console.log(' [3/5] 🔑 Récupération des clés de projet...');
98
119
  const keys = await fetchProjectKeys(bootstrapToken);
99
120
  if (!keys.enterpriseId || !keys.fleetboDBKey) {
@@ -109,7 +130,7 @@ async function setupProject() {
109
130
  console.log(' [5/5] 📦 Installation des dépendances (cela peut prendre quelques minutes)...');
110
131
  execSync('npm install', { stdio: 'inherit' });
111
132
 
112
- // Mise à jour du package.json (optionnel mais propre)
133
+ // Mise à jour du package.json
113
134
  const packageJsonPath = path.join(process.cwd(), 'package.json');
114
135
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
115
136
  packageJson.name = projectName;
@@ -123,9 +144,10 @@ async function setupProject() {
123
144
  } catch (error) {
124
145
  console.error('\n❌ Une erreur est survenue lors de la création du projet :', error.message);
125
146
  // Nettoyage en cas d'erreur
126
- if (fs.existsSync(projectName)) {
147
+ const dirToDelete = path.join(process.cwd(), projectName);
148
+ if (fs.existsSync(dirToDelete)) {
127
149
  console.log(' Nettoyage du répertoire du projet...');
128
- fs.rmSync(projectName, { recursive: true, force: true });
150
+ fs.rmSync(dirToDelete, { recursive: true, force: true });
129
151
  }
130
152
  process.exit(1);
131
153
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fleetbo-project",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "Creates a new Fleetbo project.",
5
5
  "main": "install-react-template.js",
6
6
  "bin": {