From d2e022f2a7c3654cd1aaf24ea9134e61cb913cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jochum?= Date: Tue, 17 Feb 2015 22:21:37 +0100 Subject: [PATCH] Suppress errors for symbolic links witch point to a file. --- commands/hugo.go | 14 +++++++++++++- source/filesystem.go | 19 ++++++++++++++++--- tpl/template.go | 14 +++++++++++++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/commands/hugo.go b/commands/hugo.go index 986036e7a..1b19c34a4 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -300,7 +300,19 @@ func getDirList() []string { } 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 } diff --git a/source/filesystem.go b/source/filesystem.go index df0a4989c..597d8c7a9 100644 --- a/source/filesystem.go +++ b/source/filesystem.go @@ -15,13 +15,14 @@ package source 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 @@ func (f *Filesystem) captureFiles() { } 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 } diff --git a/tpl/template.go b/tpl/template.go index 320f969c8..083603500 100644 --- a/tpl/template.go +++ b/tpl/template.go @@ -1222,7 +1222,19 @@ func (t *GoHtmlTemplate) loadTemplates(absPath string, prefix string) { } 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 }