forge/send.go

138 lines
2.8 KiB
Go

// Copyright 2024 WIT.COM Inc Licensed GPL 3.0
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log"
)
func sendPatches(pset *forgepb.Patchs) error {
var url string
url = me.urlbase + "/patchset"
msg, err := pset.Marshal()
if err != nil {
log.Info("proto.Marshal() failed:", err)
return err
}
log.Info("proto.Marshal() msg len", len(msg))
body, err := httpPost(url, msg)
if err != nil {
log.Info("httpPost() failed:", err)
return err
}
test := strings.TrimSpace(string(body))
// log.Info("virtigo returned body:", test)
for _, line := range strings.Split(test, "\n") {
log.Info("got back:", line)
}
return nil
}
func listPatches() error {
var url string
url = me.urlbase + "/patchsetlist"
body, err := httpPost(url, nil)
if err != nil {
log.Info("httpPost() failed:", err)
return err
}
var last string
test := strings.TrimSpace(string(body))
for _, line := range strings.Split(test, "\n") {
log.Info("patchset:", line)
last = strings.TrimSpace(line)
}
parts := strings.Fields(last)
getPatch(parts[0])
return nil
}
func doRegister(newurl string) error {
var url string
url = me.urlbase + "/register?url=" + newurl
body, err := httpPost(url, nil)
if err != nil {
log.Info("httpPost() failed:", err)
return err
}
test := strings.TrimSpace(string(body))
for _, line := range strings.Split(test, "\n") {
line = strings.TrimSpace(line)
log.Info("server returned:", line)
}
return nil
}
func getPatch(pbfile string) error {
url := me.urlbase + "/patchsetget?filename=" + pbfile
log.Info("getPatch() url", url)
body, err := httpPost(url, nil)
if err != nil {
log.Info("httpPost() failed:", err)
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()
doit(body)
return nil
}
func sendDevelDiff(name string) error {
pset, err := me.forge.MakeDevelPatchSet()
if err != nil {
return err
}
pset.Name = name
if os.Getenv("GIT_AUTHOR_NAME") == "" {
return fmt.Errorf("GIT_AUTHOR_NAME not set")
} else {
pset.GitAuthorName = os.Getenv("GIT_AUTHOR_NAME")
}
if os.Getenv("GIT_AUTHOR_EMAIL") == "" {
return fmt.Errorf("GIT_AUTHOR_EMAIL not set")
} else {
pset.GitAuthorEmail = os.Getenv("GIT_AUTHOR_EMAIL")
}
if err := sendPatches(pset); err != nil {
return err
}
return nil
}
func sendMasterDiff() {
pset, err := me.forge.MakeMasterPatchSet()
if err != nil {
badExit(err)
}
all := pset.SortByFilename()
for all.Scan() {
p := all.Next()
log.Info("read in patch:", p.Filename)
}
err = me.forge.SendPatchSet(pset)
if err != nil {
badExit(err)
}
}