From dd2980d2c9186a53ddfb80c6592ccf8b6b30034c Mon Sep 17 00:00:00 2001 From: Oliver Steele Date: Wed, 26 Jul 2017 08:01:09 -0400 Subject: [PATCH] De-clutter livereloader output --- server/livereload.go | 27 ++++++++++++++++++++++----- server/server.go | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/server/livereload.go b/server/livereload.go index ac60978..007cc07 100644 --- a/server/livereload.go +++ b/server/livereload.go @@ -2,6 +2,8 @@ package server import ( "io" + "os" + "regexp" "github.com/jaschaephraim/lrserver" ) @@ -9,11 +11,13 @@ import ( // liveReloadScriptTag is inserted into the HTML page. var liveReloadScriptTag = []byte(``) -// StartLiveReloader starts the Live Reload server as a go routine, and returns immediately -func (s *Server) StartLiveReloader() error { - s.lr = lrserver.New(lrserver.DefaultName, lrserver.DefaultPort) - s.lr.SetStatusLog(nil) - go s.lr.ListenAndServe() // nolint: errcheck +// startLiveReloader starts the Live Reload server as a go routine, and returns immediately +func (s *Server) startLiveReloader() error { + lr := lrserver.New(lrserver.DefaultName, lrserver.DefaultPort) + s.lr = lr + lr.SetStatusLog(nil) + lr.ErrorLog().SetOutput(outputFilter{os.Stdout}) + go lr.ListenAndServe() // nolint: errcheck return nil } @@ -22,3 +26,16 @@ func (s *Server) StartLiveReloader() error { func NewLiveReloadInjector(w io.Writer) io.Writer { return TagInjector{w, liveReloadScriptTag} } + +// Remove the lines that match the exclusion pattern. +// TODO submit an upstream PR to make this unnecessary +type outputFilter struct{ w *os.File } + +var excludeRE = regexp.MustCompile(`websocket: close 1006 \(abnormal closure\): unexpected EOF`) + +func (w outputFilter) Write(b []byte) (int, error) { + if excludeRE.Match(b) { + return len(b), nil + } + return w.w.Write(b) +} diff --git a/server/server.go b/server/server.go index bad4c11..0a39139 100644 --- a/server/server.go +++ b/server/server.go @@ -32,7 +32,7 @@ func (s *Server) Run(open bool, logger func(label, value string)) error { address := fmt.Sprintf("%s:%d", cfg.Host, cfg.Port) logger("Server address:", "http://"+address+"/") if cfg.Watch { - if err := s.StartLiveReloader(); err != nil { + if err := s.startLiveReloader(); err != nil { return err } if err := s.watchReload(); err != nil {