package config

import (
	"log/slog"

	_ "github.com/joho/godotenv/autoload"
	"github.com/spf13/viper"
)

func ReadConfigFile(configFile string) {
	setDefaults()
	if configFile != "" {
		slog.Info("reading Config file", "file", configFile)
		viper.SetConfigFile(configFile)
	} else {
		viper.AddConfigPath(".")
		viper.AddConfigPath("/etc/scanfile/")
		viper.SetConfigName("config")
		viper.SetConfigType("toml")
	}
	viper.SetEnvPrefix("SF")

	viper.ReadInConfig()
	viper.AutomaticEnv()
	if viper.ConfigFileUsed() == "" {
		viper.WriteConfigAs("./config.toml")
	}
	slog.Info("done reading config", "file", viper.ConfigFileUsed())
}

func setDefaults() {
	// Web
	viper.SetDefault("web.port", 8080)
	viper.SetDefault("web.host", "127.0.0.1")
	viper.SetDefault("web.tls", false)
	viper.SetDefault("web.cert", "/etc/ssl/certs/ssl-cert-snakeoil.pem")
	viper.SetDefault("web.key", "/etc/ssl/key/ssl-cert-snakeoil.key")
	viper.SetDefault("web.loghttp", true)
}

func SaveConfig() error {
	return viper.WriteConfig()
}
