63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"log/slog"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"git.systemact.nl/henk/mars-terraform-registry/internal/config"
|
|
"git.systemact.nl/henk/mars-terraform-registry/internal/server"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
func main() {
|
|
homeDir, err := os.UserHomeDir()
|
|
if err != nil {
|
|
panic("Can't determine home directory")
|
|
}
|
|
appDir := filepath.Join(homeDir, ".local", "share", "mars_terraform_registry")
|
|
logFileDir := filepath.Join(appDir, "logs")
|
|
if err := os.MkdirAll(logFileDir, 0755); err != nil {
|
|
panic("Can't create log directory")
|
|
}
|
|
logFilePath := filepath.Join(logFileDir, "mars_terraform_registry.log")
|
|
// Create Lumberjack rolling logger (replaces *os.File)
|
|
logFile := &lumberjack.Logger{
|
|
Filename: logFilePath,
|
|
MaxSize: 10, // MB: size at which to rotate
|
|
MaxAge: 30, // Days: how long to keep old logs
|
|
MaxBackups: 5, // Number of old logs to keep
|
|
Compress: true, // .gz compression for old logs
|
|
LocalTime: true, // Local time instead of UTC in filenames
|
|
}
|
|
|
|
defer logFile.Close()
|
|
multiWriter := io.MultiWriter(os.Stdout, logFile)
|
|
|
|
logOptions := slog.HandlerOptions{
|
|
Level: slog.LevelDebug,
|
|
}
|
|
slog.SetDefault(slog.New(slog.NewJSONHandler(multiWriter, &logOptions)))
|
|
slog.Info("Logging test")
|
|
yamlConfigLoader := &config.YamlConfigLoader{FilePath: filepath.Join(appDir, "config", "config.yaml")}
|
|
cfg, err := yamlConfigLoader.LoadConfig()
|
|
if err != nil {
|
|
slog.Error("Failed to load config", slog.Any("error", err))
|
|
panic("Failed to load config")
|
|
}
|
|
slog.Info("Config loaded", slog.Any("config", cfg))
|
|
server, err := server.NewServer(cfg)
|
|
if err != nil {
|
|
slog.Error("Failed to create server", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
if err := server.Run(context.Background()); err != nil {
|
|
slog.Error("Server error", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
}
|