summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.common.go (renamed from forgeConfig.common.go)0
-rw-r--r--config.go58
-rw-r--r--forgeConfig.config.go56
-rw-r--r--forgeConfig.proto2
-rw-r--r--init.go46
5 files changed, 90 insertions, 72 deletions
diff --git a/forgeConfig.common.go b/config.common.go
index 5a230a8..5a230a8 100644
--- a/forgeConfig.common.go
+++ b/config.common.go
diff --git a/config.go b/config.go
index d5d80c8..8442933 100644
--- a/config.go
+++ b/config.go
@@ -3,6 +3,8 @@
package forgepb
import (
+ "os"
+
"go.wit.com/lib/config"
"go.wit.com/lib/gui/prep"
"go.wit.com/log"
@@ -32,3 +34,59 @@ func (f *Forge) ConfigSave() error {
}
return err
}
+
+// functions to import and export the protobuf
+// data to and from config files
+
+// write to ~/.config/forge/
+func (cfg *ForgeConfigs) ConfigSave() error {
+ var header string
+ header += "\n"
+ header += "# the forge config file\n"
+ header += "# You can customize things like:\n"
+ header += "#\n"
+ header += "# * which repos you have write access to\n"
+ header += "# * custom branch names for 'master', 'devel' and 'user'\n"
+ header += "# * 'favorites' so you can remember which things you like\n"
+ header += "# * sometimes protobuf TEXT can fail so as a backup this also creates a .json file\n"
+ header += "#\n"
+ header += "\n"
+ return config.ConfigSaveWithHeader(cfg, header)
+}
+
+func (cfg *ForgeConfigs) DumpENV() {
+ log.Infof("CfgPB.Filename = %s\n", cfg.Filename)
+ log.Infof("CfgPB.ReposPB = %s\n", cfg.ReposPB)
+ log.Infof("CfgPB.ReposDir = %s\n", cfg.ReposDir)
+ log.Infof("CfgPB.PatchDir = %s\n", cfg.PatchDir)
+ log.Infof("CfgPB.ForgeURL = %s\n", cfg.ForgeURL)
+ if cfg.GoWork {
+ log.Infof("CfgPB.GoWork = %v\n", cfg.GoWork)
+ }
+ log.Infof("CfgPB.Mode = %s\n", cfg.Mode)
+ // log.Infof("CfgPB.Hostname=%s\n", cfg.Hostname)
+
+ if cfg.ReposPB != os.Getenv("FORGE_REPOSPB") {
+ log.Infof("CfgPB file problem: cfg.ReposPB=%s != FORGE_REPOSPB=%s\n", cfg.ReposPB, os.Getenv("FORGE_REPOSPB"))
+ }
+}
+
+/*
+ if f.Config.Username == "" {
+ usr, _ := user.Current()
+ f.Config.Username = usr.Username
+ f.SetConfigSave(true)
+ }
+
+ if f.Config.Xterm == "" {
+ f.Config.Xterm = "xterm"
+ f.Config.XtermArgv = append(f.Config.XtermArgv, "-bg")
+ f.Config.XtermArgv = append(f.Config.XtermArgv, "black")
+ f.Config.XtermArgv = append(f.Config.XtermArgv, "-fg")
+ f.Config.XtermArgv = append(f.Config.XtermArgv, "white")
+ f.SetConfigSave(true)
+ }
+*/
+
+func (cfg *ForgeConfigs) InitDefaults() {
+}
diff --git a/forgeConfig.config.go b/forgeConfig.config.go
deleted file mode 100644
index b5080a6..0000000
--- a/forgeConfig.config.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2025 WIT.COM Inc Licensed GPL 3.0
-
-package forgepb
-
-import (
- "os"
-
- "go.wit.com/lib/config"
- "go.wit.com/log"
-)
-
-// functions to import and export the protobuf
-// data to and from config files
-
-// write to ~/.config/forge/
-func (cfg *ForgeConfigs) ConfigSave() error {
- var header string
- header += "\n"
- header += "# the forge config file\n"
- header += "# You can customize things like:\n"
- header += "#\n"
- header += "# * which repos you have write access to\n"
- header += "# * custom branch names for 'master', 'devel' and 'user'\n"
- header += "# * 'favorites' so you can remember which things you like\n"
- header += "#\n"
- header += "\n"
- return config.ConfigSaveWithHeader(cfg, header)
-}
-
-func (cfg *ForgeConfigs) DumpENV() {
- if cfg.ReposPB != os.Getenv("FORGE_REPOSPB") {
- log.Infof("RepoPB file problem: cfg.ReposPB=%s != FORGE_REPOSPB=%s\n", cfg.ReposPB, os.Getenv("FORGE_REPOSPB"))
- }
-}
-
-// load the ~/.config/forge/ files
-func (c *ForgeConfigs) ConfigLoad(fullpath string) error {
- return nil
-}
-
-/*
- if f.Config.Username == "" {
- usr, _ := user.Current()
- f.Config.Username = usr.Username
- f.SetConfigSave(true)
- }
-
- if f.Config.Xterm == "" {
- f.Config.Xterm = "xterm"
- f.Config.XtermArgv = append(f.Config.XtermArgv, "-bg")
- f.Config.XtermArgv = append(f.Config.XtermArgv, "black")
- f.Config.XtermArgv = append(f.Config.XtermArgv, "-fg")
- f.Config.XtermArgv = append(f.Config.XtermArgv, "white")
- f.SetConfigSave(true)
- }
-*/
diff --git a/forgeConfig.proto b/forgeConfig.proto
index 14ef1ef..ec081d0 100644
--- a/forgeConfig.proto
+++ b/forgeConfig.proto
@@ -55,7 +55,7 @@ message ForgeConfigs { // `autogenpb:mar
repeated string xtermArgv = 6; // the argv line for xterm
string defaultGui = 7; // default GUI plugin to use
ForgeMode mode = 8; // what "mode" forge is in
- string goSrc = 9; // is ~/go/src unless a go.work file is found
+ bool goWork = 9; // true if there is a go.work file
bool pathLock = 10; // the path is locked
string ReposPB = 11; // where the repos.pb is
string ReposDir = 12; // where the repos are
diff --git a/init.go b/init.go
index 6ade4ab..9243e9d 100644
--- a/init.go
+++ b/init.go
@@ -24,17 +24,26 @@ func Default(opts ...OptionFunc) *Engine {
*/
func Init() *Forge {
+ f := new(Forge)
cfg := new(ForgeConfigs)
err := config.ConfigLoad(cfg, "forge", "forge")
+ f.Config = cfg
if err != nil {
- log.Info("forge has not been configured yet filename =", cfg.Filename)
- log.Info("go install go.wit.com/apps/forge@latest")
- os.Exit(-1)
+ // fhelp.DumpENV("finit:")
+ f.setenv()
+ if !fhelp.QuestionUser("This is your first time using forge, use these default values?") {
+ os.Exit(-1)
+ }
+ f.Config.InitDefaults()
+ f.Config.ConfigSave()
+ f.initFromConfig()
+ f.Config.DumpENV()
+ return f
}
- f := initFromConfig(cfg)
+ f.initFromConfig()
if f.Config.Mode == ForgeMode_MASTER {
log.Printf("forge.Init() %s len()=%d\n", f.Config.Filename, f.Repos.Len())
- fhelp.DumpENV("finit:")
+ // fhelp.DumpENV("finit:")
f.Config.DumpENV()
}
return f
@@ -48,14 +57,14 @@ func InitByAppname(argname string) *Forge {
log.Info("go install go.wit.com/apps/forge@latest")
os.Exit(-1)
}
- f := initFromConfig(cfg)
+ f := new(Forge)
+ f.Config = cfg
+ f.initFromConfig()
log.Printf("forge.Init() %s len()=%d\n", f.Config.Filename, f.Repos.Len())
return f
}
-func initFromConfig(cfg *ForgeConfigs) *Forge {
- f := new(Forge)
- f.Config = cfg
+func (f *Forge) initFromConfig() {
if f.configENV() {
log.Info("ENV changed config. todo: save config here")
f.Config.ConfigSave()
@@ -80,9 +89,12 @@ func initFromConfig(cfg *ForgeConfigs) *Forge {
f.Patchsets = NewPatchsets()
// todo: play with these / determine good values based on user's machine
- f.Config.RillX = 10
- f.Config.RillY = 20
- return f
+ if f.Config.RillX == 0 {
+ f.Config.RillX = 10
+ }
+ if f.Config.RillY == 0 {
+ f.Config.RillY = 20
+ }
}
func (f *Forge) SetConfigSave(b bool) {
@@ -93,8 +105,9 @@ func (f *Forge) SetConfigSave(b bool) {
func (f *Forge) Exit() {
// log.Info("forge.configSave =", f.configSave)
if f.Config.Mode == ForgeMode_MASTER {
- fhelp.DumpENV("forge:")
- f.Config.DumpENV()
+ // fhelp.DumpENV("forge:")
+ // f.Config.DumpENV()
+ // todo: tell the user to switch to NORMAL mode
}
f.ConfigSave()
@@ -114,6 +127,7 @@ func (f *Forge) Exit() {
// all initial ENV settings should be stored in the forge struct
func (f *Forge) setenv() {
f.once.Do(func() {
+ log.Info("doing setenv()")
if err := fhelp.ConfigureENV(); err != nil {
log.Info("forge ConfigureENV() failed", err)
os.Exit(-1)
@@ -128,9 +142,11 @@ func (f *Forge) setenv() {
f.goWork = true
}
- f.Config.ReposPB = os.Getenv("FORGE_REPOPB")
+ f.Config.ReposPB = os.Getenv("FORGE_REPOSPB")
+ f.Config.ReposDir = os.Getenv("FORGE_REPOSDIR")
f.Config.PatchDir = os.Getenv("FORGE_PATCHDIR")
f.Config.ForgeURL = os.Getenv("FORGE_URL")
+ fhelp.DumpENV("setenv end()")
})
}