ref: d2e022f2a7c3654cd1aaf24ea9134e61cb913cec
parent: aeddaee901b2345ceb7837124199f26cfc405607
author: René Jochum <[email protected]>
date: Tue Feb 17 17:21:37 EST 2015
Suppress errors for symbolic links witch point to a file.
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -300,7 +300,19 @@
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
- jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", path)
+ link, err := filepath.EvalSymlinks(path)
+ if err != nil {
+ jww.ERROR.Printf("Cannot read symbolic link '%s', error was: %s", path, err)
+ return nil
+ }
+ linkfi, err := os.Stat(link)
+ if err != nil {
+ jww.ERROR.Printf("Cannot stat '%s', error was: %s", link, err)
+ return nil
+ }
+ if !linkfi.Mode().IsRegular() {
+ jww.ERROR.Printf("Symbolic links for directories not supported, skipping '%s'", path)
+ }
return nil
}
--- a/source/filesystem.go
+++ b/source/filesystem.go
@@ -15,13 +15,14 @@
import (
"bytes"
- "github.com/spf13/hugo/helpers"
- jww "github.com/spf13/jwalterweatherman"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
+
+ "github.com/spf13/hugo/helpers"
+ jww "github.com/spf13/jwalterweatherman"
)
type Input interface {
@@ -85,7 +86,19 @@
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
- jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", filePath)
+ link, err := filepath.EvalSymlinks(filePath)
+ if err != nil {
+ jww.ERROR.Printf("Cannot read symbolic link '%s', error was: %s", filePath, err)
+ return nil
+ }
+ linkfi, err := os.Stat(link)
+ if err != nil {
+ jww.ERROR.Printf("Cannot stat '%s', error was: %s", link, err)
+ return nil
+ }
+ if !linkfi.Mode().IsRegular() {
+ jww.ERROR.Printf("Symbolic links for directories not supported, skipping '%s'", filePath)
+ }
return nil
}
--- a/tpl/template.go
+++ b/tpl/template.go
@@ -1222,7 +1222,19 @@
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
- jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", absPath)
+ link, err := filepath.EvalSymlinks(absPath)
+ if err != nil {
+ jww.ERROR.Printf("Cannot read symbolic link '%s', error was: %s", absPath, err)
+ return nil
+ }
+ linkfi, err := os.Stat(link)
+ if err != nil {
+ jww.ERROR.Printf("Cannot stat '%s', error was: %s", link, err)
+ return nil
+ }
+ if !linkfi.Mode().IsRegular() {
+ jww.ERROR.Printf("Symbolic links for directories not supported, skipping '%s'", absPath)
+ }
return nil
}