diff --git a/globalBuildOptions.go b/globalBuildOptions.go index a91b18f..39bc467 100644 --- a/globalBuildOptions.go +++ b/globalBuildOptions.go @@ -7,8 +7,9 @@ import ( "go.wit.com/log" - "go.wit.com/gui/gui" + "go.wit.com/gui" "go.wit.com/lib/gadgets" + "go.wit.com/lib/gui/repostatus" ) func doesExist(path string) bool { @@ -52,18 +53,69 @@ func globalBuildOptions(box *gui.Node) { setCurrentBranch.Set("set all branches to " + me.toMoveToBranch) me.mainBranch.Disable() } + me.rerunGoMod = groupvbox.NewButton("re-run go mod & go tidy", func() { + me.rerunGoMod.Disable() + log.Warn("scanning allrepos") + os.Unsetenv("GO111MODULE") + for repo, path := range me.allrepos { + var cmd []string + var err error + var b bool + var output string + + log.Warn("found repo", path, repo.String()) + fullpath := "/home/jcarr/go/src/" + path + + me.rerunGoMod.SetText("Running go.mod " + fullpath) + + cmd = []string{"rm", "go.mod", "go.sum"} + // log.Warn("Actually RUN path =", fullpath, "cmd =", cmd) + err, b, output = repostatus.RunCmd(fullpath, cmd) + log.Warn(err, b, string(output)) + + log.Sleep(.1) + + cmd = []string{"go", "mod", "init"} + // log.Warn("Actually RUN path =", fullpath, "cmd =", cmd) + err, b, output = repostatus.RunCmd(fullpath, cmd) + log.Warn(err, b, string(output)) + if err != nil { + return + } + + log.Sleep(.1) + + cmd = []string{"go", "mod", "tidy"} + // log.Warn("Actually RUN path =", fullpath, "cmd =", cmd) + err, b, output = repostatus.RunCmd(fullpath, cmd) + log.Warn(err, b, string(output)) + if err != nil { + return + } + + log.Sleep(.2) + + cmd = []string{"git", "status"} + // log.Warn("Actually RUN path =", fullpath, "cmd =", cmd) + err, b, output = repostatus.RunCmd(fullpath, cmd) + log.Warn(err, b, string(output)) + } + me.rerunGoMod.SetText("re-run go mod & go tidy") + me.rerunGoMod.Enable() + }) setCurrentBranch = groupvbox.NewButton("set all branches to", func() { - for _, repo := range allrepos { + log.Warn("scanning allrepos") + for repo, path := range me.allrepos { + log.Warn("found repo", repo.String()) var changeBranch [][]string // realname, realversion := repo.status.CheckoutBranch(me.toMoveToBranch) // log.Warn("GOT", realname, realversion) - path := repo.status.GetPath() + // path := repo.status.GetPath() changeBranch = append(changeBranch, []string{"cd", "go/src/" + path}) changeBranch = append(changeBranch, []string{"git", "checkout", me.toMoveToBranch}) me.script = changeBranch setGitCommands() - goMake("--doit") - return + // goMake("--doit") } }) var everything *gui.Node @@ -71,7 +123,7 @@ func globalBuildOptions(box *gui.Node) { var perfect bool = true var newCmds [][]string // usr, _ := user.Current() - newCmds = append(newCmds, []string{"cd", "go/src/gui/app/myrepos"}) + newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/myrepos"}) repos := myrepolist() for _, line := range repos { log.Warn("repo =", line) diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go index 996e701..79c1b23 100644 --- a/globalDisplayOptions.go +++ b/globalDisplayOptions.go @@ -4,7 +4,7 @@ package main import ( "go.wit.com/log" - "go.wit.com/gui/gui" + "go.wit.com/gui" // "go.wit.com/gui/gadgets" ) @@ -32,7 +32,7 @@ func globalDisplayOptions(box *gui.Node) { hidePerfect() }) groupvbox.NewButton("show all", func() { - for _, repo := range allrepos { + for repo, _ := range me.allrepos { if repo.dirtyLabel.String() == "PERFECT" { if repo.hidden { repo.show() @@ -50,13 +50,13 @@ func globalDisplayOptions(box *gui.Node) { }) groupvbox.NewButton("status.Update() all", func() { - for _, repo := range allrepos { + for repo, _ := range me.allrepos { repo.status.Update() } }) groupvbox.NewButton("rescan all", func() { - for _, repo := range allrepos { + for repo, _ := range me.allrepos { repo.newScan() } }) @@ -66,7 +66,7 @@ func globalDisplayOptions(box *gui.Node) { } func hidePerfect() { - for _, repo := range allrepos { + for repo, _ := range me.allrepos { if repo.dirtyLabel.String() == "PERFECT" { if repo.hidden { continue diff --git a/globalResetOptions.go b/globalResetOptions.go index 99816e7..750cf9c 100644 --- a/globalResetOptions.go +++ b/globalResetOptions.go @@ -1,7 +1,7 @@ package main import ( - "go.wit.com/gui/gui" + "go.wit.com/gui" "go.wit.com/log" ) @@ -15,7 +15,7 @@ func globalResetOptions(box *gui.Node) { buildOptions.NewButton("Find", func() { log.Warn("delete every repo marked PERFECT") var newCmds [][]string - for _, repo := range allrepos { + for repo, _ := range me.allrepos { status := repo.getStatus() if status == "PERFECT" { var line []string @@ -32,11 +32,11 @@ func globalResetOptions(box *gui.Node) { buildOptions.NewButton("Find", func() { log.Warn("delete every repo marked PERFECT") var newCmds [][]string - for _, repo := range allrepos { + for repo, path := range me.allrepos { status := repo.getStatus() if status == "PERFECT" { var line []string - line = append(line, "rm", "-rf", "go/src/"+repo.path) + line = append(line, "rm", "-rf", "go/src/"+path) newCmds = append(newCmds, line) } } @@ -49,7 +49,7 @@ func globalResetOptions(box *gui.Node) { buildOptions.NewButton("rm ~/go/src & ~/go/pkg", func() { var newCmds [][]string var dirty bool = false - for _, repo := range allrepos { + for repo, _ := range me.allrepos { status := repo.getStatus() if status == "dirty" { dirty = true diff --git a/go.mod b/go.mod index 403d54a..89c27b1 100644 --- a/go.mod +++ b/go.mod @@ -1,18 +1,3 @@ module go.wit.com/apps/myrepos go 1.21.4 - -require ( - go.wit.com/apps/control-panel-dns v0.12.3 - go.wit.com/gui/gadgets v0.12.5 - go.wit.com/gui/gui v0.12.9 - go.wit.com/gui/lib/repostatus v0.12.7 - go.wit.com/log v0.5.4 -) - -require ( - go.wit.com/dev/alexflint/arg v1.4.5 // indirect - go.wit.com/dev/alexflint/scalar v1.2.1 // indirect - go.wit.com/dev/davecgh/spew v1.1.4 // indirect - go.wit.com/gui/widget v1.1.3 // indirect -) diff --git a/go.sum b/go.sum deleted file mode 100644 index 1b6ce31..0000000 --- a/go.sum +++ /dev/null @@ -1,18 +0,0 @@ -go.wit.com/apps/control-panel-dns v0.12.3 h1:rjQE5YKyieRu6ARzwsNSSiRM9aN325O71MaHRuDUDiA= -go.wit.com/apps/control-panel-dns v0.12.3/go.mod h1:wV1THUmfQNaPYetXLSFnotc9m3/nplumk1yiT/yEW4U= -go.wit.com/dev/alexflint/arg v1.4.5 h1:asDx5f9IlfpknKjPBqqb2qndE91Pbo7ZDkWUgddfMhY= -go.wit.com/dev/alexflint/arg v1.4.5/go.mod h1:wnWc+c6z8kSdDKYriMf6RpM+FiXmo5RYp/t4FNi0MU0= -go.wit.com/dev/alexflint/scalar v1.2.1 h1:loXOcbVnd+8YeJRLey+XXidecBiedMDO00zQ26TvKNs= -go.wit.com/dev/alexflint/scalar v1.2.1/go.mod h1:+rYsfxqdI2cwA8kJ7GCMwWbNJvfvWUurOCXLiwdTtSs= -go.wit.com/dev/davecgh/spew v1.1.4 h1:C9hj/rjlUpdK+E6aroyLjCbS5MFcyNUOuP1ICLWdNek= -go.wit.com/dev/davecgh/spew v1.1.4/go.mod h1:sihvWmnQ/09FWplnEmozt90CCVqBtGuPXM811tgfhFA= -go.wit.com/gui/gadgets v0.12.5 h1:Eg7UbwnvwGgYlNX+sgKQNVcbRMZyYL4ChDmS2p/DHtM= -go.wit.com/gui/gadgets v0.12.5/go.mod h1:OB7MtEZy/VK2HrU3yiEuzY9n4LjZwO0L06NYUAFybJs= -go.wit.com/gui/gui v0.12.9 h1:Xrs8v/gbbQnsjCnF3BCNXgddH5oB8xTjlysL9Ul1aRs= -go.wit.com/gui/gui v0.12.9/go.mod h1:YgbFWxsGqZb45oLGaHim2GukPzPgMLQcVRRI0QkrGS8= -go.wit.com/gui/lib/repostatus v0.12.7 h1:YF+jfEXlfbacthWrwy+844Uk4UyRQQP35MuRL3bHKOo= -go.wit.com/gui/lib/repostatus v0.12.7/go.mod h1:WgfUiAc/WQCTndBfwj+oUeDXifwMh7wEIs7zOW2hsNY= -go.wit.com/gui/widget v1.1.3 h1:GvLzGSOF9tfmoh6HNbFdN+NSlBo2qeS/Ba2TnQQ1A1U= -go.wit.com/gui/widget v1.1.3/go.mod h1:A6/FaiFQtAHTjgo7c4FrokXe6bXX1Cowo35b2Lgi31E= -go.wit.com/log v0.5.4 h1:vijLRPTUgChb8J5tx/7Uma/lGTUxeSXosFbheAmL914= -go.wit.com/log v0.5.4/go.mod h1:BaJBfHFqcJSJLXGQ9RHi3XVhPgsStxSMZRlaRxW4kAo= diff --git a/main.go b/main.go index a944ca8..d7365d6 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,7 @@ import ( "go.wit.com/log" - "go.wit.com/gui/gui" + "go.wit.com/gui" "go.wit.com/lib/gadgets" "go.wit.com/lib/gui/repostatus" ) @@ -16,10 +16,13 @@ import ( var resToolkit embed.FS func main() { - myGui = gui.New() - myGui.InitEmbed(resToolkit) - myGui.LoadToolkit("nocui") - myGui.Default() + me = new(repoType) + me.allrepos = make(map[*repo]string) + + me.myGui = gui.New() + me.myGui.InitEmbed(resToolkit) + me.myGui.LoadToolkit("nocui") + me.myGui.Default() autotypistWindow() // repoworld() @@ -64,26 +67,26 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri newRepo.cButton.Hide() newRepo.pButton.Hide() } - newRepo.status = repostatus.New(myGui, newRepo.path) + newRepo.status = repostatus.New(me.myGui, newRepo.path) newRepo.status.SetMasterName(master) newRepo.status.SetDevelName(devel) newRepo.status.SetUserName(user) newRepo.hidden = false newRepo.status.Update() newRepo.newScan() - allrepos = append(allrepos, newRepo) + me.allrepos[newRepo] = path } func autotypistWindow() { /* - me.autotypistWindow = gadgets.NewBasicWindow(myGui, "autotypist for GO & git. it types faster than you can.") + me.autotypistWindow = gadgets.NewBasicWindow(me.myGui, "autotypist for GO & git. it types faster than you can.") me.autotypistWindow.Make() me.autotypistWindow.StandardExit() box := me.autotypistWindow.Box() me.autotypistWindow.Draw() */ - win := myGui.NewWindow("autotypist for GO & git. it types faster than you can.") + win := me.myGui.NewWindow("autotypist for GO & git. it types faster than you can.") box := win.NewBox("bw hbox", true) globalDisplayOptions(box) globalBuildOptions(box) @@ -93,7 +96,7 @@ func autotypistWindow() { // This creates a window func repoworld() { - reposwin = gadgets.NewBasicWindow(myGui, "All git repositories in ~/go/src/") + reposwin = gadgets.NewBasicWindow(me.myGui, "All git repositories in ~/go/src/") reposwin.Make() reposbox = reposwin.Box().NewBox("bw vbox", false) diff --git a/repolist.go b/repolist.go index 49e9963..170627e 100644 --- a/repolist.go +++ b/repolist.go @@ -6,6 +6,10 @@ import ( "strings" ) +func (r *repo) String() string { + return r.status.String() +} + func (r *repo) getPath() string { return r.path } diff --git a/structs.go b/structs.go index ecbed45..552159b 100644 --- a/structs.go +++ b/structs.go @@ -2,22 +2,23 @@ package main import ( - "go.wit.com/gui/gui" + "go.wit.com/gui" "go.wit.com/lib/gadgets" "go.wit.com/lib/gui/repostatus" ) // the main window nodes -var myGui *gui.Node var reposwin *gadgets.BasicWindow var reposbox *gui.Node var reposgrid *gui.Node var reposgroup *gui.Node -var me repoType +var me *repoType type repoType struct { - script [][]string + script [][]string + allrepos map[*repo]string + myGui *gui.Node // #### autotypist window autotypistWindow *gadgets.BasicWindow @@ -36,6 +37,8 @@ type repoType struct { develBranch *gadgets.BasicCombobox userBranch *gadgets.BasicCombobox + // this button will regenerate everyones go.mod & go.sum + rerunGoMod *gui.Node // #### autotypist Global Distructive & Reset Options // #### autotypist window end } @@ -44,8 +47,6 @@ var cmds *gui.Node var doit *gui.Node var dryrun *gui.Node -var allrepos []*repo - type repo struct { hidden bool path string