add update interval option

This commit is contained in:
ngn
2024-11-22 16:56:02 +03:00
parent 6810f9b2ec
commit f9e9ef2dd1
5 changed files with 45 additions and 32 deletions

37
main.go
View File

@ -35,29 +35,42 @@ type tracker struct {
Config lib.Config
Last time.Time
List []lib.Package
Tick time.Ticker
Tick *time.Ticker
}
func (t *tracker) Reload() error {
t.List = []lib.Package{}
err := t.Config.Load(&t.List, "config.json")
t.Last = time.Now()
return err
for _, p := range t.Config.Pools {
if err := p.Load(&t.List); err != nil {
return err
}
}
return nil
}
func (t *tracker) Loop() {
var err error
if err = t.Reload(); err != nil {
log.Error("Failed to update packages: %s", err.Error())
if err := t.Config.Load(&t.List, "config.json"); err != nil {
log.Error("Failed to load the configuration: %s", err.Error())
return
}
if err := t.Reload(); err != nil {
log.Error("Failed to update packages: %s", err.Error())
return
}
t.Tick = time.NewTicker(time.Minute * time.Duration(t.Config.Interval))
for {
select {
case <-t.Tick.C:
if err = t.Reload(); err != nil {
if err := t.Reload(); err != nil {
log.Error("Failed to update packages: %s", err.Error())
}
case <-t.Channel:
t.Tick.Stop()
return
@ -72,14 +85,13 @@ func (t *tracker) Stop() {
func main() {
var (
tracker tracker
engine *html.Engine
app *fiber.App
err error
)
engine = html.New("./templates", ".html")
app = fiber.New(fiber.Config{
DisableStartupMessage: true,
Views: engine,
Views: html.New("./templates", ".html"),
})
app.Static("/", "./public")
@ -102,8 +114,7 @@ func main() {
log.Info("Starting MatterLinux package tracker on port 9877")
err := app.Listen(":9877")
if err != nil {
if err = app.Listen(":9877"); err != nil {
log.Error("Error starting server: %s", err.Error())
}