58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"go.wit.com/lib/protobuf/forgepb"
|
|
"go.wit.com/log"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
func LoadPatchsets() error {
|
|
me.all = forgepb.NewPatchsets()
|
|
|
|
filename := filepath.Join(LIBDIR, "all-patches.pb")
|
|
|
|
data, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = me.all.Unmarshal(data)
|
|
if err != nil {
|
|
log.Infof("LoadPatchsets() proto.Marshal() error %v\n", err)
|
|
return err
|
|
}
|
|
log.Infof("LoadPatchsets() worked ok %d\n", me.all.Len())
|
|
return nil
|
|
}
|
|
|
|
func SavePatchsets() error {
|
|
filename := filepath.Join(LIBDIR, "all-patches.pb")
|
|
regfile, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
|
|
if err != nil {
|
|
log.Info("SavePatchsets() filename open error:", filename, err)
|
|
// fmt.Fprintln(w, "filename open error:", filename, err)
|
|
return err
|
|
}
|
|
defer regfile.Close()
|
|
|
|
newpb := proto.Clone(me.all).(*forgepb.Patchsets)
|
|
if newpb == nil {
|
|
for pset := range me.all.IterAll() {
|
|
showPatchsets(pset)
|
|
}
|
|
return log.Errorf("SavePatchsets() Clone failed!")
|
|
}
|
|
|
|
data, err := newpb.Marshal()
|
|
if err != nil {
|
|
log.Infof("SavePatchset() proto.Marshal() error %v\n", err)
|
|
return err
|
|
}
|
|
log.Infof("SavePatchset() worked (%d) bytes\n", len(data))
|
|
regfile.Write(data)
|
|
return nil
|
|
}
|