mirror of
https://github.com/dscalzi/HeliosLauncher.git
synced 2024-12-22 03:32:12 -08:00
9813802b1c
Introduce AthenaShield class to manage configuration, CLI for user setup, and update package.json with new script. This enhances the application's configurability and user interaction.
76 lines
2.5 KiB
JavaScript
76 lines
2.5 KiB
JavaScript
const fs = require('fs')
|
|
const readline = require('readline')
|
|
const path = require('path')
|
|
|
|
// Chemin vers le fichier de configuration
|
|
const configPath = path.join(__dirname, 'variables.athshield')
|
|
|
|
// Charger les variables depuis le fichier
|
|
function loadConfig() {
|
|
const rawData = fs.readFileSync(configPath)
|
|
return JSON.parse(rawData.toString()) // Convertir Buffer en string
|
|
}
|
|
|
|
// Sauvegarder les variables dans le fichier
|
|
function saveConfig(config) {
|
|
const data = JSON.stringify(config, null, 2)
|
|
fs.writeFileSync(configPath, data)
|
|
}
|
|
|
|
// Création de l'interface readline
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
})
|
|
|
|
// Fonction pour poser les questions à l'utilisateur
|
|
function startCLI() {
|
|
const config = loadConfig()
|
|
|
|
rl.question('Voulez-vous activer Athena\'s Shield ? (oui/non) : ', (answer) => {
|
|
if (answer.trim().startsWith('//')) {
|
|
console.log('Ceci est un commentaire, la ligne est ignorée.')
|
|
rl.close()
|
|
return
|
|
}
|
|
|
|
if (answer.toLowerCase() === 'oui') {
|
|
config.athenaShieldActivated = true
|
|
|
|
rl.question('Voulez-vous cacher ou bloquer le menu ? (cacher/bloquer) : ', (menuAnswer) => {
|
|
if (menuAnswer.trim().startsWith('//')) {
|
|
console.log('Ceci est un commentaire, la ligne est ignorée.')
|
|
rl.close()
|
|
return
|
|
}
|
|
|
|
if (menuAnswer.toLowerCase() === 'cacher' || menuAnswer.toLowerCase() === 'bloquer') {
|
|
config.menuVisibility = menuAnswer.toLowerCase()
|
|
console.log(`Athena's Shield activé. Menu ${config.menuVisibility === 'cacher' ? 'caché' : 'bloqué'}.`)
|
|
|
|
// Sauvegarder la configuration modifiée
|
|
saveConfig(config)
|
|
rl.close()
|
|
} else {
|
|
console.log('Option non valide pour le menu.')
|
|
rl.close()
|
|
}
|
|
})
|
|
} else if (answer.toLowerCase() === 'non') {
|
|
console.log('Athena\'s Shield non activé. Fermeture du CLI.')
|
|
config.athenaShieldActivated = false
|
|
config.menuVisibility = 'visible' // Remettre la valeur par défaut
|
|
|
|
// Sauvegarder la configuration modifiée
|
|
saveConfig(config)
|
|
rl.close()
|
|
} else {
|
|
console.log('Réponse non valide.')
|
|
rl.close()
|
|
}
|
|
})
|
|
}
|
|
|
|
// Lancer le CLI
|
|
startCLI()
|