mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
commands: Fix server without watch
This was broken in Hugo 0.30. Fixes #4275
This commit is contained in:
parent
64f0e9d1c1
commit
4e524ffcff
2 changed files with 16 additions and 16 deletions
|
@ -30,7 +30,6 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
src "github.com/gohugoio/hugo/source"
|
src "github.com/gohugoio/hugo/source"
|
||||||
|
@ -633,7 +632,7 @@ func (c *commandeer) build(watches ...bool) error {
|
||||||
}
|
}
|
||||||
c.Logger.FEEDBACK.Println("Watching for changes in", c.PathSpec().AbsPathify(c.Cfg.GetString("contentDir")))
|
c.Logger.FEEDBACK.Println("Watching for changes in", c.PathSpec().AbsPathify(c.Cfg.GetString("contentDir")))
|
||||||
c.Logger.FEEDBACK.Println("Press Ctrl+C to stop")
|
c.Logger.FEEDBACK.Println("Press Ctrl+C to stop")
|
||||||
utils.CheckErr(c.Logger, c.newWatcher(false, watchDirs...))
|
utils.CheckErr(c.Logger, c.newWatcher(watchDirs...))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -969,9 +968,7 @@ func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// newWatcher creates a new watcher to watch filesystem events.
|
// newWatcher creates a new watcher to watch filesystem events.
|
||||||
// if serve is set it will also start one or more HTTP servers to serve those
|
func (c *commandeer) newWatcher(dirList ...string) error {
|
||||||
// files.
|
|
||||||
func (c *commandeer) newWatcher(serve bool, dirList ...string) error {
|
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
tweakLimit()
|
tweakLimit()
|
||||||
}
|
}
|
||||||
|
@ -982,7 +979,6 @@ func (c *commandeer) newWatcher(serve bool, dirList ...string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
watcher, err := watcher.New(1 * time.Second)
|
watcher, err := watcher.New(1 * time.Second)
|
||||||
var wg sync.WaitGroup
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -990,8 +986,6 @@ func (c *commandeer) newWatcher(serve bool, dirList ...string) error {
|
||||||
|
|
||||||
defer watcher.Close()
|
defer watcher.Close()
|
||||||
|
|
||||||
wg.Add(1)
|
|
||||||
|
|
||||||
for _, d := range dirList {
|
for _, d := range dirList {
|
||||||
if d != "" {
|
if d != "" {
|
||||||
_ = watcher.Add(d)
|
_ = watcher.Add(d)
|
||||||
|
@ -1189,11 +1183,6 @@ func (c *commandeer) newWatcher(serve bool, dirList ...string) error {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if serve {
|
|
||||||
go c.serve()
|
|
||||||
}
|
|
||||||
|
|
||||||
wg.Wait()
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,12 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"os/signal"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/livereload"
|
"github.com/gohugoio/hugo/livereload"
|
||||||
|
@ -229,14 +231,16 @@ func server(cmd *cobra.Command, args []string) error {
|
||||||
rootWatchDirs := strings.Join(helpers.UniqueStrings(helpers.ExtractRootPaths(relWatchDirs)), ",")
|
rootWatchDirs := strings.Join(helpers.UniqueStrings(helpers.ExtractRootPaths(relWatchDirs)), ",")
|
||||||
|
|
||||||
jww.FEEDBACK.Printf("Watching for changes in %s%s{%s}\n", baseWatchDir, helpers.FilePathSeparator, rootWatchDirs)
|
jww.FEEDBACK.Printf("Watching for changes in %s%s{%s}\n", baseWatchDir, helpers.FilePathSeparator, rootWatchDirs)
|
||||||
err = c.newWatcher(true, watchDirs...)
|
err = c.newWatcher(watchDirs...)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return c.serve()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type fileServer struct {
|
type fileServer struct {
|
||||||
|
@ -313,7 +317,7 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro
|
||||||
return mu, u.String(), endpoint, nil
|
return mu, u.String(), endpoint, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *commandeer) serve() {
|
func (c *commandeer) serve() error {
|
||||||
|
|
||||||
isMultiHost := Hugo.IsMultihost()
|
isMultiHost := Hugo.IsMultihost()
|
||||||
|
|
||||||
|
@ -345,6 +349,9 @@ func (c *commandeer) serve() {
|
||||||
livereload.Initialize()
|
livereload.Initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sigs = make(chan os.Signal)
|
||||||
|
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
for i, _ := range baseURLs {
|
for i, _ := range baseURLs {
|
||||||
mu, serverURL, endpoint, err := srv.createEndpoint(i)
|
mu, serverURL, endpoint, err := srv.createEndpoint(i)
|
||||||
|
|
||||||
|
@ -363,6 +370,10 @@ func (c *commandeer) serve() {
|
||||||
}
|
}
|
||||||
|
|
||||||
jww.FEEDBACK.Println("Press Ctrl+C to stop")
|
jww.FEEDBACK.Println("Press Ctrl+C to stop")
|
||||||
|
|
||||||
|
<-sigs
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// fixURL massages the baseURL into a form needed for serving
|
// fixURL massages the baseURL into a form needed for serving
|
||||||
|
|
Loading…
Reference in a new issue