package main import ( "os" "path/filepath" "go.wit.com/gui" "go.wit.com/lib/gui/repolist" "go.wit.com/log" ) func globalResetOptions(box *gui.Node) { group2 := box.NewGroup("Global Destructive Options") me.autoRebuildButton = group2.NewButton("rebuild autotypist", func() { me.autoRebuildButton.Disable() me.autoRebuildButton.SetLabel("running....") attemptAutoRebuild() me.autoRebuildButton.Enable() me.autoRebuildButton.SetLabel("rebuild autotypist") }) me.stopOnErrors = group2.NewCheckbox("Stop on errors") me.stopOnErrors.SetChecked(true) me.autoDryRun = group2.NewCheckbox("autotypist --dry-run") me.autoDryRun.SetChecked(true) buildOptions := group2.NewGrid("buildOptions", 2, 1) buildOptions.NewLabel("start over") me.deleteGoSrcPkgB = buildOptions.NewButton("rm ~/go/src & ~/go/pkg", func() { for _, repo := range repolist.AllRepos() { if repo.Status.CheckDirty() { log.Warn("repo is dirty. commit your changes first", repo.Status.Path()) me.deleteGoSrcPkgB.SetLabel("rm ~/go/src (can't. dirty repos)") return } } log.Warn("no repos have uncommited changes") log.Warn("TODO: check things are pushed and check every dir in go/src/") me.deleteGoSrcPkgB.SetLabel("ARE YOU SURE?") if me.deleteGoSrcPkgB.String() == "ARE YOU SURE?" { me.deleteGoSrcPkgB.SetLabel("WE ARE NOT KIDDING?") return } if me.deleteGoSrcPkgB.String() == "WE ARE NOT KIDDING" { me.deleteGoSrcPkgB.SetLabel("ALL 90 REPOS?") return } if me.deleteGoSrcPkgB.String() == "ARE YOU SURE?" { homeDir := me.userHomePwd.String() fullpath := filepath.Join(homeDir, "go") gosrc := filepath.Join(fullpath, "src") gopkg := filepath.Join(fullpath, "pkg") quickCmd(fullpath, []string{"rm", "-rf", gosrc}) quickCmd(fullpath, []string{"chmod", "700", "-R", gopkg}) quickCmd(fullpath, []string{"rm", "-rf", gopkg}) } }) } func attemptAutoRebuild() { os.Setenv("GO111MODULE", "off") version := "latest" homeDir := me.userHomePwd.String() quickCmd(homeDir, []string{"mkdir", "-p", "go/src/go.wit.com/apps/"}) fullpath := filepath.Join(homeDir, "go/src/go.wit.com/apps/") quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/apps/autotypist"}) quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/debian"}) quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/tree"}) quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/nocui"}) quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/gocui"}) quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/andlabs"}) os.Unsetenv("GO111MODULE") quickCmd(homeDir, []string{"mkdir", "-p", "go/lib"}) fullpath = filepath.Join(homeDir, "go/src/go.wit.com/toolkits/nocui/") libfile := filepath.Join(homeDir, "go/lib/nocui.so") quickCmd(fullpath, []string{"go", "mod", "init"}) quickCmd(fullpath, []string{"go", "mod", "tidy"}) quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", libfile}) fullpath = filepath.Join(homeDir, "go/src/go.wit.com/toolkits/gocui/") libfile = filepath.Join(homeDir, "go/lib/gocui.so") quickCmd(fullpath, []string{"go", "mod", "init"}) quickCmd(fullpath, []string{"go", "mod", "tidy"}) quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", libfile}) fullpath = filepath.Join(homeDir, "go/src/go.wit.com/toolkits/andlabs/") libfile = filepath.Join(homeDir, "go/lib/andlabs.so") quickCmd(fullpath, []string{"go", "mod", "init"}) quickCmd(fullpath, []string{"go", "mod", "tidy"}) quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", libfile}) fullpath = filepath.Join(homeDir, "go/src/go.wit.com") quickCmd(fullpath, []string{"go", "install", "-v", "go.wit.com/apps/autotypist@" + version}) }