mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-06 10:22:50 +08:00
55 lines
1009 B
Go
55 lines
1009 B
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"gopkg.in/ini.v1"
|
|
"path"
|
|
)
|
|
|
|
const VERSION = "alpha 0.6.8"
|
|
|
|
const CONFIG_PATH = "./config.ini"
|
|
const Assests_PATH = "./assets"
|
|
|
|
func GetAssetPath(name string) string {
|
|
return path.Join(Assests_PATH, name)
|
|
}
|
|
|
|
type Config interface {
|
|
Name() string
|
|
}
|
|
|
|
var ConfigFile *ini.File
|
|
var Configs = make([]Config, 0)
|
|
|
|
func LoadConfig(cfg Config) {
|
|
sec, err := ConfigFile.GetSection(cfg.Name())
|
|
if err == nil {
|
|
_ = sec.MapTo(cfg)
|
|
}
|
|
Configs = append(Configs, cfg)
|
|
return
|
|
}
|
|
|
|
func init() {
|
|
var err error
|
|
ConfigFile, err = ini.Load(CONFIG_PATH)
|
|
if err != nil {
|
|
fmt.Println("config not found, using default config")
|
|
ConfigFile = ini.Empty()
|
|
}
|
|
for _, cfg := range []Config{Log, LiveRoom, Player, Provider, General} {
|
|
LoadConfig(cfg)
|
|
}
|
|
}
|
|
|
|
func SaveToConfigFile(filename string) error {
|
|
cfgFile := ini.Empty()
|
|
for _, cfg := range Configs {
|
|
if err := cfgFile.Section(cfg.Name()).ReflectFrom(cfg); err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
}
|
|
return cfgFile.SaveTo(filename)
|
|
}
|