diff options
| -rw-r--r-- | clone.go | 4 | ||||
| -rw-r--r-- | config.go | 19 | ||||
| -rw-r--r-- | init.go | 37 | ||||
| -rw-r--r-- | iterByMode.go | 2 | ||||
| -rw-r--r-- | mode.go | 66 | ||||
| -rw-r--r-- | scanRepoDir.go | 17 | ||||
| -rw-r--r-- | structs.go | 2 |
7 files changed, 130 insertions, 17 deletions
@@ -10,13 +10,13 @@ import ( "path/filepath" "strings" + "go.wit.com/lib/config" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) func getClonePathFromMode() string { - panic("goclonePathFromMode() nope") - return "" + return config.Get("gopath") } // will not violate filesystem namespace @@ -5,7 +5,6 @@ package forgepb import ( "errors" "os" - "os/user" "go.wit.com/lib/config" "go.wit.com/lib/protobuf/argvpb" @@ -57,11 +56,19 @@ func (f *Forge) SaveRepos() error { } func (f *Forge) SetMode(newmode ForgeMode) error { - if f.Mode == newmode { + if f.mode == newmode { // nothing changed return nil } - err := config.Set("mode", string(newmode)) + f.mode = newmode + err := config.Set("mode", newmode.String()) + if err != nil { + panic("config.Set() doesn't work") + } + err = config.Save() + if err != nil { + panic("config.Save() doesn't work") + } return err } @@ -125,12 +132,6 @@ func makeDefaultConfig() (*ForgeConfigs, error) { // Get fullpath to ~/.config/forge/forge.text cfg.loadConfig() - usr, _ := user.Current() - config.Set("username", usr.Username) - - homeDir, _ := os.UserHomeDir() - config.Set("homedir", homeDir) - cfg.addSampleConfigs() DumpENV() config.SetChanged("forge", true) @@ -3,6 +3,10 @@ package forgepb import ( + "os" + "os/user" + "path/filepath" + "go.wit.com/lib/cobol" "go.wit.com/lib/config" "go.wit.com/lib/protobuf/gitpb" @@ -51,6 +55,39 @@ func initFromConfig(cfg *ForgeConfigs) *Forge { f.Config = cfg f.Config.loadConfig() + // always define + if config.Get("username") == "" { + usr, _ := user.Current() + config.Set("username", usr.Username) + config.Save() + } + + // always define + if config.Get("homeDir") == "" { + homeDir, _ := os.UserHomeDir() + config.Set("homeDir", homeDir) + config.Save() + } + + // always define + if config.Get("gopath") == "" { + gopath := filepath.Join(config.Get("homedir"), "go/src") + config.Set("gopath", gopath) + config.Save() + } + + // always set f.mode + switch config.Get("Mode") { + case "NORMAL": + f.mode = ForgeMode_NORMAL + case "CLEAN": + f.mode = ForgeMode_CLEAN + case "MASTER": + f.mode = ForgeMode_MASTER + default: + f.mode = ForgeMode_NEWUSER + } + // todo: play with these / determine good values based on user's machine if cobol.Int(config.Get("RillX")) == 0 { config.Set("RillX", "10") diff --git a/iterByMode.go b/iterByMode.go index 889181d..f3113a4 100644 --- a/iterByMode.go +++ b/iterByMode.go @@ -12,7 +12,7 @@ func (f *Forge) IterByMode() iter.Seq[*gitpb.Repo] { panic("forge is not initialized") } repos := gitpb.NewRepos() - if f.Mode == ForgeMode_NORMAL { + if f.mode == ForgeMode_NORMAL { for r := range f.Repos.IterAll() { if !strings.HasPrefix(r.Namespace, "go.wit.com") { continue @@ -4,7 +4,7 @@ package forgepb // TODO: implement i18n with the protobuf's func (f *Forge) GetMode() string { - switch f.Mode { + switch f.mode { case ForgeMode_MASTER: return "Release Mode (master branch)" case ForgeMode_DEVEL: @@ -12,6 +12,68 @@ func (f *Forge) GetMode() string { case ForgeMode_USER: return "Hack Mode (user branch)" default: - return f.Mode.String() + return f.mode.String() } } + +func (f *Forge) IsModeUnknown() bool { + if f.mode == ForgeMode_UNKNOWN { + return true + } + return false +} + +func (f *Forge) IsModeNewUser() bool { + if f.mode == ForgeMode_NEWUSER { + return true + } + return false +} + +func (f *Forge) IsModeDevel() bool { + if f.mode == ForgeMode_DEVEL { + return true + } + return false +} + +func (f *Forge) SetModeNewUser() { + if err := f.SetMode(ForgeMode_NEWUSER); err != nil { + panic("SetMode failed") + } +} + +func (f *Forge) IsModeMaster() bool { + if f.mode == ForgeMode_MASTER { + return true + } + return false +} + +func (f *Forge) IsModeNormal() bool { + if f.mode == ForgeMode_NORMAL { + return true + } + return false +} + +func (f *Forge) IsModeClean() bool { + if f.mode == ForgeMode_CLEAN { + return true + } + return false +} + +func (f *Forge) IsModeUser() bool { + if f.mode == ForgeMode_USER { + return true + } + return false +} + +func (f *Forge) IsModeGoLang() bool { + if f.mode == ForgeMode_NORMAL { + return true + } + return false +} diff --git a/scanRepoDir.go b/scanRepoDir.go index 81149aa..e09af30 100644 --- a/scanRepoDir.go +++ b/scanRepoDir.go @@ -37,8 +37,21 @@ func (f *Forge) checkNamespace(fullpath string) (*gitpb.Repo, error) { return repo, err } -func (f *Forge) ScanRepoDir() error { - dirs, err := gitDirectoriesNew(config.Get("ReposDir")) +func (f *Forge) RescanRepos() error { + log.Info("RescanRepos() running") + gopath := config.Get("gopath") + f.ScanRepoDir(gopath) + // f.SaveRepos() + f.Repos.SaveVerbose() + return errors.New("ScanReposByMode() not implemented yet") +} + +// scans for .git/ directories +func (f *Forge) ScanRepoDir(path string) error { + if path == "" { + return errors.New("ScanRepoDir() got sent blank dir") + } + dirs, err := gitDirectoriesNew(path) if err != nil { return err } @@ -15,7 +15,7 @@ type Forge struct { Sets *Sets // patches that are in progress hostname string // your hostname goWork bool // means the user is currently using a go.work file - Mode ForgeMode // what "mode" forge is in + mode ForgeMode // what "mode" forge is in } func (f *Forge) IsGoWork() bool { |
