ERROR-log on symbolic links

filepath.Walk does not follow symbolic links.
There's no easy fix for that outside of Go, so the best we can do for now is to give notice to the end user by ERROR log statements.

This commit also fixes a related panic situation in GenerateTemplateNameFrom when the layout dir was a symbolic link.

Fixes #283
This commit is contained in:
bep 2014-12-10 16:48:51 +01:00
parent 9f77f93071
commit e6541c45ab
3 changed files with 24 additions and 9 deletions

View file

@ -256,6 +256,11 @@ func getDirList() []string {
return nil
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", path)
return nil
}
if fi.IsDir() {
a = append(a, path)
}

View file

@ -15,13 +15,13 @@ 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"
)
type Input interface {
@ -84,6 +84,11 @@ func (f *Filesystem) captureFiles() {
return nil
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", filePath)
return nil
}
if fi.IsDir() {
if f.avoid(filePath) || isNonProcessablePath(filePath) {
return filepath.SkipDir

View file

@ -16,6 +16,11 @@ package tpl
import (
"bytes"
"errors"
"github.com/eknkc/amber"
"github.com/spf13/cast"
"github.com/spf13/hugo/helpers"
jww "github.com/spf13/jwalterweatherman"
"github.com/yosssi/ace"
"html"
"html/template"
"io"
@ -25,12 +30,6 @@ import (
"reflect"
"strconv"
"strings"
"github.com/eknkc/amber"
"github.com/spf13/cast"
"github.com/spf13/hugo/helpers"
jww "github.com/spf13/jwalterweatherman"
"github.com/yosssi/ace"
)
var localTemplates *template.Template
@ -703,7 +702,8 @@ func (t *GoHtmlTemplate) AddTemplateFile(name, path string) error {
}
func (t *GoHtmlTemplate) GenerateTemplateNameFrom(base, path string) string {
return filepath.ToSlash(path[len(base)+1:])
name, _ := filepath.Rel(base, path)
return filepath.ToSlash(name)
}
func ignoreDotFile(path string) bool {
@ -716,6 +716,11 @@ func (t *GoHtmlTemplate) loadTemplates(absPath string, prefix string) {
return nil
}
if fi.Mode()&os.ModeSymlink == os.ModeSymlink {
jww.ERROR.Printf("Symbolic links not supported, skipping '%s'", absPath)
return nil
}
if !fi.IsDir() {
if ignoreDotFile(path) {
return nil