core: Prototype config parser
This commit is contained in:
parent
eee2dd703d
commit
74dc289e09
|
@ -1,12 +1,48 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
}
|
||||
|
||||
func LoadConfig(configPath string) (*Config, error) {
|
||||
return nil, errors.New("Not implemented")
|
||||
type ConfigRoot struct {
|
||||
Contacts map[string]ConfigContact
|
||||
Identity ConfigIdentity
|
||||
}
|
||||
|
||||
type ConfigContact struct {
|
||||
Hostname string
|
||||
LastConnected string
|
||||
Nickname string
|
||||
WhenCreated string
|
||||
}
|
||||
|
||||
type ConfigIdentity struct {
|
||||
DataDirectory string
|
||||
HostnameBlacklist []string
|
||||
ServiceKey string
|
||||
}
|
||||
|
||||
func LoadConfig(configPath string) (*Config, error) {
|
||||
configFile := filepath.Join(configPath, "ricochet.json")
|
||||
configData, err := ioutil.ReadFile(configFile)
|
||||
if err != nil {
|
||||
log.Printf("Config read error from %s: %v", configFile, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var root ConfigRoot
|
||||
if err := json.Unmarshal(configData, &root); err != nil {
|
||||
log.Printf("Config parse error: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Printf("Config: %v", root)
|
||||
|
||||
return &Config{}, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue