diff options
author | Dragos Plesca <[email protected]> | 2016-06-16 19:43:47 +0300 |
---|---|---|
committer | Anthony Fok <[email protected]> | 2016-06-30 16:47:56 -0600 |
commit | 7e08d23eebe8de8c688150900423dca6234b22a8 (patch) | |
tree | aa0fbdf724e67c2cc0baaa676ff94004b64a56af /transform | |
parent | 0ce6438268961b76d11ef6e9210b03c2100171b1 (diff) | |
download | hugo-7e08d23eebe8de8c688150900423dca6234b22a8.tar.gz hugo-7e08d23eebe8de8c688150900423dca6234b22a8.zip |
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
Diffstat (limited to 'transform')
-rw-r--r-- | transform/livereloadinject.go | 9 | ||||
-rw-r--r-- | 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 := "</body>" match := []byte(endBodyTag) - replaceTemplate := `<script data-no-instant>document.write('<script src="/livereload.js?mindelay=10"></' + 'script>')</script>%s` - replace := []byte(fmt.Sprintf(replaceTemplate, endBodyTag)) + port := viper.Get("port") + replaceTemplate := `<script data-no-instant>document.write('<script src="/livereload.js?port=%d&mindelay=10"></' + 'script>')</script>%s` + replace := []byte(fmt.Sprintf(replaceTemplate, port, endBodyTag)) newcontent := bytes.Replace(ct.Content(), match, replace, 1) if len(newcontent) == len(ct.Content()) { endBodyTag = "</BODY>" - 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(`<script data-no-instant>document.write('<script src="/livereload.js?mindelay=10"></' + 'script>')</script>%s`, bodyEndTag) + expected := fmt.Sprintf(`<script data-no-instant>document.write('<script src="/livereload.js?port=1313&mindelay=10"></' + 'script>')</script>%s`, bodyEndTag) if string(out.Bytes()) != expected { t.Errorf("Expected %s got %s", expected, string(out.Bytes())) } |