UNPKG

@gjmry/svelt

Version:

A CLI for Svelte written in Rust

78 lines (65 loc) 2.68 kB
const fs = require('fs'); const path = require('path'); const os = require('os'); const { execSync } = require('child_process'); let binPath; function addSveltToPath(bashFileName) { const homeDir = process.env.HOME; const shellConfigFile = path.join(homeDir, bashFileName); // Utiliser .bashrc pour Bash, ou .zshrc pour Zsh if(!fs.existsSync(shellConfigFile)) { return; } const localBinDir = path.join(homeDir, '.local', 'bin'); const pathExportLine = `export PATH="${localBinDir}:$PATH"`; fs.readFile(shellConfigFile, 'utf8', (err, data) => { if (err) { console.error(`Erreur de lecture du fichier de configuration (${shellConfigFile}):`, err); return; } if (data.includes(pathExportLine)) { console.log(`Le répertoire est déjà dans le PATH (${shellConfigFile}).`); } else { fs.appendFile(shellConfigFile, `\n${pathExportLine}\n`, (err) => { if (err) { console.error(`Erreur lors de l'ajout de la ligne au fichier ${shellConfigFile} :`, err); } else { console.log(`Le répertoire a été ajouté au PATH dans ${shellConfigFile}.`); } }); } }); } if (os.platform() === 'win32') { if (os.arch() === 'x64') { binPath = path.resolve(__dirname, 'bin', 'svelt-win64.exe'); } else if (os.arch() === 'ia32') { binPath = path.resolve(__dirname, 'bin', 'svelt-win32.exe'); } } else if (os.platform() === 'linux') { addSveltToPath('.bashrc'); addSveltToPath('.zshrc'); binPath = path.resolve(__dirname, 'bin', 'svelt-linux-x86_64/svelt'); console.log("Chemin du binaire : ", binPath); const destDir = path.resolve(process.env.HOME, '.local', 'bin'); const destFile = path.join(destDir, 'svelt'); if (!fs.existsSync(destDir)) { fs.mkdirSync(destDir, { recursive: true }); } try { fs.copyFileSync(binPath, destFile); console.log(`Le fichier a été copié avec succès dans ${destDir}`); execSync(`chmod +x ${destFile}`); console.log('Le fichier est maintenant exécutable!'); } catch (err) { console.error('Erreur lors de la copie du fichier:', err); process.exit(1); } } else if (os.platform() === 'darwin') { binPath = path.resolve(__dirname, 'bin', 'svelt-mac'); } if (fs.existsSync(binPath)) { console.log('svelt has been installed successfully!'); } else { console.error('Error: svelt binary is missing.'); process.exit(1); }