summaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-11 02:20:06 -0500
committerJeff Carr <[email protected]>2025-09-11 02:20:06 -0500
commit98467dec72f0a894b7a2fef319d73d3320d94d0f (patch)
tree2bbd2f2fb9d50b413e716ca7030304f950c65194 /config.go
parentdbde2f51b8acb4043203b5592531c6715896c800 (diff)
using new config package
Diffstat (limited to 'config.go')
-rw-r--r--config.go135
1 files changed, 2 insertions, 133 deletions
diff --git a/config.go b/config.go
index 963202f..dc94480 100644
--- a/config.go
+++ b/config.go
@@ -2,31 +2,16 @@
package forgepb
-// functions to import and export the protobuf
-// data to and from config files
-
import (
- "errors"
- "fmt"
- "os"
- "path/filepath"
"time"
"go.wit.com/log"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
+// returns err1 || err2
func (f *Forge) ConfigSave() error {
var err error
- /*
- // backup the current config files
- if e := f.backupConfig(); e != nil {
- log.Info("forge.BackupConfig() error", e)
- err = e
- // continue here? notsure. could be bad either way
- // out of disk space?
- }
- */
if f.Config != nil {
if e := f.Config.ConfigSave(); e != nil {
log.Info("forge.Config.ConfigSave() error", e)
@@ -34,6 +19,7 @@ func (f *Forge) ConfigSave() error {
}
}
if f.Repos != nil {
+ // ???
if f.HasFullScan() {
f.Repos.HasFullScan = true
t := time.Now()
@@ -46,120 +32,3 @@ func (f *Forge) ConfigSave() error {
}
return err
}
-
-// write to ~/.config/forge/
-func (f *ForgeConfigs) ConfigSave() error {
- data, err := f.Marshal()
- if err != nil {
- log.Info("proto.Marshal() failed len", len(data), err)
- return err
- }
- // log.Info("forgepb.ConfigSave() proto.Marshal() worked len", len(data))
-
- s := f.FormatTEXT()
- configWrite("forge.text", []byte(s))
-
- s = f.FormatJSON()
- configWrite("forge.json", []byte(s))
-
- return nil
-}
-
-// load the ~/.config/forge/ files
-func (c *ForgeConfigs) ConfigLoad(fullpath string) error {
- // var data []byte
- // var err error
- if c == nil {
- // can't safely do c = new(ForgeConfig) if c is in a struct from the caller. notsure why
- // TODO: recheck this. it might work now? It's probably still a bad idea(?)
- return errors.New("It's not safe to run ConfigLoad() on a nil")
- }
-
- if err := c.loadText(); err == nil {
- return nil
- }
-
- // forge.text doesn't exist. try forge.json
- // this lets the user hand edit the JSON config
- // probably just deprecate this
- if data, err := loadFile("forge.json"); err != nil {
- if data != nil {
- // this means the forge.json file exists and was read
- if len(data) != 0 {
- if err = c.UnmarshalJSON(data); err == nil {
- log.Info("forge.ConfigLoad()", len(c.ForgeConfigs), "entries in ~/.config/forge")
- // forge.text file was broken. save on load right away
- log.Info("attempting forge.ConfigSave()")
- c.ConfigSave()
- return nil
- }
- }
- }
- }
-
- cpath := filepath.Join(os.Getenv("FORGE_CONFIG"), ".")
- if _, err := os.Stat(cpath); err == nil {
- log.Info("Something has gone wrong. Your", os.Getenv("FORGE_CONFIG"), "directory exists")
- log.Info("However, the config files could not be loaded")
- }
-
- return nil
-}
-
-func (c *ForgeConfigs) loadText() error {
- // this lets the user hand edit the config
- data, err := loadFile("forge.text")
- if err != nil {
- return err
- }
- if data == nil {
- return fmt.Errorf("forge.text data was nil")
- }
- if len(data) == 0 {
- return fmt.Errorf("forge.text was empty")
- }
-
- // attempt to marshal forge.text
- if err := c.UnmarshalTEXT(data); err != nil {
- return err
- }
- log.Log(INFO, "forge.loadText()", len(c.ForgeConfigs), "entries in ~/.config/forge")
- return nil
-}
-
-func loadFile(filename string) ([]byte, error) {
- fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename)
- data, err := os.ReadFile(fullname)
- if errors.Is(err, os.ErrNotExist) {
- // if file does not exist, just return nil. this
- // will cause ConfigLoad() to try the next config file like "forge.text"
- // because the user might want to edit the .config by hand
- return nil, nil
- }
- if err != nil {
- // log.Info("open config file :", err)
- return nil, err
- }
- return data, nil
-}
-
-func configWrite(filename string, data []byte) error {
- fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename)
-
- cfgfile, err := os.OpenFile(fullname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
- defer cfgfile.Close()
- if err != nil {
- log.Warn("open config file :", err)
- return err
- }
- if filename == "forge.text" {
- log.Infof("%s : your preferences file has been updated. (%d) bytes\n", fullname, len(data))
- // add header
- cfgfile.Write([]byte("\n"))
- cfgfile.Write([]byte("# this file is intended to be used to customize settings on what\n"))
- cfgfile.Write([]byte("# git repos you have write access to. That is, where you can run 'git push'\n"))
- cfgfile.Write([]byte("\n"))
- }
- cfgfile.Write(data)
- return nil
-}