From 6ef4a42ab7e5234e6ff57dec3b222604cf073af4 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Sun, 10 Feb 2019 19:17:26 +0000 Subject: [PATCH] Move yggdrasilconf into cmd, build by default --- .../yggdrasilconf/main.go | 66 +++++++++++-------- 1 file changed, 40 insertions(+), 26 deletions(-) rename contrib/config/yggdrasilconf.go => cmd/yggdrasilconf/main.go (77%) diff --git a/contrib/config/yggdrasilconf.go b/cmd/yggdrasilconf/main.go similarity index 77% rename from contrib/config/yggdrasilconf.go rename to cmd/yggdrasilconf/main.go index 38b26108..20487f8d 100644 --- a/contrib/config/yggdrasilconf.go +++ b/cmd/yggdrasilconf/main.go @@ -14,7 +14,6 @@ import ( "io/ioutil" "os" "reflect" - "strconv" "github.com/hjson/hjson-go" "golang.org/x/text/encoding/unicode" @@ -27,7 +26,18 @@ type nodeConfig = config.NodeConfig func main() { 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") - 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() cfg := nodeConfig{} var config []byte @@ -54,35 +64,39 @@ func main() { panic(err) } json.Unmarshal(confJSON, &cfg) - if *get { - item := reflect.ValueOf(cfg) - for _, arg := range flag.Args() { - if item.Kind() == reflect.Map { - for _, key := range item.MapKeys() { - if key.String() == arg { - item = item.MapIndex(key) - } + + item := reflect.ValueOf(cfg) + for index, arg := range flag.Args() { + if *set || *add || *remove { + + } + 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 { - bs, err = hjson.Marshal(item.Interface()) + item = item.FieldByName(arg) } - if err != nil { - panic(err) + if !item.IsValid() { + os.Exit(1) + return } - fmt.Println(string(bs)) - os.Exit(0) + } + var bs []byte + if *usejson { + bs, err = json.Marshal(item.Interface()) } else { + bs, err = hjson.Marshal(item.Interface()) + } + if err != nil { + panic(err) + } + fmt.Println(string(bs)) + os.Exit(0) + + /* else { switch flag.Arg(0) { case "setMTU": cfg.IfMTU, err = strconv.Atoi(flag.Arg(1)) @@ -123,7 +137,7 @@ func main() { case "setNodeInfoName": cfg.NodeInfo["name"] = flag.Arg(1) } - } + }*/ var bs []byte if *usejson { bs, err = json.Marshal(cfg)