snow/aid/config.go

55 lines
1.1 KiB
Go
Raw Normal View History

2023-11-01 21:51:14 +00:00
package aid
import (
"os"
"gopkg.in/ini.v1"
)
type CS struct {
Database struct {
URI string
Type string
2023-11-02 17:50:52 +00:00
DropAllTables bool
2023-11-01 21:51:14 +00:00
}
Output struct {
Level string
}
}
var (
Config *CS
)
func LoadConfig() {
Config = &CS{}
configPath := "config.ini"
if _, err := os.Stat(configPath); err != nil {
panic("config.ini not found! please rename default.config.ini to config.ini and complete")
}
cfg, err := ini.Load("config.ini")
if err != nil {
panic(err)
}
2023-11-02 17:50:52 +00:00
Config.Database.DropAllTables = cfg.Section("database").Key("drop").MustBool(false)
2023-11-01 21:51:14 +00:00
Config.Database.URI = cfg.Section("database").Key("uri").String()
if Config.Database.URI == "" {
panic("Database URI is empty")
}
Config.Database.Type = cfg.Section("database").Key("type").String()
if Config.Database.Type == "" {
panic("Database Type is empty")
}
Config.Output.Level = cfg.Section("output").Key("level").String()
if Config.Output.Level == "" {
panic("Output Level is empty")
}
if Config.Output.Level != "dev" && Config.Output.Level != "prod" && Config.Output.Level != "time" && Config.Output.Level != "info" {
panic("Output Level must be either dev or prod")
}
}