From 7e08d23eebe8de8c688150900423dca6234b22a8 Mon Sep 17 00:00:00 2001 From: Dragos Plesca Date: Thu, 16 Jun 2016 19:43:47 +0300 Subject: [PATCH] transform: Explicitly bind LiveReload to server port If hugo server is run on port 80 or 443, LiveReload does not correctly bind to the same port, instead using port 35729. This commit adds functionality to inform LiveReload of the correct port to bind to. See https://github.com/livereload/livereload-js/issues/16 Partially contributed by Jeff Minard (@chuyskywalker). Fixes #2205 --- transform/livereloadinject.go | 9 ++++++--- transform/livereloadinject_test.go | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/transform/livereloadinject.go b/transform/livereloadinject.go index bd22901df..95608185d 100644 --- a/transform/livereloadinject.go +++ b/transform/livereloadinject.go @@ -16,18 +16,21 @@ package transform import ( "bytes" "fmt" + + "github.com/spf13/viper" ) func LiveReloadInject(ct contentTransformer) { endBodyTag := "" match := []byte(endBodyTag) - replaceTemplate := `%s` - replace := []byte(fmt.Sprintf(replaceTemplate, endBodyTag)) + port := viper.Get("port") + replaceTemplate := `%s` + replace := []byte(fmt.Sprintf(replaceTemplate, port, endBodyTag)) newcontent := bytes.Replace(ct.Content(), match, replace, 1) if len(newcontent) == len(ct.Content()) { endBodyTag = "" - replace := []byte(fmt.Sprintf(replaceTemplate, endBodyTag)) + replace := []byte(fmt.Sprintf(replaceTemplate, port, endBodyTag)) match := []byte(endBodyTag) newcontent = bytes.Replace(ct.Content(), match, replace, 1) } diff --git a/transform/livereloadinject_test.go b/transform/livereloadinject_test.go index cf618e9ee..9f28e05e2 100644 --- a/transform/livereloadinject_test.go +++ b/transform/livereloadinject_test.go @@ -18,6 +18,8 @@ import ( "fmt" "strings" "testing" + + "github.com/spf13/viper" ) func TestLiveReloadInject(t *testing.T) { @@ -26,13 +28,14 @@ func TestLiveReloadInject(t *testing.T) { } func doTestLiveReloadInject(t *testing.T, bodyEndTag string) { + viper.Set("port", 1313) out := new(bytes.Buffer) in := strings.NewReader(bodyEndTag) tr := NewChain(LiveReloadInject) tr.Apply(out, in, []byte("path")) - expected := fmt.Sprintf(`%s`, bodyEndTag) + expected := fmt.Sprintf(`%s`, bodyEndTag) if string(out.Bytes()) != expected { t.Errorf("Expected %s got %s", expected, string(out.Bytes())) }