From 782817521ce0e3822b6941e843095c5696ae0ac0 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 30 Jan 2025 05:57:35 -0600 Subject: [PATCH] add /GetPatchsets --- doPatchsets.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/doPatchsets.go b/doPatchsets.go index be1f28f..53e2789 100644 --- a/doPatchsets.go +++ b/doPatchsets.go @@ -7,10 +7,63 @@ import ( "path/filepath" "time" + "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) +func doSendPatchsets(w http.ResponseWriter) { + // log.HttpMode(w) + // defer log.HttpMode(nil) + + dirname := filepath.Join(LIBDIR, "patchset/") + // Open the directory + entries, err := os.ReadDir(dirname) + if err != nil { + log.Printf("Error reading directory: %v\n", err) + return + } + + var psets *forgepb.Patchsets + psets = forgepb.NewPatchsets() // this sets the proper handshake protobuf UUID + + // Iterate through the directory entries + for _, entry := range entries { + // Check if the entry is a file and matches the *.pb pattern + if !entry.IsDir() && filepath.Ext(entry.Name()) == ".pb" { + bytes, err := os.ReadFile(filepath.Join(dirname, entry.Name())) + if err != nil { + fmt.Fprintln(w, entry.Name(), err) + fmt.Println(entry.Name(), err) + continue + } + var p *forgepb.Patchset + p = new(forgepb.Patchset) + err = p.Unmarshal(bytes) + if err != nil { + fmt.Fprintln(w, entry.Name(), err) + fmt.Println(entry.Name(), err) + continue + } + + psets.Append(p) + } + } + + // marshal the protobuf to xfer over the socket + data, err := psets.Marshal() + if err != nil { + log.Info("patchsets.Marshal() to wire failed", err) + return + } + + start := time.Now() + log.Info("going to w.Write(data) with len", len(data)) + w.Write(data) + age := shell.FormatDuration(time.Since(start)) + log.Printf("Done with xfer in (%s). happy hacking!\n", age) +} + func getPatchset(w http.ResponseWriter, pbname string) { if pbname == "" { fmt.Fprintf(w, "filename was empty")