From 5f886d7c078049b01723db5c5b04b0bdf9437c9d Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 10 Sep 2025 14:56:48 -0500 Subject: add Save() --- load.go | 2 +- save.go | 57 ++++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/load.go b/load.go index 1568968..5373025 100644 --- a/load.go +++ b/load.go @@ -45,7 +45,7 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error { return ErrEmpty // file is empty } - // Unmarshal() + // Unmarshal() if err = prototext.Unmarshal(data, pb); err != nil { return err } diff --git a/save.go b/save.go index 35c5bab..b035e7c 100644 --- a/save.go +++ b/save.go @@ -1,24 +1,33 @@ package config -// functions to import and export the protobuf -// data to and from config files +import ( + "fmt" + "os" + "path/filepath" -/* + "go.wit.com/log" + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/proto" +) -func (e *Events) Save() { - var fullname string - base, _ := filepath.Split(argv.Config) - fullname = filepath.Join(base, "events.pb") +var ErrProtoFilename error = log.Errorf("proto does not have Filename") - data, err := e.Marshal() +func ConfigSave(pb proto.Message) error { + // get pb.Filename if it is there in the .proto file + fullname, ok := GetFilename(pb) + if !ok { + return ErrProtoFilename + } + + // Unmarshal() + data, err := prototext.Marshal(pb) if err != nil { - log.Info("proto.Marshal() failed", err) - return + return err } - log.Info("proto.Marshal() worked len", len(data)) - configWrite(fullname, data) -} + log.Infof("ConfigSave() filename=%s %d\n", fullname, len(data)) + return configWrite(fullname, data) +} func configWrite(fullname string, data []byte) error { if _, base := filepath.Split(fullname); base == "" { @@ -30,10 +39,28 @@ func configWrite(fullname string, data []byte) error { log.Warn("open config file :", err) return err } - cfgfile.Write(data) - return nil + _, err = cfgfile.Write(data) + return err } +/* + +func (e *Events) Save() { + var fullname string + base, _ := filepath.Split(argv.Config) + fullname = filepath.Join(base, "events.pb") + + data, err := e.Marshal() + if err != nil { + log.Info("proto.Marshal() failed", err) + return + } + log.Info("proto.Marshal() worked len", len(data)) + configWrite(fullname, data) +} + + + func (m *Portmaps) configWrite(fullname string, data []byte) error { if _, base := filepath.Split(fullname); base == "" { return fmt.Errorf("--config option not set") -- cgit v1.2.3