You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

config.go 812B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package filesystem
  2. import (
  3. "os"
  4. "github.com/go-git/go-git/v5/config"
  5. "github.com/go-git/go-git/v5/storage/filesystem/dotgit"
  6. "github.com/go-git/go-git/v5/utils/ioutil"
  7. )
  8. type ConfigStorage struct {
  9. dir *dotgit.DotGit
  10. }
  11. func (c *ConfigStorage) Config() (conf *config.Config, err error) {
  12. f, err := c.dir.Config()
  13. if err != nil {
  14. if os.IsNotExist(err) {
  15. return config.NewConfig(), nil
  16. }
  17. return nil, err
  18. }
  19. defer ioutil.CheckClose(f, &err)
  20. return config.ReadConfig(f)
  21. }
  22. func (c *ConfigStorage) SetConfig(cfg *config.Config) (err error) {
  23. if err = cfg.Validate(); err != nil {
  24. return err
  25. }
  26. f, err := c.dir.ConfigWriter()
  27. if err != nil {
  28. return err
  29. }
  30. defer ioutil.CheckClose(f, &err)
  31. b, err := cfg.Marshal()
  32. if err != nil {
  33. return err
  34. }
  35. _, err = f.Write(b)
  36. return err
  37. }