Add support for symbolic links for content, layout, static, theme

Note: This is for the content roots only, but that should satisfy most needs.

Fixes #1855
This commit is contained in:
Bjørn Erik Pedersen
2016-02-14 12:16:03 +01:00
committed by Steve Francia
parent 6258d48b02
commit e5aa477491
4 changed files with 33 additions and 9 deletions

View File

@@ -17,6 +17,7 @@ package commands
import (
"fmt"
"github.com/spf13/hugo/hugofs"
"io/ioutil"
"net/http"
"os"
@@ -35,7 +36,6 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/fsync"
"github.com/spf13/hugo/helpers"
"github.com/spf13/hugo/hugofs"
"github.com/spf13/hugo/hugolib"
"github.com/spf13/hugo/livereload"
"github.com/spf13/hugo/utils"
@@ -651,12 +651,12 @@ func getDirList() []string {
return nil
}
filepath.Walk(dataDir, walker)
filepath.Walk(helpers.AbsPathify(viper.GetString("ContentDir")), walker)
filepath.Walk(helpers.AbsPathify(viper.GetString("LayoutDir")), walker)
filepath.Walk(helpers.AbsPathify(viper.GetString("StaticDir")), walker)
helpers.SymbolicWalk(hugofs.SourceFs, dataDir, walker)
helpers.SymbolicWalk(hugofs.SourceFs, helpers.AbsPathify(viper.GetString("ContentDir")), walker)
helpers.SymbolicWalk(hugofs.SourceFs, helpers.AbsPathify(viper.GetString("LayoutDir")), walker)
helpers.SymbolicWalk(hugofs.SourceFs, helpers.AbsPathify(viper.GetString("StaticDir")), walker)
if helpers.ThemeSet() {
filepath.Walk(helpers.AbsPathify(viper.GetString("themesDir")+"/"+viper.GetString("theme")), walker)
helpers.SymbolicWalk(hugofs.SourceFs, helpers.AbsPathify(viper.GetString("themesDir")+"/"+viper.GetString("theme")), walker)
}
return a
@@ -769,7 +769,7 @@ func NewWatcher(port int) error {
// When mkdir -p is used, only the top directory triggers an event (at least on OSX)
if ev.Op&fsnotify.Create == fsnotify.Create {
if s, err := hugofs.SourceFs.Stat(ev.Name); err == nil && s.Mode().IsDir() {
afero.Walk(hugofs.SourceFs, ev.Name, walkAdder)
helpers.SymbolicWalk(hugofs.SourceFs, ev.Name, walkAdder)
}
}

View File

@@ -124,7 +124,7 @@ func importFromJekyll(cmd *cobra.Command, args []string) error {
return convertJekyllPost(path, relPath, targetDir, draft)
}
err = filepath.Walk(jekyllRoot, callback)
err = helpers.SymbolicWalk(hugofs.OsFs, jekyllRoot, callback)
if err != nil {
return err