47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
appconfig "github.com/D36u99er/bc-netts-energy/internal/config"
|
|
serverhttp "github.com/D36u99er/bc-netts-energy/internal/http"
|
|
applogger "github.com/D36u99er/bc-netts-energy/internal/logger"
|
|
"github.com/D36u99er/bc-netts-energy/internal/netts"
|
|
"github.com/D36u99er/bc-netts-energy/internal/service"
|
|
)
|
|
|
|
func main() {
|
|
configPath := flag.String("config", "", "path to configuration file")
|
|
flag.Parse()
|
|
|
|
cfg, err := appconfig.Load(*configPath)
|
|
if err != nil {
|
|
log.Fatalf("failed to load configuration: %v", err)
|
|
}
|
|
|
|
logger := applogger.New(cfg.Logging.Level, cfg.Logging.Format)
|
|
logger.Info("configuration loaded",
|
|
"address", cfg.Server.Address,
|
|
"netts_base_url", cfg.Netts.BaseURL,
|
|
)
|
|
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
nettsClient := netts.New(cfg.Netts, logger, nil)
|
|
energySvc := service.NewEnergyService(cfg.Energy, nettsClient, logger)
|
|
httpServer := serverhttp.NewServer(cfg.Server, energySvc, logger)
|
|
|
|
if err := httpServer.Run(ctx); err != nil {
|
|
logger.Error("server terminated with error", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
logger.Info("shutdown complete")
|
|
}
|