forgepb/patchset.Get.go

92 lines
2.1 KiB
Go

// 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 {
/*
defer func() {
if r := recover(); r != nil {
log.Warn("PANIC ecovered in loadUpstream()", r)
}
}()
*/
url := f.forgeURL + "GetPatchsets"
log.Info("GetPatchsets() url", url)
body, err := f.HttpPost(url, 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) loadUpstreamPatchsets(psets *Patchsets) {
/*
defer func() {
if r := recover(); r != nil {
log.Warn("PANIC ecovered in loadUpstream()", r)
}
}()
*/
var foundnew bool
all := psets.All()
for all.Scan() {
pset := all.Next()
found := f.Patchsets.FindByUuid(pset.Uuid)
author := log.Sprintf("Author: %s <%s>", found.GitAuthorName, found.GitAuthorEmail)
if found == nil {
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
}
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 err := f.addRandomPatch(patch); err == nil {
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, err)
}
}
pset.State = found.State
if pset.State == "" {
pset.State = "new"
}
}
if foundnew {
f.SavePatchsets()
}
}