This commit is contained in:
Jeff Carr 2025-08-28 17:40:52 -05:00
parent 86ac85dd5b
commit 906d50a771
6 changed files with 43 additions and 28 deletions

View File

@ -18,6 +18,7 @@ type args struct {
Init *EmptyCmd `arg:"subcommand:init" help:"init the repo list"` Init *EmptyCmd `arg:"subcommand:init" help:"init the repo list"`
Port int `arg:"--port" default:"2520" help:"port to run on"` Port int `arg:"--port" default:"2520" help:"port to run on"`
Hostname string `arg:"--hostname" default:"forge.wit.com" help:"hostname to use"` Hostname string `arg:"--hostname" default:"forge.wit.com" help:"hostname to use"`
Daemon bool `arg:"--daemon" help:"run as a daemon"`
Force bool `arg:"--force" help:"try to strong arm things"` Force bool `arg:"--force" help:"try to strong arm things"`
Verbose bool `arg:"--verbose" help:"show more output"` Verbose bool `arg:"--verbose" help:"show more output"`
Bash bool `arg:"--bash" help:"generate bash completion"` Bash bool `arg:"--bash" help:"generate bash completion"`

View File

@ -9,7 +9,7 @@ import (
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
func loadConfigfile() error { func LoadPatchsets() error {
me.all = forgepb.NewPatchsets() me.all = forgepb.NewPatchsets()
filename := filepath.Join(LIBDIR, "all-patches.pb") filename := filepath.Join(LIBDIR, "all-patches.pb")
@ -21,38 +21,37 @@ func loadConfigfile() error {
err = me.all.Unmarshal(data) err = me.all.Unmarshal(data)
if err != nil { if err != nil {
log.Infof("loadConfigfile() proto.Marshal() error %v\n", err) log.Infof("LoadPatchsets() proto.Marshal() error %v\n", err)
return err return err
} }
log.Infof("loadConfigfile() worked ok %d\n", me.all.Len()) log.Infof("LoadPatchsets() worked ok %d\n", me.all.Len())
return nil return nil
} }
func savePatchsets() error { func SavePatchsets() error {
filename := filepath.Join(LIBDIR, "all-patches.pb") filename := filepath.Join(LIBDIR, "all-patches.pb")
regfile, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) regfile, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil { if err != nil {
log.Info("filename open error:", filename, err) log.Info("SavePatchsets() filename open error:", filename, err)
// fmt.Fprintln(w, "filename open error:", filename, err) // fmt.Fprintln(w, "filename open error:", filename, err)
return err return err
} }
defer regfile.Close() defer regfile.Close()
log.Info("GOT HERE")
newpb := proto.Clone(me.all).(*forgepb.Patchsets) newpb := proto.Clone(me.all).(*forgepb.Patchsets)
if newpb == nil { if newpb == nil {
for pset := range me.all.IterAll() { for pset := range me.all.IterAll() {
showPatchsets(pset) showPatchsets(pset)
} }
return log.Errorf("Clone failed!") return log.Errorf("SavePatchsets() Clone failed!")
} }
data, err := newpb.Marshal() data, err := newpb.Marshal()
if err != nil { if err != nil {
log.Infof("savePatchset() proto.Marshal() error %v\n", err) log.Infof("SavePatchset() proto.Marshal() error %v\n", err)
return err return err
} }
log.Infof("savePatchset() worked (%d) bytes\n", len(data)) log.Infof("SavePatchset() worked (%d) bytes\n", len(data))
regfile.Write(data) regfile.Write(data)
return nil return nil
} }

View File

@ -11,7 +11,7 @@ import (
func doList() error { func doList() error {
log.Info("do list here") log.Info("do list here")
if err := loadConfigfile(); err != nil { if err := LoadPatchsets(); err != nil {
badExit(err) badExit(err)
} }

View File

@ -12,17 +12,9 @@ import (
) )
func doMerge() error { func doMerge() error {
if err := loadConfigfile(); err != nil {
if argv.Force == true {
me.all = forgepb.NewPatchsets()
} else {
return err
}
}
mergePatchsets() mergePatchsets()
if err := savePatchsets(); err != nil { if err := SavePatchsets(); err != nil {
log.Warn("savePatchsets() failed", err) log.Warn("savePatchsets() failed", err)
return err return err
} }
@ -30,7 +22,6 @@ func doMerge() error {
} }
func findAutoPatchset() *forgepb.Patchset { func findAutoPatchset() *forgepb.Patchset {
for pset := range me.all.IterAll() { for pset := range me.all.IterAll() {
if pset.Name == "forge auto commit" { if pset.Name == "forge auto commit" {
return pset return pset
@ -71,7 +62,10 @@ func addRandomPatch(patch *forgepb.Patch) error {
return nil return nil
} }
// adds a patchset or just the patches
func addPatchset(filename string, pb *forgepb.Patchset) { func addPatchset(filename string, pb *forgepb.Patchset) {
// if the name of the patchset is "forge auto commit"
// then just add all the patches
if pb.Name == "forge auto commit" { if pb.Name == "forge auto commit" {
author := "Author: " + pb.GitAuthorName author := "Author: " + pb.GitAuthorName
author += " <" + pb.GitAuthorEmail + ">" author += " <" + pb.GitAuthorEmail + ">"
@ -88,8 +82,19 @@ func addPatchset(filename string, pb *forgepb.Patchset) {
addRandomPatch(patch) addRandomPatch(patch)
} }
} }
// add each of the patches to the general pool return
} else { }
// if you got here, this patchset was submitted with a name
// Has this patchset already been submitted?
for pset := range me.all.IterAll() {
if pset.Uuid == pb.Uuid {
log.Info("ALREADY ADDED", pset.Uuid, pset.Name)
return
}
}
// Clone() this protobuf into me.all // Clone() this protobuf into me.all
var newpb *forgepb.Patchset var newpb *forgepb.Patchset
newpb = proto.Clone(pb).(*forgepb.Patchset) newpb = proto.Clone(pb).(*forgepb.Patchset)
@ -97,7 +102,6 @@ func addPatchset(filename string, pb *forgepb.Patchset) {
me.all.Patchsets = append(me.all.Patchsets, newpb) me.all.Patchsets = append(me.all.Patchsets, newpb)
} }
} }
}
func mergePatchsets() { func mergePatchsets() {
dirname := filepath.Join(LIBDIR, "patchset/") dirname := filepath.Join(LIBDIR, "patchset/")

View File

@ -4,7 +4,7 @@ Description=forged
[Service] [Service]
User=root User=root
Type=simple Type=simple
ExecStart=/usr/bin/forged ExecStart=/usr/bin/forged --daemon
ExecStop=killall forged ExecStop=killall forged
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5

11
main.go
View File

@ -9,6 +9,7 @@ import (
"go.wit.com/dev/alexflint/arg" "go.wit.com/dev/alexflint/arg"
"go.wit.com/gui" "go.wit.com/gui"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log" "go.wit.com/log"
) )
@ -47,6 +48,14 @@ func main() {
os.Setenv("FORGE_GOSRC", "/home/forge") os.Setenv("FORGE_GOSRC", "/home/forge")
} }
if err := LoadPatchsets(); err != nil {
if argv.Force == true {
me.all = forgepb.NewPatchsets()
} else {
badExit(err)
}
}
if argv.List != nil { if argv.List != nil {
doList() doList()
okExit("") okExit("")
@ -64,6 +73,7 @@ func main() {
okExit("") okExit("")
} }
// if argv.Daemon == true {
http.HandleFunc("/", okHandler) http.HandleFunc("/", okHandler)
// go https() // use caddy instead // go https() // use caddy instead
p := fmt.Sprintf(":%d", argv.Port) p := fmt.Sprintf(":%d", argv.Port)
@ -74,6 +84,7 @@ func main() {
if err != nil { if err != nil {
log.Println("Error starting server:", err) log.Println("Error starting server:", err)
} }
// }
} }
func formatDuration(d time.Duration) string { func formatDuration(d time.Duration) string {