From 8fbb9914931704257581f5a7474ee3f2abc3780f Mon Sep 17 00:00:00 2001 From: Máximo Cuadros Date: Sun, 21 May 2017 19:28:05 +0200 Subject: storage: filesystem, initialize the default folder scaffolding --- storage/filesystem/internal/dotgit/dotgit.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'storage/filesystem/internal/dotgit/dotgit.go') diff --git a/storage/filesystem/internal/dotgit/dotgit.go b/storage/filesystem/internal/dotgit/dotgit.go index fdfcea7..f9f4d79 100644 --- a/storage/filesystem/internal/dotgit/dotgit.go +++ b/storage/filesystem/internal/dotgit/dotgit.go @@ -66,6 +66,33 @@ func New(fs billy.Filesystem) *DotGit { return &DotGit{fs: fs} } +// Initialize creates all the folder scaffolding. +func (d *DotGit) Initialize() error { + mustExists := []string{ + d.fs.Join("objects", "info"), + d.fs.Join("objects", "pack"), + d.fs.Join("refs", "heads"), + d.fs.Join("refs", "tags"), + } + + for _, path := range mustExists { + _, err := d.fs.Stat(path) + if err == nil { + continue + } + + if !os.IsNotExist(err) { + return err + } + + if err := d.fs.MkdirAll(path, os.ModeDir|os.ModePerm); err != nil { + return err + } + } + + return nil +} + // ConfigWriter returns a file pointer for write to the config file func (d *DotGit) ConfigWriter() (billy.File, error) { return d.fs.Create(configPath) -- cgit