summaryrefslogtreecommitdiff
path: root/rhimport/conf.go
diff options
context:
space:
mode:
Diffstat (limited to 'rhimport/conf.go')
-rw-r--r--rhimport/conf.go47
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
}