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
}