const fs = require("fs"), path = require("path"), shell = require("shelljs") 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!") } var runningPrograms = { } var iterations = 0 function updateLoop() { iterations += 1 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 }) } 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() } } } } setTimeout(() => { if (iterations >= 5) { iterations = 0 } updateLoop() }, config.updateSpeedMinutes * 60 * 1000 / 5); } updateLoop()