implement app run

This commit is contained in:
shoopea 2025-10-19 13:55:52 +02:00
parent 6ae863b60c
commit ace13b68a8
3 changed files with 46 additions and 14 deletions

3
api.go
View File

@ -25,12 +25,13 @@ func ApiRunApp(c *gin.Context) {
"message": "done", "message": "done",
}) })
} }
} } else {
c.JSON(http.StatusInternalServerError, gin.H{ c.JSON(http.StatusInternalServerError, gin.H{
"message": "error", "message": "error",
"error": "no app found", "error": "no app found",
}) })
} }
}
func ApiSave(c *gin.Context) { func ApiSave(c *gin.Context) {
if err := cfg.Save(); err != nil { if err := cfg.Save(); err != nil {

37
app.go
View File

@ -2,8 +2,10 @@ package main
import ( import (
"errors" "errors"
"fmt"
"regexp" "regexp"
"strings" "strings"
"sync"
"time" "time"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@ -546,14 +548,43 @@ func (a *App) RunFull() error {
log.WithFields(log.Fields{"app": a.name}).Debugf("starting") log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done") defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
if cfgRun {
return fmt.Errorf("backup already running")
}
cfgMx.Lock()
defer cfgMx.Unlock()
cfgRun = true
defer func() { cfgRun = false }()
boxes := a.Boxes() boxes := a.Boxes()
for _, box := range boxes { var wg sync.WaitGroup
// Open boxes
for _, b := range boxes {
wg.Add(1)
go func(box *Box) {
defer wg.Done()
if err := box.Open(); err != nil { if err := box.Open(); err != nil {
log.WithFields(log.Fields{"app": a.name, "call": "box.Open", "box": box.name, "error": err}).Errorf("") log.WithFields(log.Fields{"name": box.name, "call": "Open", "error": err}).Errorf("")
return
}
}(b)
defer b.Close()
}
wg.Wait()
if sched, err := a.Run(time.Now()); err != nil {
log.WithFields(log.Fields{"call": "Run", "error": err}).Errorf("")
return err return err
} else {
if sched == "" {
return fmt.Errorf("no backup needed")
} }
defer box.Close()
} }
return nil return nil
} }

View File

@ -1,7 +1,7 @@
// Code generated by version.sh (@generated) DO NOT EDIT. // Code generated by version.sh (@generated) DO NOT EDIT.
package main package main
var githash = "2aca8b1" var githash = "6ae863b"
var branch = "master" var branch = "master"
var buildstamp = "2025-10-19_11:33:05" var buildstamp = "2025-10-19_11:55:34"
var commits = "112" var commits = "113"
var version = "2aca8b1-b112 - 2025-10-19_11:33:05" var version = "6ae863b-b113 - 2025-10-19_11:55:34"