summaryrefslogtreecommitdiff
path: root/load.go
diff options
context:
space:
mode:
Diffstat (limited to 'load.go')
-rw-r--r--load.go70
1 files changed, 23 insertions, 47 deletions
diff --git a/load.go b/load.go
index 160bd0e..bf1182e 100644
--- a/load.go
+++ b/load.go
@@ -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 {