mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
helpers: Call rst2html directly on *nix
Initially, rst2html was called via the python interpreter which would fail if the script was wrapped in a launcher as on NixOS. Ideally, on *nix, binaries should be invoked directly to ensure that shebangs work properly as is being done now. Handle the case of windows as it doesn't do shebangs.
This commit is contained in:
parent
bdca972794
commit
3d4a9882bf
1 changed files with 14 additions and 3 deletions
|
@ -22,6 +22,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
"unicode"
|
"unicode"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
@ -678,7 +679,6 @@ func getPythonExecPath() string {
|
||||||
// getRstContent calls the Python script rst2html as an external helper
|
// getRstContent calls the Python script rst2html as an external helper
|
||||||
// to convert reStructuredText content to HTML.
|
// to convert reStructuredText content to HTML.
|
||||||
func getRstContent(ctx *RenderingContext) []byte {
|
func getRstContent(ctx *RenderingContext) []byte {
|
||||||
python := getPythonExecPath()
|
|
||||||
path := getRstExecPath()
|
path := getRstExecPath()
|
||||||
|
|
||||||
if path == "" {
|
if path == "" {
|
||||||
|
@ -688,8 +688,19 @@ func getRstContent(ctx *RenderingContext) []byte {
|
||||||
|
|
||||||
}
|
}
|
||||||
jww.INFO.Println("Rendering", ctx.DocumentName, "with", path, "...")
|
jww.INFO.Println("Rendering", ctx.DocumentName, "with", path, "...")
|
||||||
args := []string{path, "--leave-comments", "--initial-header-level=2"}
|
var result []byte
|
||||||
result := externallyRenderContent(ctx, python, args)
|
// certain *nix based OSs wrap executables in scripted launchers
|
||||||
|
// invoking binaries on these OSs via python interpreter causes SyntaxError
|
||||||
|
// invoke directly so that shebangs work as expected
|
||||||
|
// handle Windows manually because it doesn't do shebangs
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
python := getPythonExecPath()
|
||||||
|
args := []string{path, "--leave-comments", "--initial-header-level=2"}
|
||||||
|
result = externallyRenderContent(ctx, python, args)
|
||||||
|
} else {
|
||||||
|
args := []string{"--leave-comments", "--initial-header-level=2"}
|
||||||
|
result = externallyRenderContent(ctx, path, args)
|
||||||
|
}
|
||||||
// TODO(bep) check if rst2html has a body only option.
|
// TODO(bep) check if rst2html has a body only option.
|
||||||
bodyStart := bytes.Index(result, []byte("<body>\n"))
|
bodyStart := bytes.Index(result, []byte("<body>\n"))
|
||||||
if bodyStart < 0 {
|
if bodyStart < 0 {
|
||||||
|
|
Loading…
Reference in a new issue