Simple-Updater/index.js

64 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-06-07 22:21:02 -05:00
const fs = require("fs"),
2024-06-07 23:06:24 -05:00
path = require("path"),
shell = require("shelljs")
2024-06-07 22:21:02 -05:00
var configsPath = path.join(__dirname, "config")
var confPath = path.join(configsPath, "config.json")
if (!fs.existsSync(configsPath)) {
fs.mkdirSync(configsPath)
}
if (!fs.existsSync(confPath)) {
console.log("It would appear you have not created a config file yet! Generating one now.")
fs.cpSync(path.join(__dirname, "defaults/config.json"), confPath)
console.log("Done!")
2024-06-07 23:06:24 -05:00
}
var runningPrograms = {
}
var iterations = 0
2024-06-07 23:06:24 -05:00
function updateLoop() {
iterations += 1
2024-06-07 23:06:24 -05:00
var config = JSON.parse(fs.readFileSync(confPath))
for (var i = 0; i < config.autoUpdates.length; i++) {
var program = config.autoUpdates[i]
var runningProgram = runningPrograms[program.name]
function startProgram() {
return shell.exec(`cd ${program.dir} && ${program.startCommand}`, { async: true },
() => {
runningPrograms[program.name] = undefined
})
2024-06-07 23:06:24 -05:00
}
if (!runningProgram) {
runningPrograms[program.name] = startProgram()
}
if (iterations >= 5) {
var pull = shell.exec(`cd ${program.dir} && git pull`)
if (!pull.stdout.includes("Already up to date.")) {
if (runningProgram) {
runningProgram.kill()
runningPrograms[program.name] = startProgram()
}
}
2024-06-07 23:06:24 -05:00
}
}
setTimeout(() => {
if (iterations >= 5) {
iterations = 0
}
2024-06-07 23:06:24 -05:00
updateLoop()
}, config.updateSpeedMinutes * 60 * 1000 / 5);
2024-06-07 23:06:24 -05:00
}
updateLoop()