72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Script de vérification des prérequis pour le projet chartbastan
|
|
* Node.js 20.9+ requis
|
|
*/
|
|
|
|
const { execSync } = require('child_process');
|
|
const { readFileSync } = require('fs');
|
|
|
|
const REQUIRED_NODE_VERSION = '20.9.0';
|
|
|
|
// Fonction pour comparer les versions de Node.js
|
|
function compareNodeVersions(required, current) {
|
|
const requiredParts = required.replace('v', '').split('.').map(Number);
|
|
const currentParts = current.replace('v', '').split('.').map(Number);
|
|
|
|
for (let i = 0; i < 3; i++) {
|
|
if (currentParts[i] > requiredParts[i]) return 1;
|
|
if (currentParts[i] < requiredParts[i]) return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Fonction pour exécuter une commande et capturer la sortie
|
|
function runCommand(cmd) {
|
|
try {
|
|
return execSync(cmd, { encoding: 'utf-8' }).trim();
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
// Vérifications
|
|
console.log('🔍 Vérification des prérequis...\n');
|
|
|
|
// 1. Vérifier Node.js
|
|
const nodeVersion = runCommand('node --version');
|
|
if (!nodeVersion) {
|
|
console.error('❌ Node.js n\'est pas installé');
|
|
process.exit(1);
|
|
}
|
|
|
|
const versionComparison = compareNodeVersions(REQUIRED_NODE_VERSION, nodeVersion);
|
|
if (versionComparison < 0) {
|
|
console.error(`❌ Node.js version ${nodeVersion} est trop ancienne`);
|
|
console.error(` Version requise: ${REQUIRED_NODE_VERSION}+`);
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`✅ Node.js ${nodeVersion} (requis: ${REQUIRED_NODE_VERSION}+)`);
|
|
|
|
// 2. Vérifier npm
|
|
const npmVersion = runCommand('npm --version');
|
|
if (!npmVersion) {
|
|
console.error('❌ npm n\'est pas installé');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`✅ npm ${npmVersion}`);
|
|
|
|
// 3. Vérifier npx
|
|
const npxVersion = runCommand('npx --version');
|
|
if (!npxVersion) {
|
|
console.error('❌ npx n\'est pas installé');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`✅ npx ${npxVersion}`);
|
|
|
|
console.log('\n🎉 Tous les prérequis sont satisfaits!');
|