mirror of
https://github.com/dscalzi/HeliosLauncher.git
synced 2024-12-21 19:22:13 -08:00
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.
This commit is contained in:
parent
3ee4c73790
commit
9813802b1c
75
athshield/athshield.js
Normal file
75
athshield/athshield.js
Normal file
@ -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()
|
32
athshield/parserAthShield.js
Normal file
32
athshield/parserAthShield.js
Normal file
@ -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
|
4
athshield/variables.athshield
Normal file
4
athshield/variables.athshield
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"athenaShieldActivated": false,
|
||||
"menuVisibility": "visible"
|
||||
}
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user