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.
- package/install-react-template.js +37 -15
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
.
|
|
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
|
-
|
|
93
|
-
process.chdir(projectName);
|
|
113
|
+
|
|
94
114
|
console.log(' [2/5] ✅ Template téléchargé et décompressé.');
|
|
95
115
|
|
|
96
|
-
//
|
|
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
|
|
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
|
-
|
|
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(
|
|
150
|
+
fs.rmSync(dirToDelete, { recursive: true, force: true });
|
|
129
151
|
}
|
|
130
152
|
process.exit(1);
|
|
131
153
|
}
|