Move yggdrasilconf into cmd, build by default

This commit is contained in:
Neil Alexander 2019-02-10 19:17:26 +00:00
parent 0fd6f57124
commit 6ef4a42ab7
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -14,7 +14,6 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"reflect" "reflect"
"strconv"
"github.com/hjson/hjson-go" "github.com/hjson/hjson-go"
"golang.org/x/text/encoding/unicode" "golang.org/x/text/encoding/unicode"
@ -27,7 +26,18 @@ type nodeConfig = config.NodeConfig
func main() { func main() {
useconffile := flag.String("useconffile", "/etc/yggdrasil.conf", "update config at specified file path") useconffile := flag.String("useconffile", "/etc/yggdrasil.conf", "update config at specified file path")
usejson := flag.Bool("json", false, "write out new config as JSON instead of HJSON") usejson := flag.Bool("json", false, "write out new config as JSON instead of HJSON")
get := flag.Bool("get", false, "get value instead of setting it")
var action string
switch flag.Arg(0) {
case "get":
case "set":
case "add":
case "remove":
action = flag.Arg(0)
default:
fmt.Errorf("Action must be get, set, add or remove")
}
flag.Parse() flag.Parse()
cfg := nodeConfig{} cfg := nodeConfig{}
var config []byte var config []byte
@ -54,35 +64,39 @@ func main() {
panic(err) panic(err)
} }
json.Unmarshal(confJSON, &cfg) json.Unmarshal(confJSON, &cfg)
if *get {
item := reflect.ValueOf(cfg) item := reflect.ValueOf(cfg)
for _, arg := range flag.Args() { for index, arg := range flag.Args() {
if item.Kind() == reflect.Map { if *set || *add || *remove {
for _, key := range item.MapKeys() {
if key.String() == arg { }
item = item.MapIndex(key) if item.Kind() == reflect.Map {
} for _, key := range item.MapKeys() {
if key.String() == arg {
item = item.MapIndex(key)
} }
} else {
item = item.FieldByName(arg)
} }
if !item.IsValid() {
os.Exit(1)
return
}
}
var bs []byte
if *usejson {
bs, err = json.Marshal(item.Interface())
} else { } else {
bs, err = hjson.Marshal(item.Interface()) item = item.FieldByName(arg)
} }
if err != nil { if !item.IsValid() {
panic(err) os.Exit(1)
return
} }
fmt.Println(string(bs)) }
os.Exit(0) var bs []byte
if *usejson {
bs, err = json.Marshal(item.Interface())
} else { } else {
bs, err = hjson.Marshal(item.Interface())
}
if err != nil {
panic(err)
}
fmt.Println(string(bs))
os.Exit(0)
/* else {
switch flag.Arg(0) { switch flag.Arg(0) {
case "setMTU": case "setMTU":
cfg.IfMTU, err = strconv.Atoi(flag.Arg(1)) cfg.IfMTU, err = strconv.Atoi(flag.Arg(1))
@ -123,7 +137,7 @@ func main() {
case "setNodeInfoName": case "setNodeInfoName":
cfg.NodeInfo["name"] = flag.Arg(1) cfg.NodeInfo["name"] = flag.Arg(1)
} }
} }*/
var bs []byte var bs []byte
if *usejson { if *usejson {
bs, err = json.Marshal(cfg) bs, err = json.Marshal(cfg)