Files
bibliomane/internal/config/config.go
2025-09-17 18:55:33 +02:00

50 lines
877 B
Go

package config
import (
"errors"
"log"
"os"
"github.com/pelletier/go-toml"
)
type Config struct {
Port string `toml:"port" comment:"The port to listen on for the server."`
DemoDataPath string `toml:"demo_data_path" comment:"The path to the sql file to load for demo data."`
}
func defaultConfig() Config {
return Config{Port: "8080", DemoDataPath: ""}
}
func LoadConfig(configPath string) Config {
f, err := os.ReadFile(configPath)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return initConfig(configPath)
}
log.Fatal(err)
}
var cfg Config
err = toml.Unmarshal(f, &cfg)
if err != nil {
panic(err)
}
return cfg
}
func initConfig(configPath string) Config {
cfg := defaultConfig()
b, err := toml.Marshal(cfg)
if err != nil {
panic(err)
}
err = os.WriteFile(configPath, b, 0666)
if err != nil {
log.Fatal(err)
}
return cfg
}