transform: Explicitly bind LiveReload to server port - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 7e08d23eebe8de8c688150900423dca6234b22a8
DIR parent 0ce6438268961b76d11ef6e9210b03c2100171b1
HTML Author: Dragos Plesca <dragos.plesca@gmail.com>
Date: Thu, 16 Jun 2016 19:43:47 +0300
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:
M transform/livereloadinject.go | 9 ++++++---
M transform/livereloadinject_test.go | 5 ++++-
2 files changed, 10 insertions(+), 4 deletions(-)
---
DIR diff --git 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)
}
DIR diff --git 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()))
}