summaryrefslogtreecommitdiff
path: root/load.go
diff options
context:
space:
mode:
Diffstat (limited to 'load.go')
-rw-r--r--load.go142
1 files changed, 142 insertions, 0 deletions
diff --git a/load.go b/load.go
new file mode 100644
index 0000000..5deed1d
--- /dev/null
+++ b/load.go
@@ -0,0 +1,142 @@
+// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT.
+// go install go.wit.com/apps/autogenpb@latest
+//
+// This file was autogenerated with autogenpb:
+// autogenpb v0.5.25-2-g30e8de2 Built on 2025/10/16 09:16:09 ( 3 m)
+// Theese sort.pb.go and marshal.pb.go files are autogenerated
+// The autogenpb sources have example .proto files with instructions
+//
+
+package forgepb
+
+import (
+ "errors"
+ "os"
+
+ "go.wit.com/lib/config"
+ "go.wit.com/lib/env"
+ "go.wit.com/lib/protobuf/argvpb"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func (pb *ForgeConfigs) loadConfig() error {
+ cfgfile := "forge"
+
+ pb.Filename = config.MakeConfigFilename("forge", cfgfile)
+ err := config.ReLoad(pb)
+ if env.Verbose() {
+ log.Printf("%s loadConfig() about to load Config from %s\n", argvpb.GetAPPNAME(), pb.Filename)
+ }
+ if err != nil {
+ log.Info("couldn't load filename:", pb.Filename)
+ log.Info("forge has not been configured")
+ panic("config failed to load. make a new/blank forge config here?")
+ }
+ env.SetGlobal("lib/forgepb", "ForgeCfg", pb.Filename)
+ var changed bool
+ // migrate from the old gopath to "namespace"
+ for fc := range pb.IterAll() {
+ if fc.Namespace != "" {
+ continue
+ }
+ if fc.Namespace != fc.GoPath {
+ fc.Namespace = fc.GoPath
+ changed = true
+ }
+ // todo: deprecate this
+ fc.GoPath = "" // I want to do this but it might be a bad idea at this point
+ }
+ if env.Verbose() {
+ log.Printf("%s loadConfig() loaded Config from %s\n", argvpb.GetAPPNAME(), pb.Filename)
+ }
+ if changed {
+ config.SetChanged("forge", true)
+ }
+
+ // init new config here
+ return err
+}
+
+// loads ~/.cache/forge/repos.pb
+// user configurable, so it can load:
+// ~/.cache/forge/mystuff.pb
+func (f *Forge) reposCacheLoad() error {
+ if f.Repos != nil {
+ return errors.New("already loaded")
+ }
+ reposName := "repos"
+ if env.Get("cache") == "gosrc" {
+ reposName = "gosrc"
+ }
+ if env.Get("cache") == "home" {
+ reposName = "homedir"
+ }
+
+ // get the
+ fullname := config.MakeCacheFilename("forge", reposName)
+ if env.Get("cache") == "gowork" {
+ fullname = env.Get("ReposPB")
+ }
+ f.Repos = gitpb.NewRepos()
+ f.Repos.Filename = fullname
+ err := config.ReLoad(f.Repos)
+ if err == nil {
+ if f.Repos.Filename != fullname {
+ // reset the filename, user probably did "mv" or "cp"
+ f.Repos.Filename = fullname
+ }
+ env.SetGlobal("lib/forgepb", "ReposPB", f.Repos.Filename)
+ }
+ return err
+}
+
+func (f *Forge) patchesCacheLoad() error {
+ if f.Patches != nil {
+ return errors.New("already loaded")
+ }
+ f.Patches = NewPatches()
+ f.Patches.Filename = config.MakeCacheFilename("forge", "patches")
+ err := config.ReLoad(f.Patches)
+ if errors.Is(err, os.ErrNotExist) {
+ // is a new file
+ f.Patches.Save()
+ return os.ErrNotExist
+ }
+ if err != nil {
+ log.Printf("patchesCacheLoad() failed err (%v) filename (%s)\n", err, f.Patches.Filename)
+ panic("failed to load patches")
+ }
+ env.SetGlobal("lib/forgepb", "PatchesPB", f.Patches.Filename)
+ return err
+}
+
+func makeDefaultConfig() (*ForgeConfigs, error) {
+ cfg := NewForgeConfigs()
+ // Get fullpath to ~/.config/forge/forge.text
+ cfg.loadConfig()
+
+ cfg.addSampleConfigs()
+ env.PrintTable()
+ var err error
+ if err = cfg.saveVerbose(); err != nil {
+ log.Info("config save error:", err)
+ }
+ return cfg, err
+}
+
+// first time user. add go.wit.com as an example
+func (cfg *ForgeConfigs) addSampleConfigs() {
+ newc := new(ForgeConfig)
+ newc.GoPath = "go.wit.com"
+ newc.Writable = true
+ newc.Directory = true
+ cfg.Append(newc)
+
+ newc = new(ForgeConfig)
+ newc.GoPath = "priv.wit.com/corp"
+ newc.Writable = true
+ newc.Private = true
+ newc.Directory = true
+ cfg.Append(newc)
+}