2026-05-26 15:31:44 +02:00

37 lines
687 B
Go

package config
import (
"encoding/json"
"fmt"
"os"
)
// Config is the application configuration loaded from JSON.
type Config struct {
Host string `json:"host"`
Port int `json:"port"`
}
// Default returns sensible defaults when no config file is used.
func Default() *Config {
return &Config{
Host: "127.0.0.1",
Port: 8080,
}
}
// Load reads and parses a JSON config file from path.
func Load(path string) (*Config, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("read config: %w", err)
}
cfg := Default()
if err := json.Unmarshal(data, cfg); err != nil {
return nil, fmt.Errorf("parse config: %w", err)
}
return cfg, nil
}