122 lines
2.8 KiB
JavaScript
122 lines
2.8 KiB
JavaScript
const fs = require("node:fs")
|
|
const path = require("node:path")
|
|
|
|
let launcherDataPath = path.join(__dirname, ".catboat")
|
|
|
|
const baseSettings = {
|
|
ram: {
|
|
max: 2048
|
|
},
|
|
auth: {
|
|
token: "",
|
|
type: "msa",
|
|
clientToken: ""
|
|
}
|
|
}
|
|
|
|
function initSettings($launcherDataPath) {
|
|
launcherDataPath = $launcherDataPath
|
|
if (!fs.existsSync(launcherDataPath)) {
|
|
try {
|
|
fs.mkdirSync(launcherDataPath)
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
}
|
|
if (!fs.existsSync(path.join(launcherDataPath, "launcher_settings.json"))) {
|
|
try {
|
|
fs.writeFileSync(path.join(launcherDataPath, "launcher_settings.json"), JSON.stringify(baseSettings, null, 4))
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
}
|
|
}
|
|
|
|
function getLauncherDataPath() {
|
|
return launcherDataPath
|
|
}
|
|
|
|
function writeSettings(settings) {
|
|
try {
|
|
fs.writeFileSync(path.join(launcherDataPath, "launcher_settings.json"), JSON.stringify(settings, null, 4))
|
|
return
|
|
} catch (error) {
|
|
clean()
|
|
return writeSettings(settings)
|
|
}
|
|
}
|
|
|
|
function get(key) {
|
|
try {
|
|
const settings = JSON.parse(fs.readFileSync(path.join(launcherDataPath, "launcher_settings.json")))
|
|
|
|
const keys = key.split(".")
|
|
let value = settings
|
|
|
|
for (const k of keys) {
|
|
if (value[k] !== undefined) {
|
|
value = value[k]
|
|
} else {
|
|
throw new Error(`La clé '${key}' n'existe pas.`)
|
|
}
|
|
}
|
|
|
|
return value
|
|
} catch (error) {
|
|
clean()
|
|
return get(key)
|
|
}
|
|
}
|
|
|
|
function set(key, newValue) {
|
|
try {
|
|
const filePath = path.join(launcherDataPath, "launcher_settings.json")
|
|
const settings = JSON.parse(fs.readFileSync(filePath))
|
|
|
|
const keys = key.split(".")
|
|
let obj = settings
|
|
|
|
for (let i = 0; i < keys.length - 1; i++) {
|
|
const k = keys[i]
|
|
if (!obj[k]) {
|
|
obj[k] = {}
|
|
}
|
|
obj = obj[k]
|
|
}
|
|
|
|
obj[keys[keys.length - 1]] = newValue
|
|
|
|
fs.writeFileSync(filePath, JSON.stringify(settings, null, 4))
|
|
} catch (error) {
|
|
clean()
|
|
return set(ke, value)
|
|
}
|
|
}
|
|
|
|
function clean() {
|
|
try {
|
|
fs.writeFileSync(path.join(launcherDataPath, "launcher_settings.json"), JSON.stringify(baseSettings, null, 4))
|
|
return
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
}
|
|
|
|
function readSettings() {
|
|
try {
|
|
return JSON.parse(fs.readFileSync(path.join(launcherDataPath, "launcher_settings.json")))
|
|
} catch (error) {
|
|
clean()
|
|
return readSettings()
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
getLauncherDataPath,
|
|
writeSettings,
|
|
readSettings,
|
|
initSettings,
|
|
clean,
|
|
get,
|
|
set,
|
|
} |