diff options
Diffstat (limited to 'rhimport/conf.go')
-rw-r--r-- | rhimport/conf.go | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/rhimport/conf.go b/rhimport/conf.go index 942bb62..502882d 100644 --- a/rhimport/conf.go +++ b/rhimport/conf.go @@ -24,6 +24,12 @@ package rhimport +import ( + "strconv" + + "github.com/vaughan0/go-ini" +) + type ImportParamDefaults struct { Channels uint NormalizationLevel int @@ -32,20 +38,59 @@ type ImportParamDefaults struct { } type Config struct { + ConfigFile string RDXportEndpoint string TempDir string LocalFetchDir string + SampleRate uint ImportParamDefaults } -func NewConfig(rdxportEndpoint, tempDir, localFetchDir string) (conf *Config) { +func getIniValue(file ini.File, section string, key string, dflt string) string { + value, ok := file.Get(section, key) + if ok { + return value + } + return dflt +} + +func (c *Config) readConfigFile() error { + file, err := ini.LoadFile(c.ConfigFile) + if err != nil { + return err + } + + sr := getIniValue(file, "Format", "SampleRate", "44100") + if sr64, err := strconv.ParseUint(sr, 10, 32); err != nil { + return err + } else { + c.SampleRate = uint(sr64) + } + + ch := getIniValue(file, "Format", "Channels", "2") + if ch64, err := strconv.ParseUint(ch, 10, 32); err != nil { + return err + } else { + c.ImportParamDefaults.Channels = uint(ch64) + } + + return nil +} + +func NewConfig(configfile, rdxportEndpoint, tempDir, localFetchDir string) (conf *Config, err error) { conf = new(Config) + conf.ConfigFile = configfile conf.RDXportEndpoint = rdxportEndpoint conf.TempDir = tempDir conf.LocalFetchDir = localFetchDir + conf.SampleRate = 44100 conf.ImportParamDefaults.Channels = 2 conf.ImportParamDefaults.NormalizationLevel = 0 conf.ImportParamDefaults.AutotrimLevel = 0 conf.ImportParamDefaults.UseMetaData = true + + if err = conf.readConfigFile(); err != nil { + return + } return } |