summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doPatch.go32
-rw-r--r--structs.go15
-rw-r--r--windowNewPatchsets.go39
3 files changed, 50 insertions, 36 deletions
diff --git a/doPatch.go b/doPatch.go
index f6837ea..3bae740 100644
--- a/doPatch.go
+++ b/doPatch.go
@@ -4,6 +4,7 @@
package main
import (
+ "fmt"
"os"
"path/filepath"
@@ -40,13 +41,12 @@ func doPatch() error {
}
func doPatchList() error {
- psets, err := openPatchsets()
- if err != nil {
- log.Info("Open Patchsets failed", err)
- return err
+ openPatchsets()
+ if me.psets == nil {
+ return fmt.Errorf("Open Patchsets failed")
}
- log.Info("got psets len", len(psets.Patchsets))
- all := psets.SortByName()
+ log.Info("got psets len", len(me.psets.Patchsets))
+ all := me.psets.SortByName()
for all.Scan() {
pset := all.Next()
// log.Info("pset name =", pset.Name)
@@ -55,8 +55,11 @@ func doPatchList() error {
return nil
}
-func savePatchsets(psets *forgepb.Patchsets) error {
- data, err := psets.Marshal()
+func savePatchsets() error {
+ if me.psets == nil {
+ return fmt.Errorf("savePatchesets() can't save nil")
+ }
+ data, err := me.psets.Marshal()
if err != nil {
log.Info("protobuf.Marshal() failed:", err)
return err
@@ -73,21 +76,21 @@ func savePatchsets(psets *forgepb.Patchsets) error {
return nil
}
-func openPatchsets() (*forgepb.Patchsets, error) {
+func openPatchsets() {
fullpath := filepath.Join(me.forge.GetConfigDir(), "patchsets.pb")
data, err := os.ReadFile(fullpath)
if err != nil {
log.Info("Patchsets open failed:", err, fullpath)
- return nil, err
+ return
}
psets := new(forgepb.Patchsets)
err = psets.Unmarshal(data)
if err != nil {
log.Info("Unmarshal patchsets failed", err)
- return nil, err
+ return
}
- return psets, nil
+ me.psets = psets
}
// returns bad if patches can not be applied
@@ -169,8 +172,7 @@ func doPatchGet() error {
dumpPatchset(pset)
}
- if err := savePatchsets(psets); err != nil {
- return err
- }
+ log.Info("FIXME: can't save these yet. must merge with on disk psets here")
+ // savePatchsets()
return nil
}
diff --git a/structs.go b/structs.go
index 99d1915..100b02e 100644
--- a/structs.go
+++ b/structs.go
@@ -23,13 +23,14 @@ func (b *mainType) Enable() {
// this app's variables
type mainType struct {
- pp *arg.Parser // for parsing the command line args. Yay to alexf lint!
- forge *forgepb.Forge // for holding the forge protobuf files
- myGui *gui.Node // the gui toolkit handle
- found *gitpb.Repos // stores the list of repos to process things on
- foundPaths []string // stores gopaths to act on (when doing go-clone)
- configSave bool // if the config file should be saved after finishing
- urlbase string // base URL
+ pp *arg.Parser // for parsing the command line args. Yay to alexf lint!
+ forge *forgepb.Forge // for holding the forge protobuf files
+ myGui *gui.Node // the gui toolkit handle
+ found *gitpb.Repos // stores the list of repos to process things on
+ psets *forgepb.Patchsets // the locally stored on disk patchsets
+ foundPaths []string // stores gopaths to act on (when doing go-clone)
+ configSave bool // if the config file should be saved after finishing
+ urlbase string // base URL
// our view of the repositories
// patchWin *patchesWindow
diff --git a/windowNewPatchsets.go b/windowNewPatchsets.go
index 8fc8415..96b293f 100644
--- a/windowNewPatchsets.go
+++ b/windowNewPatchsets.go
@@ -39,41 +39,52 @@ func makePatchsetsWin() *stdPatchsetTableWin {
}
grid := dwin.win.Group.RawGrid()
- grid.NewButton("reload", func() {
+ grid.NewButton("ondisk", func() {
+ openPatchsets()
+ if me.psets == nil {
+ log.Info("No Patchsets loaded")
+ return
+ }
+ dwin.doPatchsetsTable(me.psets)
+ })
+
+ grid.NewButton("upstream", func() {
psets, err := me.forge.GetPatchesets()
if err != nil {
log.Info("Get Patchsets failed", err)
return
}
- savePatchsets(psets)
dwin.doPatchsetsTable(psets)
})
- grid.NewButton("analyse patchsets", func() {
- psets, err := openPatchsets()
- if err != nil {
- log.Info("Open Patchsets failed", err)
+ grid.NewButton("analyse and save patchsets", func() {
+ if me.psets == nil {
+ log.Info("No Patchsets loaded")
return
}
- all := psets.All()
+ all := me.psets.All()
for all.Scan() {
pset := all.Next()
- log.Info("What is up with?", pset.Name)
- setPatchsetState(pset)
+ if pset.State == "" {
+ log.Info("What is up with?", pset.Name)
+ setPatchsetState(pset)
+ } else {
+ log.Info("patchset already had state", pset.Name, pset.State)
+ }
}
- savePatchsets(psets)
+ savePatchsets()
})
// make a box at the bottom of the window for the protobuf table
dwin.box = dwin.win.Bottom.Box().SetProgName("TBOX")
// load and show the current patch sets
- psets, err := openPatchsets()
- if err != nil {
- log.Info("Open Patchsets failed", err)
+ openPatchsets()
+ if me.psets == nil {
+ log.Info("Open Patchsets failed")
return dwin
}
- dwin.doPatchsetsTable(psets)
+ dwin.doPatchsetsTable(me.psets)
return dwin
}