79 lines
No EOL
1.9 KiB
JavaScript
79 lines
No EOL
1.9 KiB
JavaScript
const fs = require("fs")
|
|
const path = require("path")
|
|
|
|
class SettingsManager {
|
|
|
|
settings
|
|
currentSetting
|
|
settingsFile = __dirname
|
|
constructor() {
|
|
}
|
|
|
|
async start() {
|
|
await this.#init()
|
|
}
|
|
|
|
|
|
async #init() {
|
|
let settings
|
|
try {
|
|
settings = await this.#getSettings()
|
|
} catch (error) {
|
|
settings = await this.#makeNewSettingsFile()
|
|
}
|
|
this.settings = JSON.parse(settings.toString())
|
|
this.currentSetting = this.settings.size_limit
|
|
}
|
|
async #getSettings() {
|
|
return new Promise((resolve, reject) => {
|
|
const getSettings = fs.readFile(path.resolve(this.settingsFile, "settings.json"), (err, data) => {
|
|
if (err) reject(err)
|
|
resolve(data)
|
|
})
|
|
})
|
|
}
|
|
async #makeNewSettingsFile() {
|
|
const settings = `
|
|
"size_limit": 64000
|
|
`
|
|
/*const settings = `
|
|
{
|
|
"currentSetting": 2,
|
|
"presets": [{
|
|
"name": "Most efficient 8 megabytes of your life",
|
|
"cpuUsed": 0,
|
|
"deadline": "good",
|
|
"bitrateError": 95
|
|
}, {
|
|
"name": "I have some time to kill",
|
|
"cpuUsed": 1,
|
|
"deadline": "good",
|
|
"bitrateError": 95
|
|
}, {
|
|
"name": "Mid",
|
|
"cpuUsed": 3,
|
|
"deadline": "realtime",
|
|
"bitrateError": 90
|
|
}, {
|
|
"name": "I don't like waiting",
|
|
"cpuUsed": 5,
|
|
"deadline": "realtime",
|
|
"bitrateError": 80
|
|
}, {
|
|
"name": "I want it, NOW!",
|
|
"cpuUsed": 6,
|
|
"deadline": "realtime",
|
|
"bitrateError": 70
|
|
}]
|
|
}
|
|
`*/
|
|
return new Promise((resolve, reject) => {
|
|
fs.writeFile(path.resolve(this.settingsFile, "settings.json"), settings, (err) => {
|
|
if (err) return
|
|
resolve(settings)
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
module.exports = { SettingsManager } |