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 }