Files

47 lines
873 B
Go

package main
import (
"flag"
"log/slog"
"os"
"os/signal"
"syscall"
"zeromesh/internal/agent"
"zeromesh/internal/config"
)
func main() {
cfgPath := flag.String("config", "config.yaml", "config file path")
flag.Parse()
cfg, err := config.Load(*cfgPath)
if err != nil {
slog.Error("load config", "err", err)
os.Exit(1)
}
logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelInfo}))
slog.SetDefault(logger)
ag, err := agent.New(cfg.Agent, logger)
if err != nil {
slog.Error("init agent", "err", err)
os.Exit(1)
}
if err := ag.Start(); err != nil {
slog.Error("start agent", "err", err)
os.Exit(1)
}
slog.Info("agent started", "address", ag.Identity().Address)
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
slog.Info("stopping agent...")
ag.Stop()
}