code reorg. add more buttons to dream about

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-16 04:46:17 -06:00
parent 6b8e51a742
commit 3b14d5a124
5 changed files with 276 additions and 217 deletions

121
globalBuildOptions.go Normal file
View File

@ -0,0 +1,121 @@
// This is a simple example
package main
import (
"os"
"strings"
"go.wit.com/log"
"go.wit.com/gui/gui"
"go.wit.com/gui/gadgets"
)
func doesExist(path string) bool {
if _, err := os.Stat(path); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
func globalBuildOptions(box *gui.Node) {
var setCurrentBranch *gui.Node
group1 := box.NewGroup("Global Build Options")
groupvbox := group1.NewBox("bw vbox", false)
// grouphbox := groupvbox.NewBox("bw hbox", true)
grid := groupvbox.NewGrid("buildOptions",2, 1)
me.mainBranch = gadgets.NewBasicCombobox(grid, "default main branch")
me.mainBranch.Add("guimain")
me.mainBranch.Add("gitea server default")
me.mainBranch.Disable()
me.develBranch = gadgets.NewBasicCombobox(grid, "default devel branch")
me.develBranch.Add("devel")
me.userBranch = gadgets.NewBasicCombobox(grid, "default user branch")
me.userBranch.Add("jcarr")
// select the branch you want to test, build and develop against
// this lets you select your user branch, but, when you are happy
// you can merge everything into the devel branch and make sure it actually
// works. Then, when that is good, merge and version everything in master
guiBranch := gadgets.NewBasicCombobox(grid, "Set Current Working Branch")
guiBranch.Add("guimaster")
guiBranch.Add("guidevel")
guiBranch.Add("jcarr")
guiBranch.Custom = func () {
me.toMoveToBranch = guiBranch.Get()
setCurrentBranch.Set("set all branches to " + me.toMoveToBranch)
me.mainBranch.Disable()
}
setCurrentBranch = groupvbox.NewButton("set all branches to", func () {
for _, repo := range allrepos {
var changeBranch [][]string
// realname, realversion := repo.status.CheckoutBranch(me.toMoveToBranch)
// log.Warn("GOT", realname, realversion)
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
}
})
var everything *gui.Node
everything = groupvbox.NewButton("go get everything on go.wit.com", func () {
var perfect bool = true
var newCmds [][]string
// usr, _ := user.Current()
newCmds = append(newCmds, []string{"cd", "go/src/gui/app/myrepos"})
repos := myrepolist()
for _, line := range repos {
log.Warn("repo =", line)
path, _, _, _ := splitLine(line)
path = strings.TrimSpace(path)
if path == "#" {
// skip comment lines
continue
}
if doesExist("/home/jcarr/go/src/" + path) {
continue
}
newCmds = append(newCmds, []string{"go", "get", "-v", path})
perfect = false
}
if perfect {
var notes [][]string
notes = append(notes, []string{"you have already downloaded"})
notes = append(notes, []string{"everything on go.wit.com"})
me.script = notes
setGitCommands()
doit.Disable()
everything.Disable()
return
}
me.script = newCmds
doit.Enable()
setGitCommands()
})
groupvbox.NewButton("build all apps", func () {
})
groupvbox.NewButton("status.Update() all", func () {
for _, repo := range allrepos {
repo.status.Update()
}
})
groupvbox.NewButton("rescan all", func () {
for _, repo := range allrepos {
repo.newScan()
}
})
}

200
main.go
View File

@ -2,7 +2,6 @@
package main package main
import ( import (
"os"
"os/user" "os/user"
"embed" "embed"
@ -48,28 +47,6 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri
newRepo.userVersion = grid.NewLabel("").SetProgName("userVersion") newRepo.userVersion = grid.NewLabel("").SetProgName("userVersion")
newRepo.dirtyLabel = grid.NewLabel("") newRepo.dirtyLabel = grid.NewLabel("")
/*
newRepo.pButton = grid.NewButton("rescan", func () {
newRepo.newScan()
})
grid.NewButton("Update()", func () {
if newRepo.status == nil {
log.Warn("status window doesn't exist")
return
}
log.Warn("status window exists. trying Update() here")
newRepo.status.Update()
})
grid.NewButton("Hide()", func () {
if newRepo.status == nil {
log.Warn("status window doesn't exist")
return
}
log.Warn("status window exists. trying Hide() here")
newRepo.status.Hide()
})
*/
grid.NewButton("Show()", func () { grid.NewButton("Show()", func () {
if newRepo.status == nil { if newRepo.status == nil {
log.Warn("status window doesn't exist") log.Warn("status window doesn't exist")
@ -92,68 +69,6 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri
allrepos = append(allrepos, newRepo) allrepos = append(allrepos, newRepo)
} }
// just returns if something exists at the path name (file, directory, whatever)
func doesExist(path string) bool {
if _, err := os.Stat(path); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
func globalBuildOptions(box *gui.Node) {
var setCurrentBranch *gui.Node
group1 := box.NewGroup("Global Build Options")
groupvbox := group1.NewBox("bw vbox", false)
grouphbox := groupvbox.NewBox("bw hbox", true)
guiBranch := gadgets.NewBasicCombobox(grouphbox, "Select GUI branch")
guiBranch.Add("guimaster")
guiBranch.Add("guidevel")
guiBranch.Add("jcarr")
guiBranch.Custom = func () {
tmp := "set all current branchs to " + guiBranch.Get()
setCurrentBranch.Set(tmp)
}
setCurrentBranch = groupvbox.NewButton("set current branch to", func () {
for _, repo := range allrepos {
repo.status.Update()
}
})
groupvbox.NewButton("go get everything in configfile", func () {
var newCmds [][]string
// usr, _ := user.Current()
newCmds = append(newCmds, []string{"cd", "go/src/gui/app/myrepos"})
repos := myrepolist()
for _, line := range repos {
log.Warn("repo =", line)
path, _, _, _ := splitLine(line)
if doesExist("/home/jcarr/go/src/" + path) {
continue
}
newCmds = append(newCmds, []string{"go", "get", "-v", path})
}
script = newCmds
doit.Enable()
setGitCommands()
})
groupvbox.NewButton("status.Update() all", func () {
for _, repo := range allrepos {
repo.status.Update()
}
})
groupvbox.NewButton("rescan all", func () {
for _, repo := range allrepos {
repo.newScan()
}
})
}
// This creates a window // This creates a window
func repoworld() { func repoworld() {
reposwin = gadgets.NewBasicWindow(myGui, "autotypist for GO & git. it types faster than you can.") reposwin = gadgets.NewBasicWindow(myGui, "autotypist for GO & git. it types faster than you can.")
@ -190,120 +105,7 @@ func repoworld() {
box2 := reposwin.Box().NewBox("bw vbox", false) box2 := reposwin.Box().NewBox("bw vbox", false)
globalBuildOptions(box2) globalBuildOptions(box2)
globalResetOptions(box2)
// gofmt -w -r "go.wit.com/gui -> go.wit.com/gui/gui" .
group2 := box2.NewGroup("Global Reset Options")
buildOptions := group2.NewGrid("buildOptions",2, 1)
buildOptions.NewLabel("delete PERFECT")
buildOptions.NewButton("Find", func () {
log.Warn("delete every repo marked PERFECT")
var newCmds [][]string
for _, repo := range allrepos {
status := repo.getStatus()
if status == "PERFECT" {
var line []string
line = append(line, "rm", "-rf", "go/src/" + repo.path)
newCmds = append(newCmds, line)
}
}
script = newCmds
doit.Enable()
setGitCommands()
})
buildOptions.NewLabel("delete PERFECT")
buildOptions.NewButton("Find", func () {
log.Warn("delete every repo marked PERFECT")
var newCmds [][]string
for _, repo := range allrepos {
status := repo.getStatus()
if status == "PERFECT" {
var line []string
line = append(line, "rm", "-rf", "go/src/" + repo.path)
newCmds = append(newCmds, line)
}
}
script = newCmds
doit.Enable()
setGitCommands()
})
buildOptions.NewLabel("start over")
buildOptions.NewButton("rm src & pkgs", func () {
var newCmds [][]string
var dirty bool = false
for _, repo := range allrepos {
status := repo.getStatus()
if status == "dirty" {
dirty = true
break
}
}
newCmds = append(newCmds, []string{"cd", "."})
newCmds = append(newCmds, []string{"rm", "-rf", "go/src/"})
newCmds = append(newCmds, []string{"chmod", "700", "-R", "go/pkg/"})
newCmds = append(newCmds, []string{"rm", "-rf", "go/pkg/"})
if dirty {
newCmds = append(newCmds, []string{"can't do this with dirty repos"})
doit.Disable()
} else {
doit.Enable()
}
script = newCmds
setGitCommands()
})
buildOptions.NewLabel("rebuild autotypist")
buildOptions.NewButton("go get", func () {
var newCmds [][]string
newCmds = append(newCmds, []string{"cd", "."})
newCmds = append(newCmds, []string{"mkdir", "-p", "go/src/go.wit.com/apps/"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"go", "get", "-v", "go.wit.com/gui/toolkits"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits/andlabs"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits/gocui"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits"})
newCmds = append(newCmds, []string{"make"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"make"})
script = newCmds
setGitCommands()
doit.Enable()
})
buildOptions.NewSeparator("endStatusScans")
buildOptions.NewSeparator("endStatusScans")
buildOptions.NewLabel("cmd")
cmds = buildOptions.NewLabel("ls")
buildOptions.NewLabel("--dry-run")
dryrun = buildOptions.NewButton("show commands", func () {
if goMake("--dry-run") {
log.Warn("EVERYTHING MIGHT HAVE WORKED")
} else {
log.Warn("EVERYTHING WILL NOT WORK")
dryrun.Disable()
}
})
buildOptions.NewLabel("Doit")
doit = buildOptions.NewButton("run commands", func () {
doit.Disable()
log.Warn("should run the commands here")
// true here means dryrun == true. it's confusingly named
if goMake("--doit") {
log.Warn("EVERYTHING WORKED")
} else {
log.Warn("EVERYTHING DID NOT WORK")
}
})
reposwin.Draw() reposwin.Draw()
} }

124
resetOptions.go Normal file
View File

@ -0,0 +1,124 @@
package main
import (
"go.wit.com/log"
"go.wit.com/gui/gui"
)
func globalResetOptions(box *gui.Node) {
group2 := box.NewGroup("Global Reset Options")
buildOptions := group2.NewGrid("buildOptions",2, 1)
buildOptions.NewLabel("global path reset")
// to globally reset paths:
// gofmt -w -r "go.wit.com/gui -> go.wit.com/gui/gui" .
buildOptions.NewButton("Find", func () {
log.Warn("delete every repo marked PERFECT")
var newCmds [][]string
for _, repo := range allrepos {
status := repo.getStatus()
if status == "PERFECT" {
var line []string
line = append(line, "rm", "-rf", "go/src/" + repo.path)
newCmds = append(newCmds, line)
}
}
me.script = newCmds
doit.Enable()
setGitCommands()
})
buildOptions.NewLabel("delete PERFECT")
buildOptions.NewButton("Find", func () {
log.Warn("delete every repo marked PERFECT")
var newCmds [][]string
for _, repo := range allrepos {
status := repo.getStatus()
if status == "PERFECT" {
var line []string
line = append(line, "rm", "-rf", "go/src/" + repo.path)
newCmds = append(newCmds, line)
}
}
me.script = newCmds
doit.Enable()
setGitCommands()
})
buildOptions.NewLabel("start over")
buildOptions.NewButton("rm src & pkgs", func () {
var newCmds [][]string
var dirty bool = false
for _, repo := range allrepos {
status := repo.getStatus()
if status == "dirty" {
dirty = true
break
}
}
newCmds = append(newCmds, []string{"cd", "."})
newCmds = append(newCmds, []string{"rm", "-rf", "go/src/"})
newCmds = append(newCmds, []string{"chmod", "700", "-R", "go/pkg/"})
newCmds = append(newCmds, []string{"rm", "-rf", "go/pkg/"})
if dirty {
newCmds = append(newCmds, []string{"can't do this with dirty repos"})
doit.Disable()
} else {
doit.Enable()
}
me.script = newCmds
setGitCommands()
})
buildOptions.NewLabel("rebuild autotypist")
buildOptions.NewButton("go get", func () {
var newCmds [][]string
newCmds = append(newCmds, []string{"cd", "."})
newCmds = append(newCmds, []string{"mkdir", "-p", "go/src/go.wit.com/apps/"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"go", "get", "-v", "go.wit.com/gui/toolkits"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits/andlabs"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits/gocui"})
newCmds = append(newCmds, []string{"go", "get", "-v", "-u", "."})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/gui/toolkits"})
newCmds = append(newCmds, []string{"make"})
newCmds = append(newCmds, []string{"cd", "go/src/go.wit.com/apps/myrepos"})
newCmds = append(newCmds, []string{"make"})
me.script = newCmds
setGitCommands()
doit.Enable()
})
buildOptions.NewSeparator("endStatusScans")
buildOptions.NewSeparator("endStatusScans")
buildOptions.NewLabel("cmd")
cmds = buildOptions.NewLabel("ls")
buildOptions.NewLabel("--dry-run")
dryrun = buildOptions.NewButton("show commands", func () {
if goMake("--dry-run") {
log.Warn("EVERYTHING MIGHT HAVE WORKED")
} else {
log.Warn("EVERYTHING WILL NOT WORK")
dryrun.Disable()
}
})
buildOptions.NewLabel("Doit")
doit = buildOptions.NewButton("run commands", func () {
doit.Disable()
log.Warn("should run the commands here")
// true here means dryrun == true. it's confusingly named
if goMake("--doit") {
log.Warn("EVERYTHING WORKED")
} else {
log.Warn("EVERYTHING DID NOT WORK")
}
})
}

View File

@ -13,8 +13,19 @@ var reposwin *gadgets.BasicWindow
var reposbox *gui.Node var reposbox *gui.Node
var reposgrid *gui.Node var reposgrid *gui.Node
var reposgroup *gui.Node var reposgroup *gui.Node
var me repoType
type repoType struct {
script [][]string
toMoveToBranch string // what the current working branch name is
mainBranch *gadgets.BasicCombobox
develBranch *gadgets.BasicCombobox
userBranch *gadgets.BasicCombobox
}
var cmds *gui.Node var cmds *gui.Node
var script [][]string
var doit *gui.Node var doit *gui.Node
var dryrun *gui.Node var dryrun *gui.Node

35
unix.go
View File

@ -13,7 +13,7 @@ var repopath string = "/home/jcarr/"
// but doesn't do anything // but doesn't do anything
func goMake(dryRun string) bool { func goMake(dryRun string) bool {
var workingPath string = "go/src" var workingPath string = "go/src"
for _, line := range script { for _, line := range me.script {
if len(line) == 0 { if len(line) == 0 {
continue continue
} }
@ -40,7 +40,7 @@ func goMake(dryRun string) bool {
} }
if dryRun == "--doit" { if dryRun == "--doit" {
log.Warn("Actually RUN path =", path, "cmd =", cmd, s) log.Warn("Actually RUN path =", path, "cmd =", cmd, s)
err, b, output := repostatus.RunCmd(repopath, line) err, b, output := repostatus.RunCmd(path, line)
if err != nil { if err != nil {
log.Info("ABEND EXECUTION") log.Info("ABEND EXECUTION")
log.Info("error =", err) log.Info("error =", err)
@ -48,7 +48,7 @@ func goMake(dryRun string) bool {
log.Info("output =", output) log.Info("output =", output)
return false return false
} }
log.Warn("output was =", output) // log.Warn("output was =", output)
continue continue
} }
log.Warn("don't know what to do. dryRun ==", dryRun) log.Warn("don't know what to do. dryRun ==", dryRun)
@ -57,8 +57,20 @@ func goMake(dryRun string) bool {
return true return true
} }
func runCommands() bool { func setGitCommands() {
for _, line := range script { var tmp []string
// convert to displayable to the user text
for _, line := range me.script {
s := strings.Join(line, " ")
log.Warn("s =", s)
tmp = append(tmp, s)
}
cmds.Set(strings.Join(tmp, "\n"))
}
/*
func runCommandsOld() bool {
for _, line := range me.script {
s := strings.Join(line, " ") s := strings.Join(line, " ")
log.Warn("NEED TO RUN:", s) log.Warn("NEED TO RUN:", s)
err, b, output := repostatus.RunCmd(repopath, line) err, b, output := repostatus.RunCmd(repopath, line)
@ -74,15 +86,4 @@ func runCommands() bool {
} }
return true return true
} }
*/
func setGitCommands() {
var tmp []string
// convert to displayable to the user text
for _, line := range script {
s := strings.Join(line, " ")
log.Warn("s =", s)
tmp = append(tmp, s)
}
cmds.Set(strings.Join(tmp, "\n"))
}