start work on an apply patchset window

This commit is contained in:
Jeff Carr 2024-12-23 11:15:16 -06:00
parent b7a6001ba4
commit c5fcb2a6c0
8 changed files with 107 additions and 45 deletions

View File

@ -32,7 +32,7 @@ goimports:
@# // gofmt -w -r '"go.wit.com/gui/gadgets" -> "go.wit.com/lib/gadgets"' *.go
gocui: install
forge --gui gocui --do-gui
forge --gui gocui --do-gui >/tmp/forge.log 2>&1
redomod-all:
forge --do-RedoGoMod

55
argv.go
View File

@ -7,31 +7,32 @@ package main
var argv args
type args struct {
Config bool `arg:"--config" help:"work from your .config/forge/ configuration"`
FindAll bool `arg:"--find-all" help:"select every repo"`
FindReadOnly bool `arg:"--find-readonly" help:"include read-only repos"`
FindMine bool `arg:"--find-mine" help:"download private and writeable repos"`
FindFavorites bool `arg:"--find-favorites" help:"download repos marked as favorites"`
FindPrivate bool `arg:"--find-private" help:"list private repos in .config/forge/"`
DoList bool `arg:"--do-list" help:"list found repos"`
DoScan bool `arg:"--do-scan" help:"rescan your repos"`
DoClone bool `arg:"--do-clone" help:"go-clone things you are missing"`
DoForce bool `arg:"--do-force" help:"force redo go-clone"`
DoGitPull bool `arg:"--do-git-pull" help:"run 'git pull' on all your repos"`
DoGitReset bool `arg:"--do-git-reset" help:"run 'git reset --hard' on all read-only repos"`
DoBuild bool `arg:"--do-build" default:"true" help:"also try to build it"`
DoInstall bool `arg:"--do-install" help:"try to install every binary package"`
DoRedoGoMod bool `arg:"--do-RedoGoMod" help:"remake all the go.sum and go.mod files"`
DoPatchSet bool `arg:"--do-patches" help:"make patch set"`
ListPatchSet bool `arg:"--list-patches" help:"make patch set"`
DoGui bool `arg:"--do-gui" help:"test the gui"`
DryRun bool `arg:"--dry-run" help:"show what would be run"`
Fix bool `arg:"--fix" help:"fix config, save config & exit"`
URL string `arg:"--url" default:"http://go.wit.com/" help:"base url"`
Delete string `arg:"--delete" help:"delete this repo"`
Dirty bool `arg:"--dirty" help:"git CheckDirty() on every repo"`
User bool `arg:"--user" help:"git checkout user"`
Master bool `arg:"--master" help:"git checkout master"`
Config bool `arg:"--config" help:"work from your .config/forge/ configuration"`
FindAll bool `arg:"--find-all" help:"select every repo"`
FindReadOnly bool `arg:"--find-readonly" help:"include read-only repos"`
FindMine bool `arg:"--find-mine" help:"download private and writeable repos"`
FindFavorites bool `arg:"--find-favorites" help:"download repos marked as favorites"`
FindPrivate bool `arg:"--find-private" help:"list private repos in .config/forge/"`
DoList bool `arg:"--do-list" help:"list found repos"`
DoScan bool `arg:"--do-scan" help:"rescan your repos"`
DoClone bool `arg:"--do-clone" help:"go-clone things you are missing"`
DoForce bool `arg:"--do-force" help:"force redo go-clone"`
DoGitPull bool `arg:"--do-git-pull" help:"run 'git pull' on all your repos"`
DoGitReset bool `arg:"--do-git-reset" help:"run 'git reset --hard' on all read-only repos"`
DoBuild bool `arg:"--do-build" default:"true" help:"also try to build it"`
DoInstall bool `arg:"--do-install" help:"try to install every binary package"`
DoRedoGoMod bool `arg:"--do-RedoGoMod" help:"remake all the go.sum and go.mod files"`
DoPatchSet bool `arg:"--do-patches" help:"make patch set"`
ListPatchSet bool `arg:"--list-patches" help:"make patch set"`
DoGui bool `arg:"--do-gui" help:"test the gui"`
DryRun bool `arg:"--dry-run" help:"show what would be run"`
Fix bool `arg:"--fix" help:"fix config, save config & exit"`
URL string `arg:"--url" default:"http://go.wit.com/" help:"base url"`
Delete string `arg:"--delete" help:"delete this repo"`
Dirty bool `arg:"--dirty" help:"git CheckDirty() on every repo"`
User bool `arg:"--user" help:"git checkout user"`
Master bool `arg:"--master" help:"git checkout master"`
Map []string `arg:"--map" help:"map a new repo"`
}
func (args) Version() string {
@ -50,5 +51,7 @@ Examples:
forge --git-pull # run 'git pull' in every repo
forge --build --dry-run # build every binary package (but just show what would run)
forge --mine --clone # clone every package you have in your config file
`
`
}
// forge --map lib/foo https://github.com/me/myfoo # map go.wit.com/lib/foo -> github.com/me/myfoo

View File

@ -12,7 +12,7 @@ func doGui() {
me.myGui = gui.New()
me.myGui.Default()
me.mainWindow = gadgets.RawBasicWindow("Forge: use this to submit patches")
me.mainWindow = gadgets.RawBasicWindow("Forge: (this doesn't work yet)")
me.mainWindow.Make()
me.mainWindow.Show()
me.mainbox = me.mainWindow.Box()

View File

@ -54,6 +54,11 @@ func main() {
okExit("")
}
if len(argv.Map) != 0 {
log.Info("need to map here", argv.Map)
okExit("")
}
if argv.Delete != "" {
me.forge.DeleteByGoPath(argv.Delete)
me.forge.SetConfigSave(true)

61
windowApply.go Normal file
View File

@ -0,0 +1,61 @@
package main
import (
"sync"
"go.wit.com/lib/gadgets"
"go.wit.com/log"
"go.wit.com/gui"
)
// Shout out to "Go Generics 101" by Tapir Liu. Buy this book!
type Lockable[T any] struct {
mu sync.Mutex
data T
}
func (l *Lockable[T]) Do(f func(*T)) {
}
func (l *Lockable[T]) Hide() {
log.Info("testing:", l)
}
type applyWindow struct {
win *gadgets.BasicWindow
box *gui.Node
// the top box of the repolist window
topbox *gui.Node
}
type C3 = interface {
Show()
Hide()
Hidden() bool
Enable()
Disable()
~*gadgets.BasicWindow | ~*gui.Node
}
func (r applyWindow) Hidden() bool {
return r.win.Hidden()
}
func (r applyWindow) Show() {
r.win.Show()
}
func (r applyWindow) Hide() {
r.win.Hide()
}
func (r applyWindow) Disable() {
r.box.Disable()
}
func (r applyWindow) Enable() {
r.box.Enable()
}

View File

@ -173,6 +173,9 @@ func submitPatchesBox(box *gui.Node) *patchSummary {
me.repos.View.MakePatchset(patchdir)
*/
})
s.grid.NewButton("Show Patchsets", func() {
listPatches()
})
s.grid.NewButton("Show Repos", func() {
s.Update()
if me.repos.Hidden() {

View File

@ -74,30 +74,20 @@ func makeRepoView() *repoWindow {
func (r *repoWindow) repoMenu() *gui.Node {
// reposbox.SetExpand(false)
group1 := r.box.NewGroup("Run on all repos:")
group1 := r.box.NewGroup("Filter:")
hbox := group1.Box()
// hbox.Horizontal()
hbox.Vertical()
box2 := hbox.Box().Vertical()
box2 := hbox.Box().Horizontal()
/*
box2.NewButton("merge all user to devel", func() {
r.Disable()
if !r.mergeAllUserToDevel() {
return
}
r.Enable()
})
*/
box2.NewButton("merge all devel to main", func() {
r.Disable()
if !r.mergeAllDevelToMain() {
return
}
r.Enable()
})
*/
dirty := box2.NewCheckbox("dirty")
dirty.Custom = func() {
log.Info("filter dirty =", dirty.Checked())
}
box2.NewButton("merge it all", func() {
r.Disable()