forge/windowRepos.go

269 lines
6.0 KiB
Go
Raw Normal View History

2025-02-01 11:57:52 -06:00
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is governed by the GPL 3.0
2024-02-17 14:20:37 -06:00
package main
import (
"time"
2024-02-17 14:20:37 -06:00
"go.wit.com/lib/gadgets"
"go.wit.com/lib/gui/repolist"
"go.wit.com/lib/gui/shell"
2024-02-17 14:20:37 -06:00
"go.wit.com/log"
"go.wit.com/gui"
)
type repoWindow struct {
win *gadgets.BasicWindow // the window widget itself
box *gui.Node // notsure
topbox *gui.Node // the top box of the repolist window
mergeDevel *gui.Node // the buttton for merging user into devel
mergeMaster *gui.Node // the buttton for merging devel into master
View *repolist.RepoList // old code
2024-02-17 14:20:37 -06:00
}
func (r *repoWindow) Hidden() bool {
2025-02-13 20:47:40 -06:00
if r == nil {
return true
}
if r.win == nil {
return true
}
2024-02-17 14:20:37 -06:00
return r.win.Hidden()
}
func (r *repoWindow) Show() {
2025-02-13 20:47:40 -06:00
if r == nil {
return
}
if r.win == nil {
return
}
2024-02-17 14:20:37 -06:00
r.win.Show()
2025-02-09 08:28:28 -06:00
now := time.Now()
// check for devel branches
total, count, nope, _ := IsEverythingOnDevel()
log.Printf("Devel branch check. %d total repos. (%d ok) (%d not on devel branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
if nope != 0 {
r.mergeDevel.Disable()
} else {
// everything is on the devel branch
r.mergeDevel.Enable()
}
// check for master branches
total, count, nope, _ = IsEverythingOnMaster()
log.Printf("Master branch check. %d total repos. (%d ok) (%d not on master branch) (%s)\n", total, count, nope, shell.FormatDuration(time.Since(now)))
if nope != 0 {
r.mergeMaster.Disable()
} else {
// everything is on the master branch
r.mergeMaster.Enable()
}
// updates the rows not hidden
2025-01-30 11:31:22 -06:00
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
if view.Hidden() {
continue
}
view.Update()
}
2024-02-17 14:20:37 -06:00
}
func (r *repoWindow) Hide() {
2025-02-13 20:47:40 -06:00
if r == nil {
return
}
if r.win == nil {
return
}
2024-02-17 14:20:37 -06:00
r.win.Hide()
}
func (r *repoWindow) Disable() {
2025-02-13 20:47:40 -06:00
if r == nil {
return
}
if r.box == nil {
return
}
2024-02-17 14:20:37 -06:00
r.box.Disable()
}
func (r *repoWindow) Enable() {
2025-02-13 20:47:40 -06:00
if r == nil {
return
}
if r.box == nil {
return
}
2024-02-17 14:20:37 -06:00
r.box.Enable()
}
2024-12-02 06:59:56 -06:00
func (r *repoWindow) repoMenu() *gui.Node {
2024-02-17 14:20:37 -06:00
// reposbox.SetExpand(false)
2024-12-23 11:15:16 -06:00
group1 := r.box.NewGroup("Filter:")
2024-02-17 14:20:37 -06:00
hbox := group1.Box()
// hbox.Horizontal()
hbox.Vertical()
2024-12-23 11:15:16 -06:00
box2 := hbox.Box().Horizontal()
all := box2.NewCheckbox("all")
all.Custom = func() {
log.Info("filter all =", all.Checked())
if all.Checked() {
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
view.Show()
}
} else {
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
view.Hide()
}
}
}
2024-12-23 11:15:16 -06:00
dirty := box2.NewCheckbox("dirty")
dirty.Custom = func() {
log.Info("filter dirty =", dirty.Checked())
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
if view.Hidden() {
view.Show()
}
}
2024-12-23 11:15:16 -06:00
}
2024-02-17 14:20:37 -06:00
r.mergeDevel = box2.NewButton("merge to devel", func() {
2024-02-17 14:20:37 -06:00
r.Disable()
2025-01-08 01:16:27 -06:00
defer r.Enable()
2025-01-30 11:02:19 -06:00
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
if view.Hidden() {
continue
}
repo := view.GetPb()
log.Info("repo:", repo.GetGoPath())
if result, err := repo.MergeToDevel(); err == nil {
2025-01-30 11:09:34 -06:00
log.Warn("THINGS SEEM OK", repo.GetFullPath())
for _, line := range result.Stdout {
log.Warn("stdout:", line)
}
for _, line := range result.Stderr {
log.Warn("stderr:", line)
}
2025-01-30 11:09:34 -06:00
} else {
log.Warn("THINGS FAILED ", repo.GetFullPath())
log.Warn("err", err)
2025-02-09 14:41:28 -06:00
if result == nil {
break
}
2025-01-30 11:09:34 -06:00
for _, line := range result.Stdout {
log.Warn("stdout:", line)
}
for _, line := range result.Stderr {
log.Warn("stderr:", line)
}
break
}
me.forge.SetConfigSave(true)
2025-01-30 11:02:19 -06:00
view.Update()
}
2025-01-30 11:09:34 -06:00
me.forge.ConfigSave()
})
r.mergeMaster = box2.NewButton("merge to master", func() {
r.Disable()
defer r.Enable()
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
if view.Hidden() {
continue
}
repo := view.GetPb()
log.Info("repo:", repo.GetGoPath())
if result, err := repo.MergeToMaster(); err == nil {
log.Warn("THINGS SEEM OK", repo.GetFullPath())
for _, line := range result.Stdout {
log.Warn("stdout:", line)
}
for _, line := range result.Stderr {
log.Warn("stderr:", line)
}
} else {
log.Warn("THINGS FAILED ", repo.GetFullPath())
2025-02-09 14:41:28 -06:00
if result == nil {
break
}
log.Warn("err", err)
for _, line := range result.Stdout {
log.Warn("stdout:", line)
}
for _, line := range result.Stderr {
log.Warn("stderr:", line)
}
break
}
me.forge.SetConfigSave(true)
view.Update()
}
me.forge.ConfigSave()
2025-01-30 11:02:19 -06:00
})
2025-02-09 08:28:28 -06:00
box2.NewButton("update", func() {
r.Disable()
defer r.Enable()
loop := r.View.ReposSortByName()
for loop.Scan() {
// var repo *repolist.RepoRow
view := loop.Repo()
if view.Hidden() {
continue
}
repo := view.GetPb()
// log.Info("check master vs devel here on", repo.GetGoPath())
if repo.GetDevelVersion() == repo.GetMasterVersion() {
continue
}
b1 := countDiffObjects(repo, repo.GetMasterBranchName(), repo.GetDevelBranchName())
if b1 == 0 {
// log.Info("master vs devel count is normal b1 == 0", b1)
} else {
// log.Info("master vs devel count b1 != 0", b1)
log.Info("SERIOUS ERROR. DEVEL BRANCH NEEDS MERGE FROM MASTER b1 ==", b1, repo.GetGoPath())
}
/*
// THIS IS TERRIBLE. STOP DEVELOPING AND FIX THIS IF THIS HAPPENS
cmd := repo.ConstructGitDiffLog(repo.GetMasterBranchName(), repo.GetDevelBranchName())
if _, err := repo.RunVerbose(cmd); err != nil {
log.Info("failed", err)
}
*/
/* this is normal
cmd := repo.ConstructGitDiffLog(repo.GetDevelBranchName(), repo.GetMasterBranchName())
if _, err := repo.RunVerbose(cmd); err != nil {
log.Info("failed", err)
2025-02-09 08:28:28 -06:00
}
*/
2025-02-09 08:28:28 -06:00
}
})
2024-02-19 19:41:48 -06:00
return box2
2024-02-17 14:20:37 -06:00
}