From 97eb9225a72fd08f671e5000bbc4c94cf6b78d7e Mon Sep 17 00:00:00 2001 From: Noah Campbell Date: Mon, 12 Aug 2013 16:10:38 -0700 Subject: [PATCH] Ignore dotfiles in content directory This supports my personal workflow of using vim which places a temporary file in the same directory as the file I'm editing. --- hugolib/content_directory_test.go | 25 +++++++++++++++++++++++++ hugolib/site.go | 13 +++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 hugolib/content_directory_test.go diff --git a/hugolib/content_directory_test.go b/hugolib/content_directory_test.go new file mode 100644 index 000000000..8b8d7c4f6 --- /dev/null +++ b/hugolib/content_directory_test.go @@ -0,0 +1,25 @@ +package hugolib + +import ( + "testing" +) + +func TestIgnoreDotFiles(t *testing.T) { + tests := []struct { + path string + ignore bool + } { + {"barfoo.md", false}, + {"foobar/barfoo.md", false}, + {"foobar/.barfoo.md", true}, + {".barfoo.md", true}, + {".md", true}, + {"", true}, + } + + for _, test := range tests { + if ignored := ignoreDotFile(test.path); test.ignore != ignored { + t.Errorf("File not ignored. Expected: %t, got: %t", test.ignore, ignored) + } + } +} diff --git a/hugolib/site.go b/hugolib/site.go index 105034878..a16fec3fc 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -106,7 +106,9 @@ func (site *Site) Render() (err error) { site.timerStep("render shortcodes") site.AbsUrlify() site.timerStep("absolute URLify") - site.RenderIndexes() + if err = site.RenderIndexes(); err != nil { + return + } site.RenderIndexesIndexes() site.timerStep("render and write indexes") site.RenderLists() @@ -199,18 +201,25 @@ func (s *Site) initialize() { site.Directories = append(site.Directories, path) return nil } else { + if ignoreDotFile(path) { + return nil + } site.Files = append(site.Files, path) return nil } } - filepath.Walk(s.Config.GetAbsPath(s.Config.ContentDir), walker) + filepath.Walk(s.absContentDir(), walker) s.Info = SiteInfo{BaseUrl: template.URL(s.Config.BaseUrl), Title: s.Config.Title, Config: &s.Config} s.Shortcodes = make(map[string]ShortcodeFunc) } +func ignoreDotFile(path string) bool { + return filepath.Base(path)[0] == '.' +} + func (s *Site) absLayoutDir() string { return s.Config.GetAbsPath(s.Config.LayoutDir) }