create-fleetbo-project 1.0.33 → 1.0.34

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.
@@ -6,6 +6,15 @@ const path = require('path');
6
6
  const https = require('https');
7
7
  const unzipper = require('unzipper');
8
8
 
9
+ // --- Vérification de la version de Node.js ---
10
+ const [major, minor] = process.versions.node.split('.').map(parseFloat);
11
+ if (major < 16 || (major === 16 && minor < 7)) {
12
+ console.error(`\n❌ Erreur : Ce script requiert Node.js v16.7.0 ou une version supérieure pour fonctionner correctement.`);
13
+ console.error(` Votre version actuelle est ${process.versions.node}.`);
14
+ console.log(` Veuillez mettre à jour votre installation de Node.js.`);
15
+ process.exit(1);
16
+ }
17
+
9
18
  // --- Configuration ---
10
19
  const repoOwner = 'FleetFleetbo'; // Assurez-vous que c'est le bon nom d'utilisateur GitHub
11
20
  const repoName = 'dev.fleetbo.io'; // Assurez-vous que c'est le bon nom de dépôt
@@ -49,7 +58,11 @@ function fetchProjectKeys(token) {
49
58
  res.on('data', (chunk) => { data += chunk; });
50
59
  res.on('end', () => {
51
60
  if (res.statusCode >= 200 && res.statusCode < 300) {
52
- resolve(JSON.parse(data));
61
+ try {
62
+ resolve(JSON.parse(data));
63
+ } catch (e) {
64
+ reject(new Error('Réponse invalide du serveur de clés.'));
65
+ }
53
66
  } else {
54
67
  const errorMsg = JSON.parse(data).error || `Erreur serveur (code: ${res.statusCode})`;
55
68
  reject(new Error(errorMsg));
@@ -76,7 +89,6 @@ async function setupProject() {
76
89
  await new Promise((resolve, reject) => {
77
90
  https.get(repoUrl, (response) => {
78
91
  if (response.statusCode === 301 || response.statusCode === 302) {
79
- // Gérer la redirection
80
92
  return https.get(response.headers.location, (redirectResponse) => {
81
93
  redirectResponse.pipe(unzipper.Extract({ path: tempDir }))
82
94
  .on('finish', resolve)
@@ -93,11 +105,10 @@ async function setupProject() {
93
105
  });
94
106
  console.log(' [2/5] ✅ Template téléchargé. Organisation des fichiers...');
95
107
 
96
- // Étape 2 bis : Localiser intelligemment la racine du projet dans le dossier décompressé
108
+ // Étape 2 bis : Localiser la racine du projet dans le dossier décompressé
97
109
  const unzippedBaseFolder = fs.readdirSync(tempDir)[0];
98
110
  let sourceDir = path.join(tempDir, unzippedBaseFolder);
99
111
 
100
- // Gère le cas où le projet est dans un sous-dossier du repo
101
112
  if (!fs.existsSync(path.join(sourceDir, 'package.json'))) {
102
113
  const nestedProjectDir = fs.readdirSync(sourceDir).find(file => {
103
114
  const fullPath = path.join(sourceDir, file);
@@ -109,9 +120,6 @@ async function setupProject() {
109
120
 
110
121
  // Étape 2 ter : Copier les fichiers vers la destination finale
111
122
  fs.mkdirSync(projectDir, { recursive: true });
112
- // **CORRECTION :** Utilisation de `fs.cpSync` pour copier récursivement chaque élément.
113
- // C'est une méthode plus fiable pour s'assurer que toute l'arborescence
114
- // des fichiers (y compris le contenu de /src) est copiée à l'identique.
115
123
  for (const file of fs.readdirSync(sourceDir)) {
116
124
  fs.cpSync(path.join(sourceDir, file), path.join(projectDir, file), { recursive: true });
117
125
  }
@@ -130,7 +138,6 @@ async function setupProject() {
130
138
  console.log(' [5/5] 📦 Installation des dépendances...');
131
139
  execSync('npm install', { stdio: 'inherit' });
132
140
 
133
- // Personnalisation du nom du projet dans package.json
134
141
  const packageJsonPath = path.join(projectDir, 'package.json');
135
142
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
136
143
  packageJson.name = projectName;
@@ -147,7 +154,6 @@ async function setupProject() {
147
154
  fs.rmSync(projectDir, { recursive: true, force: true });
148
155
  }
149
156
  } finally {
150
- // Nettoyage du dossier temporaire
151
157
  if (fs.existsSync(tempDir)) {
152
158
  fs.rmSync(tempDir, { recursive: true, force: true });
153
159
  }
@@ -155,3 +161,4 @@ async function setupProject() {
155
161
  }
156
162
 
157
163
  setupProject();
164
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fleetbo-project",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "Creates a new Fleetbo project.",
5
5
  "main": "install-react-template.js",
6
6
  "bin": {