package main // An app to submit patches for the 30 GO GUI repos import ( "strings" "go.wit.com/dev/alexflint/arg" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) // sent via -ldflags var VERSION string var BUILDTIME string // using this for now. triggers config save var configSave bool func getVersion(repo *gitpb.Repo, name string) string { cmd := []string{"git", "describe", "--tags", "--always", name} result := repo.RunQuiet(cmd) output := strings.Join(result.Stdout, "\n") log.Info("cmd =", cmd, output) return strings.TrimSpace(output) } func main() { me = new(mainType) me.pp = arg.MustParse(&argv) me.urlbase = argv.URL me.urlbase = strings.Trim(me.urlbase, "/") // track down why trailing '/' makes http POST not work // load the ~/.config/forge/ config me.forge = forgepb.Init() me.found = new(gitpb.Repos) if configSave { me.forge.ConfigSave() configSave = false } if argv.Delete != "" { me.forge.DeleteByGoPath(argv.Delete) me.forge.SetConfigSave(true) okExit("") } /* // var count int all := me.forge.Repos.SortByFullPath() for all.Scan() { repo := all.Next() verifyPrint(repo) } */ if argv.Fix { okExit("") } // first find the repos or gopaths to operate on if argv.Config { if findConfig() { me.forge.ConfigPrintTable() okExit("") } } else { findRepos() } // okExit("") log.Info("found", me.found.Len(), "repos. found", len(me.foundPaths), "paths from .config/forge") // now, do something to all of them (or just print out a table of them) var done bool = false if argv.DoScan { doScan() done = true } if argv.DoRedoGoMod { doRedoGoMod() done = true } if argv.DoGitPull { doGitPull() done = true } if argv.DoGitReset { doGitReset() done = true } if argv.DoList { // print out the repos doCobol() done = true } if argv.DoPatchSet { sendDevelDiff() // sendMasterDiff() okExit("patches") } if argv.ListPatchSet { listPatches() okExit("patches") } // do the gui at the very end if argv.DoGui { doGui() } if !done { // if nothing was selected, print out a table of them on STDOUT doCobol() } okExit("") }