summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patchset.Get.go84
-rw-r--r--patchset.Send.go170
-rw-r--r--patchset.new.go9
3 files changed, 9 insertions, 254 deletions
diff --git a/patchset.Get.go b/patchset.Get.go
deleted file mode 100644
index e9f183d..0000000
--- a/patchset.Get.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 1994-2025 WIT.COM Inc Licensed GPL 3.0
-
-package forgepb
-
-import (
- "go.wit.com/log"
-)
-
-// retrieves current patches from forge
-func (f *Forge) GetPatches() error {
- body, err := f.HttpPost("junk", "GetPatchsets", nil)
- if err != nil {
- log.Info("httpPost() failed:", err)
- return err
- }
- log.Info("GetPatchets() len(body)", len(body))
- var psets *Patchsets
- psets = new(Patchsets)
- err = psets.Unmarshal(body)
- if err != nil {
- log.Info("Unmarshal failed", err)
- return err
- }
- psets.PrintTable()
- f.loadUpstreamPatchsets(psets)
- return nil
-}
-
-func (f *Forge) expireAllPatchsets() {
- all := f.Patchsets.All()
- for all.Scan() {
- pset := all.Next()
- pset.State = "DONE"
- }
-}
-
-func (f *Forge) loadUpstreamPatchsets(psets *Patchsets) {
- var foundnew bool
-
- all := psets.All()
- for all.Scan() {
- pset := all.Next()
- found := f.Patchsets.FindByUuid(pset.Uuid)
- if found == nil {
- f.expireAllPatchsets()
- log.Info("new patchset", pset.Name, pset.Uuid)
- pset.State = "new"
- foundnew = true
- if pset == nil {
- log.Warn("OH NO! pset == nil")
- continue
- }
- if f.Patchsets == nil {
- log.Warn("OH NO! f.Patchsets == nil")
- continue
- }
- log.Warn("appending pset", pset.Uuid, pset.State, pset.Name)
- f.Patchsets.Append(pset)
- continue
- }
- author := log.Sprintf("Author: %s <%s>", found.GitAuthorName, found.GitAuthorEmail)
- log.Info("EXAMINE PSET", pset.Name, pset.Uuid, pset.Patches.Len())
- for _, patch := range pset.Patches.Patches {
- // log.Info("\tnew patch:", i, patch.CommitHash, patch.Namespace)
- if f.findPatch(patch) {
- // log.Info("\talready found!!!!!!!", pset.Uuid, patch.Namespace)
- continue
- }
- if f.AddNewPatch(patch) {
- log.Info("\tnew patch added:", patch.CommitHash, found.Name, found.Comment, author)
- foundnew = true
- } else {
- log.Info("\tnew patch failed:", patch.CommitHash, found.Name, found.Comment, author)
- }
- }
- pset.State = found.State
- if pset.State == "" {
- pset.State = "new"
- }
- }
- if foundnew {
- f.SavePatchsets()
- }
-}
diff --git a/patchset.Send.go b/patchset.Send.go
deleted file mode 100644
index 1601663..0000000
--- a/patchset.Send.go
+++ /dev/null
@@ -1,170 +0,0 @@
-package forgepb
-
-// functions to import and export the protobuf
-// data to and from config files
-
-import (
- "errors"
- "os"
- "path/filepath"
- "strings"
- "time"
-
- "go.wit.com/lib/protobuf/httppb"
- "go.wit.com/log"
-)
-
-func (f *Forge) SendPatches(what string, p *Patches) (*Patches, error) {
- route := "/patches/" + what
- data, err := p.Marshal()
- if err != nil {
- return nil, err
- }
- log.Infof("pb: len=%d, err=%v\n", len(data), err)
- newdata, err := httppb.HttpPost("rm this", route, data)
- if err != nil {
- return nil, err
- }
- if newdata == nil {
- return nil, err
- }
- if len(newdata) == 0 {
- return nil, err
- }
- log.Info("TODO: Unmarshal() to patches", len(newdata))
- return nil, err
-}
-
-// makes a new patches protobuf. These are all the patches on your machine.
-func NewPatches() *Patches {
- x := new(Patches)
- x.Uuid = "2679065e-c81d-4a00-aca4-03c158a834fb"
- x.Version = "v2.0.0 go.wit.com/lib/protobuf/forgepb"
- return x
-}
-
-func (f *Forge) SendPatchSet(pset *Patchset) error {
- var err error
- data, err := pset.Marshal()
- if err != nil {
- log.Info("proto.Marshal() pset(len) error", len(data), err)
- return err
- }
- now := time.Now()
- timestamp := now.Format("2006.01.02.150405") // bummer. other date doesn't work?
- cfgfile := "patchset/patchset." + timestamp + ".pb"
- log.Info("proto.Marshal() pset(len)", len(data))
- configWrite(cfgfile, data)
-
- return errors.New("don't know how to send yet")
-}
-
-func (f *Forge) SubmitDevelPatchSet(name string) (*Patchset, error) {
- pset, err := f.MakeDevelPatchSet(name)
- if err != nil {
- return nil, err
- }
- if err := f.submitPatchset(pset); err != nil {
- return nil, err
- }
- return pset, nil
-}
-
-func (f *Forge) submitPatchset(pset *Patchset) error {
- msg, err := pset.Marshal()
- if err != nil {
- log.Info("proto.Marshal() failed:", err)
- return err
- }
- log.Info("proto.Marshal() msg len", len(msg))
- body, err := f.HttpPost("rm this", "patchset", msg)
- if err != nil {
- log.Info("httpPost() failed:", err)
- return err
- }
- log.Info("HTTP: proto.Marshal() sent", len(msg), "ok and got back", len(body))
-
- newpb := NewPatches()
- if err := newpb.Unmarshal(body); err != nil {
- cfcheck := string(body[0:100])
- if strings.Contains(cfcheck, "<title>Just a moment...</title>") {
- return log.Errorf("Cloudflare throttled this attempt to submit. TODO: fix this")
- } else {
- log.Infof("forged DID NOT SEND BACK PROTOBUF len(body)=%d %s (TODO: look for failure on cloudflare 'is human' check here)\n", len(body), body[0:100])
- // log.Infof("TODO: try to identify data here len(body)=%d body[0:40]=%s\n", len(body), body[0:40])
- // log.Info("BODY START:", body[0:10], string(body[0:10]))
- // log.Info(string(body))
- // if err := newpb.UnmarshalTEXT(body[2:]); err == nil {
- // log.Info("wow, that did work. newpb.Len() =", newpb.Len())
- // }
- }
- return err
- }
-
- log.Info("Total patches sent ok:", newpb.Len())
- return nil
-}
-
-func (f *Forge) SubmitPatchesNew(pset *Patches, urlpath string) (*Patches, error) {
- msg, err := pset.Marshal()
- if err != nil {
- log.Info("proto.Marshal() failed:", err)
- return nil, err
- }
- log.Info("proto.Marshal() msg len", len(msg))
- body, err := f.HttpPost("rm this", urlpath, msg)
- if err != nil {
- log.Info("httpPost() failed:", err)
- return nil, err
- }
- log.Info("HTTP: proto.Marshal() sent", len(msg), "ok and got back", len(body))
-
- newpb := NewPatches()
- if err := newpb.Unmarshal(body); err != nil {
- cfcheck := string(body[0:100])
- if strings.Contains(cfcheck, "<title>Just a moment...</title>") {
- return nil, log.Errorf("Cloudflare throttled this attempt to submit. TODO: fix this")
- } else {
- log.Infof("forged DID NOT SEND BACK PROTOBUF len(body)=%d %s (TODO: look for failure on cloudflare 'is human' check here)\n", len(body), body[0:100])
- // log.Infof("TODO: try to identify data here len(body)=%d body[0:40]=%s\n", len(body), body[0:40])
- // log.Info("BODY START:", body[0:10], string(body[0:10]))
- // log.Info(string(body))
- // if err := newpb.UnmarshalTEXT(body[2:]); err == nil {
- // log.Info("wow, that did work. newpb.Len() =", newpb.Len())
- // }
- }
- return nil, err
- }
-
- log.Info("Total patches sent ok:", newpb.Len())
- return newpb, nil
-}
-
-func loadFile(filename string) ([]byte, error) {
- fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename)
- data, err := os.ReadFile(fullname)
- if errors.Is(err, os.ErrNotExist) {
- // if file does not exist, just return nil. this
- // will cause ConfigLoad() to try the next config file like "forge.text"
- // because the user might want to edit the .config by hand
- return nil, nil
- }
- if err != nil {
- // log.Info("open config file :", err)
- return nil, err
- }
- return data, nil
-}
-
-func configWrite(filename string, data []byte) error {
- fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename)
-
- cfgfile, err := os.OpenFile(fullname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
- defer cfgfile.Close()
- if err != nil {
- log.Warn("open config file :", err)
- return err
- }
- cfgfile.Write(data)
- return nil
-}
diff --git a/patchset.new.go b/patchset.new.go
new file mode 100644
index 0000000..00bfcc8
--- /dev/null
+++ b/patchset.new.go
@@ -0,0 +1,9 @@
+package forgepb
+
+// makes a new patches protobuf. These are all the patches on your machine.
+func NewPatches() *Patches {
+ x := new(Patches)
+ x.Uuid = "2679065e-c81d-4a00-aca4-03c158a834fb"
+ x.Version = "v2.0.0 go.wit.com/lib/protobuf/forgepb"
+ return x
+}