diff options
Diffstat (limited to 'storage/filesystem')
-rw-r--r-- | storage/filesystem/config.go | 52 | ||||
-rw-r--r-- | storage/filesystem/dotgit/dotgit.go | 50 | ||||
-rw-r--r-- | storage/filesystem/dotgit/dotgit_test.go | 6 |
3 files changed, 22 insertions, 86 deletions
diff --git a/storage/filesystem/config.go b/storage/filesystem/config.go index dbdce54..01b35b4 100644 --- a/storage/filesystem/config.go +++ b/storage/filesystem/config.go @@ -5,7 +5,6 @@ import ( "os" "github.com/go-git/go-git/v5/config" - format "github.com/go-git/go-git/v5/plumbing/format/config" "github.com/go-git/go-git/v5/storage/filesystem/dotgit" "github.com/go-git/go-git/v5/utils/ioutil" ) @@ -14,11 +13,10 @@ type ConfigStorage struct { dir *dotgit.DotGit } -func (c *ConfigStorage) Config() (*config.Config, error) { +func (c *ConfigStorage) Config() (conf *config.Config, err error) { cfg := config.NewConfig() - // local config (./.git/config) - f, err := c.dir.LocalConfig() + f, err := c.dir.Config() if err != nil { if os.IsNotExist(err) { return cfg, nil @@ -31,55 +29,13 @@ func (c *ConfigStorage) Config() (*config.Config, error) { b, err := stdioutil.ReadAll(f) if err != nil { - return cfg, err - } - - if err = cfg.UnmarshalScoped(format.LocalScope, b); err != nil { - return cfg, err - } - - // global config (~/.gitconfig) - f, err = c.dir.GlobalConfig() - if err != nil { - if os.IsNotExist(err) { - return cfg, nil - } - return nil, err } - defer ioutil.CheckClose(f, &err) - - b, err = stdioutil.ReadAll(f) - if err != nil { - return cfg, err - } - - if err = cfg.UnmarshalScoped(format.GlobalScope, b); err != nil { - return cfg, err - } - - // system config (/etc/gitconfig) - f, err = c.dir.SystemConfig() - if err != nil { - if os.IsNotExist(err) { - return cfg, nil - } - + if err = cfg.Unmarshal(b); err != nil { return nil, err } - defer ioutil.CheckClose(f, &err) - - b, err = stdioutil.ReadAll(f) - if err != nil { - return cfg, err - } - - if err = cfg.UnmarshalScoped(format.SystemScope, b); err != nil { - return cfg, err - } - return cfg, err } @@ -88,7 +44,7 @@ func (c *ConfigStorage) SetConfig(cfg *config.Config) (err error) { return err } - f, err := c.dir.LocalConfigWriter() + f, err := c.dir.ConfigWriter() if err != nil { return err } diff --git a/storage/filesystem/dotgit/dotgit.go b/storage/filesystem/dotgit/dotgit.go index 8c3896b..83c7683 100644 --- a/storage/filesystem/dotgit/dotgit.go +++ b/storage/filesystem/dotgit/dotgit.go @@ -21,17 +21,15 @@ import ( ) const ( - suffix = ".git" - packedRefsPath = "packed-refs" - localConfigPath = "config" - globalConfigPath = ".gitconfig" - systemConfigPath = "/etc/gitconfig" - indexPath = "index" - shallowPath = "shallow" - modulePath = "modules" - objectsPath = "objects" - packPath = "pack" - refsPath = "refs" + suffix = ".git" + packedRefsPath = "packed-refs" + configPath = "config" + indexPath = "index" + shallowPath = "shallow" + modulePath = "modules" + objectsPath = "objects" + packPath = "pack" + refsPath = "refs" tmpPackedRefsPrefix = "._packed-refs" @@ -157,32 +155,14 @@ func (d *DotGit) Close() error { return nil } -// LocalConfigWriter returns a file pointer for write to the local config file -func (d *DotGit) LocalConfigWriter() (billy.File, error) { - return d.fs.Create(localConfigPath) +// ConfigWriter returns a file pointer for write to the config file +func (d *DotGit) ConfigWriter() (billy.File, error) { + return d.fs.Create(configPath) } -// LocalConfig returns a file pointer for read to the local config file -func (d *DotGit) LocalConfig() (billy.File, error) { - return d.fs.Open(localConfigPath) -} - -// GlobalConfigWriter returns a file pointer for write to the global config file -func (d *DotGit) GlobalConfigWriter() (billy.File, error) { - return osfs.New(os.Getenv("HOME")).Create(globalConfigPath) -} - -// GlobalConfig returns a file pointer for read to the global config file -func (d *DotGit) GlobalConfig() (billy.File, error) { - return osfs.New(os.Getenv("HOME")).Open(globalConfigPath) -} - -// SystemConfigWriter doesn't exist because we typically do not have permission -// to write to files in /etc. - -// SystemConfig returns a file pointer for read to the system config file -func (d *DotGit) SystemConfig() (billy.File, error) { - return osfs.New("/").Open(systemConfigPath) +// Config returns a file pointer for read to the config file +func (d *DotGit) Config() (billy.File, error) { + return d.fs.Open(configPath) } // IndexWriter returns a file pointer for write to the index file diff --git a/storage/filesystem/dotgit/dotgit_test.go b/storage/filesystem/dotgit/dotgit_test.go index 519f601..0a72aa6 100644 --- a/storage/filesystem/dotgit/dotgit_test.go +++ b/storage/filesystem/dotgit/dotgit_test.go @@ -344,7 +344,7 @@ func (s *SuiteDotGit) TestConfig(c *C) { fs := fixtures.Basic().ByTag(".git").One().DotGit() dir := New(fs) - file, err := dir.LocalConfig() + file, err := dir.Config() c.Assert(err, IsNil) c.Assert(filepath.Base(file.Name()), Equals, "config") } @@ -357,13 +357,13 @@ func (s *SuiteDotGit) TestConfigWriteAndConfig(c *C) { fs := osfs.New(tmp) dir := New(fs) - f, err := dir.LocalConfigWriter() + f, err := dir.ConfigWriter() c.Assert(err, IsNil) _, err = f.Write([]byte("foo")) c.Assert(err, IsNil) - f, err = dir.LocalConfig() + f, err = dir.Config() c.Assert(err, IsNil) cnt, err := ioutil.ReadAll(f) |