diff options
Diffstat (limited to 'commands/server_errors.go')
-rw-r--r-- | commands/server_errors.go | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/commands/server_errors.go b/commands/server_errors.go new file mode 100644 index 000000000..1a469dac8 --- /dev/null +++ b/commands/server_errors.go @@ -0,0 +1,95 @@ +// Copyright 2018 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package commands + +import ( + "bytes" + "io" + + "github.com/gohugoio/hugo/transform" + "github.com/gohugoio/hugo/transform/livereloadinject" +) + +var buildErrorTemplate = `<!doctype html> +<html class="no-js" lang=""> + <head> + <meta charset="utf-8"> + <title>Hugo Server: Error</title> + <style type="text/css"> + body { + font-family: "Muli",avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + background-color: black; + color: rgba(255, 255, 255, 0.9); + } + main { + margin: auto; + width: 95%; + padding: 1rem; + } + .version { + color: #ccc; + padding: 1rem 0; + } + .stack { + margin-top: 6rem; + } + pre { + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + } + .highlight { + overflow-x: scroll; + padding: 0.75rem; + margin-bottom: 1rem; + background-color: #272822; + border: 1px solid black; + } + a { + color: #0594cb; + text-decoration: none; + } + a:hover { + color: #ccc; + } + </style> + </head> + <body> + <main> + {{ highlight .Error "apl" "noclasses=true,style=monokai" }} + {{ with .File }} + {{ $params := printf "noclasses=true,style=monokai,linenos=table,hl_lines=%d,linenostart=%d" (add .Pos 1) .LineNumber }} + {{ $lexer := .ChromaLexer | default "go-html-template" }} + {{ highlight (delimit .Lines "\n") $lexer $params }} + {{ end }} + {{ with .StackTrace }} + {{ highlight . "apl" "noclasses=true,style=monokai" }} + {{ end }} + <p class="version">{{ .Version }}</p> + <a href="">Reload Page</a> + </main> +</body> +</html> +` + +func injectLiveReloadScript(src io.Reader, port int) string { + var b bytes.Buffer + chain := transform.Chain{livereloadinject.New(port)} + chain.Apply(&b, src) + + return b.String() +} |