summaryrefslogtreecommitdiff
path: root/doPatch.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-10 17:42:55 -0500
committerJeff Carr <[email protected]>2025-10-10 17:42:55 -0500
commit501f27c316e053b004765863b51aada48513ba44 (patch)
tree66781e6ce628b79b192dcea54debfef291a5bf10 /doPatch.go
parent1dc89c5ee56624048f985f9794a63016016afb75 (diff)
lots of patch cleanups. tool is early stage functional
Diffstat (limited to 'doPatch.go')
-rw-r--r--doPatch.go57
1 files changed, 41 insertions, 16 deletions
diff --git a/doPatch.go b/doPatch.go
index 284aff4..82e15e8 100644
--- a/doPatch.go
+++ b/doPatch.go
@@ -39,18 +39,30 @@ func doPatch() (string, error) {
return doPatchSubmit()
}
- if !isPatchingSafe() {
- return "not safe", errors.New("not safe to work on patches")
+ if argv.Patch.Show {
+ curpatches := forgepb.NewPatches()
+ curpatches.Filename = "/tmp/curpatches.pb"
+ if err := curpatches.Load(); err != nil {
+ return "fix curpatches.pb", err
+ }
+ footer := curpatches.PrintTable()
+ return "all current patches: " + footer, nil
}
- if argv.Patch.Get != nil {
+ if argv.Patch.Get {
psets := forgepb.NewSets()
newpb, _, _ := psets.HttpPostVerbose(myServer(), "get")
footer, err := doPatchGet(newpb)
return footer, err
}
- s, err := doPatchList()
+ // forces patching to be done in 'NORMAL' mode
+ // forge is too new to be able to handle anything else
+ if !isPatchingSafe() {
+ return "not safe", errors.New("not safe to work on patches")
+ }
+
+ s, err := doPatchProcess()
return s, err
}
@@ -71,19 +83,19 @@ func doPatchSubmit() (string, error) {
return footer, err
}
-func doPatchList() (string, error) {
+func doPatchProcess() (string, error) {
curpatches := forgepb.NewPatches()
curpatches.Filename = "/tmp/curpatches.pb"
if err := curpatches.Load(); err != nil {
return "fix curpatches.pb", err
}
- footer := curpatches.PrintTable()
- log.Info("START curpatches:", footer)
+ // footer := curpatches.PrintTable()
+ // log.Info("START curpatches:", footer)
var needfix int
for patch := range curpatches.IterAll() {
repo := me.forge.Repos.FindByNamespace(patch.Namespace)
if repo == nil {
- log.Info("no namespace", patch.PatchId, patch.Namespace, patch.Comment)
+ // log.Info("no namespace", patch.PatchId, patch.Namespace, patch.Comment)
patch.State = "no namespace"
continue
}
@@ -144,15 +156,28 @@ func doPatchList() (string, error) {
}
}
}
- footer = curpatches.PrintTable()
- log.Info("END curpatches:", footer)
- var s string
- if needfix == 0 {
- s = "no new patches"
- } else {
- s = log.Sprintf("There are %d new patches. Use --fix to apply them", needfix)
- curpatches.Save()
+ // NOW, FINALLY, AFTER A LOT OF WORK, THE FUN PART
+ newpatches := forgepb.NewPatches()
+ for p := range curpatches.IterAll() {
+ if p.NewHash == "author" {
+ // this is your patch
+ continue
+ }
+ if (p.NewHash != "") && p.StateChange == "did already" {
+ // already applied
+ continue
+ }
+ newpatches.Clone(p)
+ }
+ if newpatches.Len() == 0 {
+ s := log.Sprintf("All (%d) current patches are appled. You are completely up to date!", curpatches.Len())
+ return s, nil
}
+ footer := newpatches.PrintTable()
+ log.Info("BRAND NEW PATCHES:", footer)
+ var s string
+ s = log.Sprintf("There are %d new patches. Use --fix to apply them", needfix)
+ curpatches.Save()
return s, nil
}