summaryrefslogtreecommitdiff
path: root/0001-start-work-on-an-applyPatch.patch
blob: 263a36c23069f9dca1e63eaa184b73b657f4a9e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
From a957c22f8b63f390fc4289b93a84e921e5c3d64d Mon Sep 17 00:00:00 2001
From: Jeff Carr <[email protected]>
Date: Fri, 27 Dec 2024 22:27:19 -0600
Subject: [PATCH] start work on an applyPatch()

---
 Makefile      |  5 ++++-
 applyPatch.go | 35 +++++++++++++++++++++++++++++++++++
 argv.go       |  9 +++++----
 main.go       | 11 +++++++++++
 send.go       | 13 +++++++++++++
 5 files changed, 68 insertions(+), 5 deletions(-)
 create mode 100644 applyPatch.go

diff --git a/Makefile b/Makefile
index 409761e..3d6ef21 100644
--- a/Makefile
+++ b/Makefile
@@ -64,7 +64,7 @@ mine: install
 all: install
 	forge list --all
 
-patches: install
+patches-make: install
 	forge --patchset "from makefile"
 
 localhost-patches: install
@@ -73,6 +73,9 @@ localhost-patches: install
 patches-list: install
 	forge --list-patchset
 
+patches-apply-213058: install
+	forge --apply /tmp/2024.12.27.213058.submitted.pb
+
 dirty: install
 	forge dirty --all
 
diff --git a/applyPatch.go b/applyPatch.go
new file mode 100644
index 0000000..9dccc6c
--- /dev/null
+++ b/applyPatch.go
@@ -0,0 +1,35 @@
+// Copyright 2024 WIT.COM Inc Licensed GPL 3.0
+
+package main
+
+import (
+	"os"
+
+	"go.wit.com/lib/protobuf/forgepb"
+	"go.wit.com/log"
+)
+
+func applyPatches(pset *forgepb.Patchs) error {
+	all := pset.SortByFilename()
+	for all.Scan() {
+		p := all.Next()
+		log.Info("pset filename", p.Filename)
+	}
+	return nil
+}
+
+func readPatchFile(pbfile string) (*forgepb.Patchs, error) {
+	bytes, err := os.ReadFile(pbfile)
+	if err != nil {
+		log.Info("readfile error", pbfile, err)
+		return nil, err
+	}
+	var pset *forgepb.Patchs
+	pset = new(forgepb.Patchs)
+	err = pset.Unmarshal(bytes)
+	if err != nil {
+		log.Info("Unmarshal failed", pbfile, err)
+		return nil, err
+	}
+	return pset, nil
+}
diff --git a/argv.go b/argv.go
index 7c19ed4..5b90fc4 100644
--- a/argv.go
+++ b/argv.go
@@ -28,10 +28,11 @@ type args struct {
 	Delete       string   `arg:"--delete"                             help:"delete this repo"`
 	URL          string   `arg:"--connect"                            help:"gowebd url"`
 	Register     string   `arg:"--register"                           help:"register your git URL (foo.com/mystuff) or (github.com/foo/bar)"`
-	GitReset     bool     `arg:"--git-reset"                       help:"run 'git reset --hard'"`
-	Scan         bool     `arg:"--scan"                            help:"reload protobuf from .git/"`
-	Force        bool     `arg:"--force"                           help:"force redo things"`
-	PatchSet     string   `arg:"--patchset"                      help:"make patch set"`
+	GitReset     bool     `arg:"--git-reset"                          help:"run 'git reset --hard'"`
+	Scan         bool     `arg:"--scan"                               help:"reload protobuf from .git/"`
+	Force        bool     `arg:"--force"                              help:"force redo things"`
+	PatchSet     string   `arg:"--patchset"                           help:"make patch set"`
+	Apply        string   `arg:"--apply"                              help:"apply a patch set"`
 }
 
 func (args) Version() string {
diff --git a/main.go b/main.go
index 1c2db96..25e801e 100644
--- a/main.go
+++ b/main.go
@@ -76,6 +76,17 @@ func main() {
 		}
 	}
 
+	if argv.Apply != "" {
+		pset, err := readPatchFile(argv.Apply)
+		if err != nil {
+			badExit(err)
+		}
+		if err = applyPatches(pset); err == nil {
+			okExit("applied patch ok")
+		}
+		badExit(err)
+	}
+
 	if argv.Delete != "" {
 		me.forge.DeleteByGoPath(argv.Delete)
 		me.forge.SetConfigSave(true)
diff --git a/send.go b/send.go
index 900b3b3..67fec90 100644
--- a/send.go
+++ b/send.go
@@ -3,6 +3,8 @@
 package main
 
 import (
+	"os"
+	"path/filepath"
 	"strings"
 
 	"go.wit.com/lib/protobuf/forgepb"
@@ -77,6 +79,17 @@ func getPatch(pbfile string) error {
 		return err
 	}
 	log.Info("getPatch() len(body)", len(body))
+	var pset *forgepb.Patchs
+	pset = new(forgepb.Patchs)
+	err = pset.Unmarshal(body)
+	if err != nil {
+		log.Info("Unmarshal failed", err)
+		return err
+	}
+	filename := filepath.Join("/tmp", pbfile)
+	f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+	f.Write(body)
+	f.Close()
 	return nil
 }
 
-- 
2.45.2