summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clone.go4
-rw-r--r--config.go19
-rw-r--r--init.go37
-rw-r--r--iterByMode.go2
-rw-r--r--mode.go66
-rw-r--r--scanRepoDir.go17
-rw-r--r--structs.go2
7 files changed, 130 insertions, 17 deletions
diff --git a/clone.go b/clone.go
index 02177f3..be5a662 100644
--- a/clone.go
+++ b/clone.go
@@ -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
diff --git a/config.go b/config.go
index ea55f25..b51b99f 100644
--- a/config.go
+++ b/config.go
@@ -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)
diff --git a/init.go b/init.go
index ce7d8eb..695319d 100644
--- a/init.go
+++ b/init.go
@@ -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
diff --git a/mode.go b/mode.go
index 2ab966d..7b3bcad 100644
--- a/mode.go
+++ b/mode.go
@@ -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
}
diff --git a/structs.go b/structs.go
index 2e37570..7b07579 100644
--- a/structs.go
+++ b/structs.go
@@ -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 {