@gjmry/svelt
Version:
A CLI for Svelte written in Rust
78 lines (65 loc) • 2.68 kB
JavaScript
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);
}