diff options
Diffstat (limited to 'load.go')
| -rw-r--r-- | load.go | 70 |
1 files changed, 23 insertions, 47 deletions
@@ -5,12 +5,12 @@ package config import ( "errors" + "fmt" "os" "path/filepath" "strings" "go.wit.com/lib/protobuf/filepb" - "go.wit.com/log" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/encoding/prototext" "google.golang.org/protobuf/proto" @@ -22,8 +22,8 @@ func Load(argname string) ([]byte, string) { } */ -var ErrEmpty error = log.Errorf("config file was empty") -var ErrMarshal error = log.Errorf("protobuf parse error") +var ErrEmpty error = fmt.Errorf("config file was empty") +var ErrMarshal error = fmt.Errorf("protobuf parse error") // returns: // - Full path to the config file. usually: ~/.config/<argname> @@ -34,7 +34,6 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error { var err error homeDir, err := os.UserHomeDir() if err != nil { - log.Printf("ConfigLoad() UserHomeDir() err=%v\n", err) return err } @@ -50,7 +49,6 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error { if errors.Is(err, ErrEmpty) { return ErrEmpty } - log.Info("ConfigLoad() error", fullname, err) return err } @@ -61,20 +59,26 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error { fulljson := fullname + ".json" if err := loadJSON(pb, fulljson); err == nil { return nil - } else { - log.Info("Config file load failed:", fulljson, err) } } } - - log.Info("Config file load failed:", fullname, err) return ErrMarshal } +// loads from the users .cache dir +// todo: err handling +func LoadCache(pb proto.Message, argname string, protoname string) error { + cacheDir, _ := os.UserCacheDir() + fullpath := filepath.Join(cacheDir, ".config", argname) + os.MkdirAll(fullpath, os.ModePerm) + fullname := filepath.Join(fullpath, protoname+".pb") + SetFilename(pb, fullname) + return Load(pb) +} + func Load(pb proto.Message) error { fullname, err := GetFilename(pb) if err != nil { - log.Info("'Filename' is not in: =", fullname, err) return err } // text is supposed to be "easy". Don't verify 'version' @@ -87,8 +91,7 @@ func Load(pb proto.Message) error { var worked bool ver, err := GetString(pb, "version") if err != nil { - log.Info("'Version' is not in: =", fullname, err) - return err + return errors.Join(err, errors.New("'Version' is not in: "+fullname)) } // maybe don't really verify .json files (?) // doing it for now anyway. maybe just return an error @@ -104,21 +107,21 @@ func Load(pb proto.Message) error { if pberr != nil { return pberr } - log.Info("your version :", ver) - log.Info("pb version is:", pbver) - log.Info("pb uuid is:", pbuuid) + err = errors.Join(err, errors.New("your version:"+ver)) + err = errors.Join(err, errors.New("pb version is:"+pbver)) + err = errors.Join(err, errors.New("pb uuid is:"+pbuuid)) return err } worked = true } if !worked { - return log.Errorf("unknown filetype %s", fullname) + return fmt.Errorf("unknown filetype %s", fullname) } newver, _ := GetString(pb, "version") if ver != newver { - log.Printf("VERSION '%s' != '%s'\n", ver, newver) - log.Info("Your protobuf file is old and can not be loaded") - log.Info("You must delete or convert the file", fullname) + fmt.Printf("VERSION '%s' != '%s'\n", ver, newver) + fmt.Println("Your protobuf file is old and can not be loaded") + fmt.Println("You must delete or convert the file", fullname) // probably should ALWAYS PANIC HERE panic("protobuf version mismatch") } @@ -136,19 +139,17 @@ func LoadFile(pb proto.Message, fullname string) error { return loadPB(pb, fullname) } - return log.Errorf("unknown filetype %s", fullname) + return fmt.Errorf("unknown filetype %s", fullname) } func loadPB(pb proto.Message, fullname string) error { data, err := loadFile(fullname) if err != nil { - log.Warn("LoadPB()", fullname, err) // set pb.Filename that was attempted return err } if err = proto.Unmarshal(data, pb); err != nil { - log.Warn("LoadPB() error Unmarshal() ", fullname, err) return err } @@ -162,7 +163,6 @@ func LoadPB(pb proto.Message, argname string, protoname string) (string, error) } else { homeDir, err := os.UserHomeDir() if err != nil { - log.Warn("ConfigLoad() UserHomeDir() err", err) return "", err } @@ -171,15 +171,11 @@ func LoadPB(pb proto.Message, argname string, protoname string) (string, error) data, err := loadFile(fullname) if err != nil { - log.Warn("LoadPB()", fullname, err) - // set pb.Filename that was attempted return fullname, err } // Unmarshal() if err = proto.Unmarshal(data, pb); err != nil { - log.Warn("LoadPB() file", fullname) - log.Warn("LoadPB() Unmarshal() err", err) return fullname, err } @@ -191,34 +187,24 @@ func loadTEXT(pb proto.Message, fullname string) error { var err error SetFilename(pb, fullname) if data, err = loadFile(fullname); err != nil { - log.Warn("config file failed to load", err) - // set pb.Filename that was attempted return err } // don't even bother with Marshal() if data == nil { - log.Warn("ConfigLoad() config file was empty", fullname) return ErrEmpty // file is empty } // Unmarshal() if err = prototext.Unmarshal(data, pb); err != nil { - log.Warn("ConfigLoad() file", fullname) - log.Warn("ConfigLoad() Unmarshal() err", err) return ErrMarshal } if fn, err := GetFilename(pb); err != nil { if fn != fullname { - log.Info("config.ConfigLoad() new filename:", fullname) SetFilename(pb, fullname) } } - - if os.Getenv("CONFIG_VERBOSE") == "true" { - log.Infof("ConfigLoad() %s len()=%d\n", fullname, len(data)) - } return nil } @@ -228,33 +214,24 @@ func loadJSON(pb proto.Message, fullname string) error { var data []byte var err error if data, err = loadFile(fullname); err != nil { - log.Warn("config file failed to load", err) return err } // don't even bother with Marshal() if data == nil { - log.Warn("ConfigLoad() config file was empty", fullname) return ErrEmpty // file is empty } // Unmarshal() if err = protojson.Unmarshal(data, pb); err != nil { - log.Warn("ConfigLoad() file", fullname) - log.Warn("ConfigLoad() Unmarshal() err", err) return ErrMarshal } if fn, err := GetFilename(pb); err != nil { if fn != fullname { - log.Info("config.ConfigLoad() new filename:", fullname) SetFilename(pb, fullname) } } - - if os.Getenv("CONFIG_VERBOSE") == "true" { - log.Infof("ConfigLoad() %s len()=%d\n", fullname, len(data)) - } return nil } @@ -285,7 +262,6 @@ func loadFile(fullname string) ([]byte, error) { return nil, err } if err != nil { - // log.Info("open config file :", err) return nil, err } if len(data) == 0 { |
