diff options
| -rw-r--r-- | defaultBehavior.go | 11 | ||||
| -rw-r--r-- | doClean.go | 8 | ||||
| -rw-r--r-- | doGui.go | 4 | ||||
| -rw-r--r-- | doMode.go | 3 | ||||
| -rw-r--r-- | doNewUser.go | 23 | ||||
| -rw-r--r-- | doNormal.go | 9 | ||||
| -rw-r--r-- | doPatch.go | 2 | ||||
| -rw-r--r-- | doPull.go | 3 | ||||
| -rw-r--r-- | doVerify.go | 2 | ||||
| -rw-r--r-- | find.go | 12 | ||||
| -rw-r--r-- | main.go | 28 | ||||
| -rw-r--r-- | subCommand.go | 3 | ||||
| -rw-r--r-- | windowHowto.go | 4 |
13 files changed, 66 insertions, 46 deletions
diff --git a/defaultBehavior.go b/defaultBehavior.go index 57e4dd6..17cf895 100644 --- a/defaultBehavior.go +++ b/defaultBehavior.go @@ -6,13 +6,16 @@ package main import ( "errors" - "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) func doDefaultBehavior() (string, error) { + log.Info("forge is in mode", me.forge.GetMode()) + if me.forge.IsModeUnknown() { + panic("forge is UNKNOWN. this should have never happened") + } // DEFAULT BEHAVIOR CHANGES BETWEEN MODES - if me.forge.Mode == forgepb.ForgeMode_NORMAL || me.forge.Mode == forgepb.ForgeMode_USER { + if me.forge.IsModeNormal() || me.forge.IsModeUser() { // PROBABLY YOU ARE WRITING CODE // got to the end with nothing to do (?) found := findWorkRepos() @@ -20,11 +23,13 @@ func doDefaultBehavior() (string, error) { return "you have no repos with patches (list them all with --show)", nil } found.SortNamespace() + // footer := fmt.Sprintf("findWorkRepos() found %d", found.Len()) + // return "doDefaultBehavior() :" + footer, nil footer := me.forge.PrintDefaultTB(found) return "repos with unsaved changes: (list them all with --show) " + footer, nil } - if me.forge.Mode == forgepb.ForgeMode_MASTER { + if me.forge.IsModeMaster() { // PROBABLY YOU ARE PUBLISHING / MERGING CODE err := defaultBehaviorMaster() if err != nil { @@ -48,7 +48,7 @@ func doClean() (string, error) { return s, err } - if me.forge.Mode == forgepb.ForgeMode_NORMAL { + if me.forge.IsModeNormal() { s := fmt.Sprintf("Reset all (%d) git repos to the original state (non-destructive)?", me.forge.Repos.Len()) if !fhelp.QuestionUser(s) { s, err = doModeMaster() @@ -60,8 +60,7 @@ func doClean() (string, error) { if err := me.forge.DoAllCheckoutMaster(); err != nil { // badExit(err) } - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes - me.forge.Repos.SaveVerbose() + me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes all := me.forge.Repos.SortByFullPath() for all.Scan() { @@ -69,8 +68,7 @@ func doClean() (string, error) { doResetRepo(repo) } - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes - me.forge.Repos.SaveVerbose() + me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes return "all repos should be clean", nil } @@ -28,10 +28,10 @@ func doGui() { grid := win.Group.RawGrid() if config.True("PathLock") { me.goSrcPwd = gadgets.NewOneLiner(grid, "Working Directory") - me.goSrcPwd.SetText(config.Get("ReposDir")) + me.goSrcPwd.SetText(config.Get("gopath")) } else { me.goSrcEdit = gadgets.NewBasicEntry(grid, "Working Directory") - me.goSrcEdit.SetText(config.Get("ReposDir")) + me.goSrcEdit.SetText(config.Get("gopath")) me.goSrcEdit.Custom = func() { log.Info("updating text to", me.goSrcEdit.String()) } @@ -38,8 +38,7 @@ func doModeMaster() (string, error) { me.forge.SetMode(forgepb.ForgeMode_MASTER) err = me.forge.DoAllCheckoutMaster() - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes - me.forge.SaveRepos() + me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes s = "master mode on" return s, err } diff --git a/doNewUser.go b/doNewUser.go index b9fe56a..bba0a1e 100644 --- a/doNewUser.go +++ b/doNewUser.go @@ -7,7 +7,10 @@ package main import ( "errors" + "fmt" + "path/filepath" + "go.wit.com/lib/config" "go.wit.com/lib/fhelp" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" @@ -17,21 +20,17 @@ func doNewUser() (string, error) { var s string var err error - if me.forge.Mode == forgepb.ForgeMode_UNKNOWN { + if me.forge.IsModeUnknown() { + // display banner. it's probably the first time forge was ever run on this machine dumpDebug() log.Info("---- ----") log.Info("---- Welcome to forge!!! ----") log.Info("---- ----") - if err := me.forge.SetMode(forgepb.ForgeMode_NEWUSER); err != nil { - // this should never happen - log.Info("early forge new user handling failed", err) - return "forge is still new and under development", err - } - } else { - // log.Info("MODE NOT UNKNOWN") + me.forge.SetModeNewUser() } - if me.forge.Mode != forgepb.ForgeMode_NEWUSER { + if !me.forge.IsModeNewUser() { + panic("finally got out of NEWUSER") // you aren't a new user anymore return s, err } @@ -41,8 +40,10 @@ func doNewUser() (string, error) { log.Info("") log.Info(string(pfile)) - if fhelp.QuestionUser("Scan ~/go/src for .git repos") { - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes + gosrc := filepath.Join(config.Get("homedir"), "go/src") + s = fmt.Sprintf("Scan %s for .git repos", gosrc) + if fhelp.QuestionUser(s) { + me.forge.ScanRepoDir(gosrc) // looks for new dirs, checks existing repos for changes } else { // log.Info("question false") return "not scanned", errors.New("~/go/src not scanned") diff --git a/doNormal.go b/doNormal.go index 38505de..849122e 100644 --- a/doNormal.go +++ b/doNormal.go @@ -68,8 +68,7 @@ func (a *args) DoNormal() (string, error) { func doNormalAttempt() (string, error) { start := time.Now() err := me.forge.DoAllCheckoutUser(argv.Force) - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes - me.forge.SaveRepos() + me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes dur := time.Since(start) log.Printf("Checked out %d user braches in %s\n", me.forge.Repos.Len(), shell.FormatDuration(dur)) if err != nil { @@ -156,11 +155,11 @@ func doNormalStatus() bool { // this also verifies that func checkNormalRepoState(repo *gitpb.Repo) error { var err error - tmp := filepath.Join(config.Get("ReposDir"), repo.GetNamespace()) + tmp := filepath.Join(config.Get("gopath"), repo.GetNamespace()) if tmp != repo.FullPath { log.Infof("%s != %s\n", repo.FullPath, tmp) - if strings.HasPrefix(repo.FullPath, config.Get("ReposDir")) { - tmp = strings.TrimPrefix(repo.FullPath, config.Get("ReposDir")) + if strings.HasPrefix(repo.FullPath, config.Get("gopath")) { + tmp = strings.TrimPrefix(repo.FullPath, config.Get("gopath")) tmp = strings.Trim(tmp, "/") repo.Namespace = tmp err = log.Errorf("namespace set to filepath") @@ -21,7 +21,7 @@ import ( ) func isPatchingSafe() bool { - if me.forge.Mode == forgepb.ForgeMode_NORMAL { + if me.forge.IsModeNormal() { return true } log.Info("This patch command is not safe to run now") @@ -8,7 +8,6 @@ import ( "time" "go.wit.com/lib/cobol" - "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) @@ -89,7 +88,7 @@ func doPull() (string, error) { } // below this, you must not be in 'normal' mode - if me.forge.Mode == forgepb.ForgeMode_NORMAL { + if me.forge.IsModeNormal() { s = "you must check out the devel or master branches" return s, errors.New("wrong mode " + me.forge.GetMode()) } diff --git a/doVerify.go b/doVerify.go index 5790fde..72c7f1d 100644 --- a/doVerify.go +++ b/doVerify.go @@ -30,7 +30,7 @@ func doVerify() (string, error) { func cleanNamespace(r *gitpb.Repo) string { // check for GO repos - gowork := config.Get("ReposDir") + gowork := config.Get("gopath") // todo: detect if using go.work file newpath, err := filepath.Rel(gowork, r.FullPath) // log.Info("cleanNamespace()", newpath, gowork, "is gowork. fullpath:", r.FullPath) @@ -4,6 +4,8 @@ package main import ( + "strings" + "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) @@ -155,6 +157,7 @@ func findReposWithPatches() *gitpb.Repos { for repo := range me.forge.Repos.IterByFullPath() { if repo.IsDirty() { + repo.State = "dirty" // always add dirty branches found.AppendByFullPath(repo) continue @@ -164,6 +167,7 @@ func findReposWithPatches() *gitpb.Repos { continue } if repo.GetUserVersion() != repo.GetDevelVersion() { + repo.State = "userNEdevel" found.AppendByFullPath(repo) continue } @@ -183,14 +187,18 @@ func findReposWithPatches() *gitpb.Repos { // log.Info("repo state", repo.FullPath, repo.State) continue } + repo.State = "devVSmaster" found.AppendByFullPath(repo) continue } // this is an old test to see if the current 'last tag' is accurate and should be removed if repo.GetLastTag() != repo.GetMasterVersion() { - found.AppendByFullPath(repo) - repo.FindLastTag() + if strings.HasPrefix(repo.Namespace, "go.wit.com") { + repo.State = "tagVSmaster" + found.AppendByFullPath(repo) + repo.FindLastTag() + } continue } } @@ -42,28 +42,42 @@ func doInit() *forgepb.Forge { } func doCoreChecks() { - me.forge.ScanRepoDir() // looks for new dirs, checks existing repos for changes + me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes - if me.forge.Mode != forgepb.ForgeMode_NORMAL { + if !me.forge.IsModeNormal() { forgepb.DumpENV() } - if me.forge.Mode == forgepb.ForgeMode_DEVEL { + if me.forge.IsModeDevel() { dumpDebug() } // if you are in "normal" mode, always run normal every time to catch accidental errors // for example, if you accidentally changed branches from your user branch - if me.forge.Mode == forgepb.ForgeMode_NORMAL { + if me.forge.IsModeNormal() { // show what is still normal and what is not - doNormalStatus() + if doNormalStatus() { + log.Info("things are still normal") + } else { + log.Info("things are not normal anymore") + } } } func main() { + var s string + var err error me = new(mainType) me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args - me.forge = doInit() // init's forge (and checks for new users) + me.forge, err = forgepb.Init() + if err != nil { + log.Printf("forge failure on Init err=(%v)\n", err) + me.argv.BadExit("WTF", err) + } + + if me.forge.IsModeUnknown() || me.forge.IsModeNewUser() { + doNewUser() + } // put things to do every time forge runs here doCoreChecks() @@ -80,8 +94,6 @@ func main() { log.Info("Starting forge with subcommand:", me.argv.Cmd) - var s string - var err error s, err = doSubcommand() // safe exits back to your shell (with timing and toolkit close) diff --git a/subCommand.go b/subCommand.go index 556fd57..c29214f 100644 --- a/subCommand.go +++ b/subCommand.go @@ -5,7 +5,6 @@ package main import ( "go.wit.com/lib/gui/shell" - "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) @@ -50,7 +49,7 @@ func doSubcommand() (string, error) { } if argv.Normal != nil { - if me.forge.Mode == forgepb.ForgeMode_NORMAL { + if me.forge.IsModeNormal() { s, err = doNormalAll() } else { // attempt to switch into Normal mode diff --git a/windowHowto.go b/windowHowto.go index f85d00b..64578d1 100644 --- a/windowHowto.go +++ b/windowHowto.go @@ -37,10 +37,10 @@ func makeHowtoWin() *gadgets.GenericWindow { grid.NewLabel("") // a stupid way to add padding grid.NextRow() - // howtoWin.Group.NewLabel("Working dir: " + config.Get("ReposDir")) + // howtoWin.Group.NewLabel("Working dir: " + config.Get("gopath")) grid = howtoWin.Group.RawGrid() - grid.NewButton("Download into "+config.Get("ReposDir"), func() { + grid.NewButton("Download into "+config.Get("gopath"), func() { howtoWin.Disable() defer howtoWin.Enable() doRebuildForge() |
