Files
zurg/internal/config/load.go
Ben Sarmiento 5c3d159c3f stream file fix
2023-10-29 16:29:18 +01:00

43 lines
851 B
Go

package config
import (
"fmt"
"os"
"gopkg.in/yaml.v3"
)
type ConfigInterface interface {
GetVersion() string
GetToken() string
GetNumOfWorkers() int
GetRefreshEverySeconds() int
GetCacheTimeHours() int
EnableRepair() bool
GetPort() string
GetDirectories() []string
MeetsConditions(directory, torrentID, torrentName string, fileNames []string) bool
GetOnLibraryUpdate() string
GetNetworkBufferSize() int
}
func LoadZurgConfig(filename string) (ConfigInterface, error) {
content, err := os.ReadFile(filename)
if err != nil {
return nil, err
}
var initialConfig ZurgConfig
if err := yaml.Unmarshal(content, &initialConfig); err != nil {
return nil, err
}
switch initialConfig.Version {
case "v1":
return loadV1Config(content)
default:
return nil, fmt.Errorf("invalid config version: %s", initialConfig.Version)
}
}