shithub: hugo

Download patch

ref: cb89ae63e948709aa68d0ccc2a2438794be4f38d
parent: 4f66f790b168005efb835b2499c4a502e492b747
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Mar 31 19:06:51 EDT 2016

tpl: Make readDir use the WorkingDir fs

Fixes #2010

--- a/tpl/template_funcs.go
+++ b/tpl/template_funcs.go
@@ -1501,6 +1501,21 @@
 	return readFile(hugofs.WorkingDir(), cast.ToString(i))
 }
 
+// readDirFromWorkingDir listst the directory content relative to the
+// configured WorkingDir.
+func readDirFromWorkingDir(i interface{}) ([]os.FileInfo, error) {
+
+	path := cast.ToString(i)
+
+	list, err := afero.ReadDir(hugofs.WorkingDir(), path)
+
+	if err != nil {
+		return nil, fmt.Errorf("Failed to read Directory %s with error message %s", path, err)
+	}
+
+	return list, nil
+}
+
 // safeHTMLAttr returns a given string as html/template HTMLAttr content.
 //
 // safeHTMLAttr is currently disabled, pending further discussion
@@ -1722,7 +1737,7 @@
 		"partial":      partial,
 		"plainify":     plainify,
 		"pluralize":    pluralize,
-		"readDir":      readDir,
+		"readDir":      readDirFromWorkingDir,
 		"readFile":     readFileFromWorkingDir,
 		"ref":          ref,
 		"relURL":       func(a string) template.HTML { return template.HTML(helpers.RelURL(a)) },
--- a/tpl/template_resources.go
+++ b/tpl/template_resources.go
@@ -21,7 +21,6 @@
 	"io/ioutil"
 	"net/http"
 	"net/url"
-	"os"
 	"path/filepath"
 	"strings"
 	"sync"
@@ -258,26 +257,4 @@
 		break
 	}
 	return d
-}
-
-func readDir(path string) []os.FileInfo {
-	wd := ""
-	p := ""
-	if viper.GetString("WorkingDir") != "" {
-		wd = viper.GetString("WorkingDir")
-	}
-	if strings.Contains(path, "..") {
-		jww.ERROR.Printf("Path %s contains parent directory marker", path)
-		return nil
-	}
-
-	p = filepath.Clean(path)
-	p = filepath.Join(wd, p)
-
-	list, err := ioutil.ReadDir(p)
-	if err != nil {
-		jww.ERROR.Printf("Failed to read Directory %s with error message %s", path, err)
-		return nil
-	}
-	return list
 }