summaryrefslogtreecommitdiff
path: root/load.go
diff options
context:
space:
mode:
Diffstat (limited to 'load.go')
-rw-r--r--load.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/load.go b/load.go
index 1df5665..84a13c4 100644
--- a/load.go
+++ b/load.go
@@ -53,6 +53,36 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error {
return log.Errorf("could not load config file")
}
+func LoadFile(pb proto.Message, fullname string) error {
+ if strings.HasSuffix(fullname, ".text") {
+ return loadTEXT(pb, fullname)
+ }
+ if strings.HasSuffix(fullname, ".json") {
+ return loadJSON(pb, fullname)
+ }
+ if strings.HasSuffix(fullname, ".pb") {
+ return loadPB(pb, fullname)
+ }
+
+ return log.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
+ }
+
+ return nil
+}
+
func LoadPB(pb proto.Message, argname string, protoname string) (string, error) {
var fullname string
if strings.HasPrefix(argname, "/") {