summaryrefslogtreecommitdiff
path: root/windowPatches.go
diff options
context:
space:
mode:
Diffstat (limited to 'windowPatches.go')
-rw-r--r--windowPatches.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/windowPatches.go b/windowPatches.go
index b23735b..b12a061 100644
--- a/windowPatches.go
+++ b/windowPatches.go
@@ -94,6 +94,24 @@ func makePatchesWin(patches *forgepb.Patches) *stdPatchTableWin {
return dwin
}
+func applyPatchNew(p *forgepb.Patch) error {
+ rn := p.RepoNamespace
+ repo := me.forge.FindByGoPath(rn)
+ if repo == nil {
+ return fmt.Errorf("Could not figure out repo path %s", rn)
+ }
+ filename, err := savePatch(p)
+ if err != nil {
+ log.Info("savePatch() failed", err)
+ return err
+ }
+ if err := applyPatch(repo, filename); err != nil {
+ log.Info("warn user of git am error", err)
+ return err
+ }
+ return nil
+}
+
func (dwin *stdPatchTableWin) doPatchesTable(currentPatches *forgepb.Patches) {
dwin.Lock()
defer dwin.Unlock()
@@ -116,6 +134,18 @@ func AddPatchesPB(tbox *gui.Node, pb *forgepb.Patches) *forgepb.PatchesTable {
t.NewUuid()
t.SetParent(tbox)
+ gitam := t.AddButtonFunc("apply", func(p *forgepb.Patch) string {
+ return "git am"
+ })
+ gitam.Custom = func(p *forgepb.Patch) {
+ if err := applyPatchNew(p); err != nil {
+ log.Info("git am failed on file", p.Filename, "with error", err)
+ return
+ }
+ log.Info("ran: git am", p.Filename, "ok")
+ }
+
+ t.AddCommitHash()
t.AddRepoNamespace()
// t.AddFilename()
t.AddStringFunc("file", func(p *forgepb.Patch) string {