mirror of
https://github.com/gohugoio/hugo.git
synced 2025-02-16 22:43:40 +00:00
helpers: Fix SymbolicWalk for the root folder
handle the root folders themselves. This commit fixes that. Fixes #2018
This commit is contained in:
parent
977b0e342c
commit
bfe8009415
1 changed files with 28 additions and 0 deletions
|
@ -449,6 +449,22 @@ func FindCWD() (string, error) {
|
|||
// symbolic link. It will still not follow symbolic links deeper down in
|
||||
// the file structure
|
||||
func SymbolicWalk(fs afero.Fs, root string, walker filepath.WalkFunc) error {
|
||||
|
||||
// Handle the root first
|
||||
fileInfo, err := lstatIfOs(fs, root)
|
||||
|
||||
if err != nil || !fileInfo.IsDir() {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return walker(root, nil, err)
|
||||
}
|
||||
|
||||
if err := walker(root, fileInfo, err); err != nil && err != filepath.SkipDir {
|
||||
return err
|
||||
}
|
||||
|
||||
rootContent, err := afero.ReadDir(fs, root)
|
||||
|
||||
if err != nil {
|
||||
|
@ -463,6 +479,18 @@ func SymbolicWalk(fs afero.Fs, root string, walker filepath.WalkFunc) error {
|
|||
|
||||
}
|
||||
|
||||
// Code copied from Afero's path.go
|
||||
// if the filesystem is OsFs use Lstat, else use fs.Stat
|
||||
func lstatIfOs(fs afero.Fs, path string) (info os.FileInfo, err error) {
|
||||
_, ok := fs.(*afero.OsFs)
|
||||
if ok {
|
||||
info, err = os.Lstat(path)
|
||||
} else {
|
||||
info, err = fs.Stat(path)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// SafeWriteToDisk is the same as WriteToDisk
|
||||
// but it also checks to see if file/directory already exists.
|
||||
func SafeWriteToDisk(inpath string, r io.Reader, fs afero.Fs) (err error) {
|
||||
|
|
Loading…
Reference in a new issue