Ensure program is running if it closes early
This commit is contained in:
parent
2d90dbedb8
commit
e4cf4e88a4
1 changed files with 29 additions and 10 deletions
39
index.js
39
index.js
|
@ -19,27 +19,46 @@ var runningPrograms = {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var iterations = 0
|
||||||
|
|
||||||
function updateLoop() {
|
function updateLoop() {
|
||||||
|
iterations += 1
|
||||||
|
|
||||||
var config = JSON.parse(fs.readFileSync(confPath))
|
var config = JSON.parse(fs.readFileSync(confPath))
|
||||||
|
|
||||||
for (var i = 0; i < config.autoUpdates.length; i++) {
|
for (var i = 0; i < config.autoUpdates.length; i++) {
|
||||||
var program = config.autoUpdates[i]
|
var program = config.autoUpdates[i]
|
||||||
var pull = shell.exec(`cd ${program.dir} && git pull`)
|
var runningProgram = runningPrograms[program.name]
|
||||||
if (!runningPrograms[program.name]) {
|
|
||||||
runningPrograms[program.name] = shell.exec(`cd ${program.dir} && ${program.startCommand}`, { async: true })
|
|
||||||
}
|
|
||||||
if (!pull.stdout.includes("Already up to date.")) {
|
|
||||||
if (runningPrograms[program.name]) {
|
|
||||||
runningPrograms[program.name].kill()
|
|
||||||
}
|
|
||||||
runningPrograms[program.name] = shell.exec(`cd ${program.dir} && ${program.startCommand}`, { async: true })
|
|
||||||
|
|
||||||
|
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(() => {
|
setTimeout(() => {
|
||||||
|
if (iterations >= 5) {
|
||||||
|
iterations = 0
|
||||||
|
}
|
||||||
updateLoop()
|
updateLoop()
|
||||||
}, config.updateSpeedMinutes * 60 * 1000);
|
}, config.updateSpeedMinutes * 60 * 1000 / 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLoop()
|
updateLoop()
|
Loading…
Reference in a new issue