From 9813802b1c1529dd18881562d30bddaedcada0f2 Mon Sep 17 00:00:00 2001 From: Sandro642 Date: Wed, 23 Oct 2024 17:33:39 +0200 Subject: [PATCH] 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. --- athshield/athshield.js | 75 +++++++++++++++++++++++++++++++++++ athshield/parserAthShield.js | 32 +++++++++++++++ athshield/variables.athshield | 4 ++ package.json | 3 +- 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 athshield/athshield.js create mode 100644 athshield/parserAthShield.js create mode 100644 athshield/variables.athshield diff --git a/athshield/athshield.js b/athshield/athshield.js new file mode 100644 index 00000000..429fd900 --- /dev/null +++ b/athshield/athshield.js @@ -0,0 +1,75 @@ +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() diff --git a/athshield/parserAthShield.js b/athshield/parserAthShield.js new file mode 100644 index 00000000..8a166733 --- /dev/null +++ b/athshield/parserAthShield.js @@ -0,0 +1,32 @@ +const fs = require('fs') +const path = require('path') + +// Chemin vers le fichier de configuration +const configPath = path.join(__dirname, 'variables.athshield') + +// Classe pour gérer Athena's Shield +class AthenaShield { + constructor() { + this.config = this.loadConfig() + } + + // Charger les variables depuis le fichier + loadConfig() { + const rawData = fs.readFileSync(configPath) + return JSON.parse(rawData.toString()) + } + + // Récupérer le statut d'Athena's Shield + get status() { + return this.config.athenaShieldActivated + } + + // Récupérer la visibilité du menu + get view() { + return this.config.menuVisibility + } +} + +// Exporter une instance de la classe +const athenaShieldInstance = new AthenaShield() +module.exports = athenaShieldInstance diff --git a/athshield/variables.athshield b/athshield/variables.athshield new file mode 100644 index 00000000..19610b1f --- /dev/null +++ b/athshield/variables.athshield @@ -0,0 +1,4 @@ +{ + "athenaShieldActivated": false, + "menuVisibility": "visible" +} \ No newline at end of file diff --git a/package.json b/package.json index 6ce1fd61..79c080d4 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "dist:win": "npm run dist -- -w", "dist:mac": "npm run dist -- -m", "dist:linux": "npm run dist -- -l", - "lint": "eslint --config .eslintrc.json ." + "lint": "eslint --config .eslintrc.json .", + "athshield": "node ./athshield/athshield.js" }, "engines": { "node": "20.x.x"