HeliosLauncher/athshield/athshield.js
Sandro642 9813802b1c Add Athena's Shield configuration and CLI
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.
2024-10-23 17:33:39 +02:00

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()