const fs = require("node:fs")
const path = require("path")
const { LogType } = require("loguix")
const log = require("loguix")
const { __glob } = require("./modules/global-variables")
log.setup(__glob.LOGS, __glob.PACKAGE)
const { DiscordBot } = require("./modules/discord-bot")
const { WebServer } = require("./modules/sub-web")
const metric = require("webmetrik")
metric.setMetricFile(__glob.METRIC_FILE)
metric.publishMetrics("8001", "raphraph")



setup()

function setup() {

    //Log - INIT PHASE

    const dlog = new LogType("Discord")
  

    // Discord Bot - INIT PHASE
        
    const bot = new DiscordBot(getConfig(dlog), dlog)
    const web = new WebServer()

}


// Config GETTER 

function getConfig(dlog) {

    dlog.step.init("getConfig", "Récupération du fichier de configuration")
        
        if(fs.existsSync(__glob.CONFIG)) {
            try {  

                var config_data = JSON.parse(fs.readFileSync(__glob.CONFIG))

                dlog.log("Fichier de configuration trouvé : " + __glob.CONFIG)
                dlog.step.end("getConfig")

                return config_data
            } catch(error) {
                dlog.step.error("getConfig", error)

            }
        } else {

            dlog.warn("Fichier de configuration introuvable !")
            
            try {
                var new_config = {
                    "token":"",
                    "guild_id":"",
                    "voice_channel_id":""
                }

               
                fs.writeFileSync(__glob.CONFIG, JSON.stringify(new_config, null, 2))
                dlog.log("Création d'un fichier de configuration ! Redémarrage de l'application nécéssaire !")
                dlog.step.error("getConfig", "Redémarrage requis pour lire la nouvelle configuration !")
                process.exit(0)
            } catch(error) {
                dlog.step.error("getConfig", "Tentative de création du fichier de configuration échoué !"  + error)

            }
        }
}


