diff options
Diffstat (limited to 'hugofs')
-rw-r--r-- | hugofs/fs.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/hugofs/fs.go b/hugofs/fs.go index 163807704..c8c4c8afd 100644 --- a/hugofs/fs.go +++ b/hugofs/fs.go @@ -16,6 +16,7 @@ package hugofs import ( "os" + "strings" "github.com/gohugoio/hugo/config" "github.com/spf13/afero" @@ -88,3 +89,27 @@ func getWorkingDirFs(base afero.Fs, cfg config.Provider) *afero.BasePathFs { func isWrite(flag int) bool { return flag&os.O_RDWR != 0 || flag&os.O_WRONLY != 0 } + +// MakeReadableAndRemoveAllModulePkgDir makes any subdir in dir readable and then +// removes the root. +// TODO(bep) move this to a more suitable place. +// +func MakeReadableAndRemoveAllModulePkgDir(fs afero.Fs, dir string) (int, error) { + // Safe guard + if !strings.Contains(dir, "pkg") { + panic("invalid dir") + } + + counter := 0 + afero.Walk(fs, dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return nil + } + if info.IsDir() { + counter++ + fs.Chmod(path, 0777) + } + return nil + }) + return counter, fs.RemoveAll(dir) +} |