// 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" env.LoadAppENV("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" } // load in the repos.pb file // setup the GO env settings fullname := config.MakeCacheFilename("forge", reposName) if env.True("GoWork") { // if using a go.work file, the filename should have already been set 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) }