summaryrefslogtreecommitdiffstats
path: root/helpers
diff options
context:
space:
mode:
authorShreyansh Khajanchi <shreyanshk@users.noreply.github.com>2018-10-11 20:46:10 +0000
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-10-11 22:46:10 +0200
commit3d4a9882bfc81215fb4f9eba8859324958747d4a (patch)
tree81d6d193fd004f44e704e76f3a2ec848d22f7f88 /helpers
parentbdca9727944e4cbb5a9372a8404e948ffea7c31c (diff)
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.
Diffstat (limited to 'helpers')
-rw-r--r--helpers/content.go17
1 files changed, 14 insertions, 3 deletions
diff --git a/helpers/content.go b/helpers/content.go
index 55d8ce202..f8479cd1b 100644
--- a/helpers/content.go
+++ b/helpers/content.go
@@ -22,6 +22,7 @@ import (
"fmt"
"html/template"
"os/exec"
+ "runtime"
"unicode"
"unicode/utf8"
@@ -678,7 +679,6 @@ func getPythonExecPath() string {
// getRstContent calls the Python script rst2html as an external helper
// to convert reStructuredText content to HTML.
func getRstContent(ctx *RenderingContext) []byte {
- python := getPythonExecPath()
path := getRstExecPath()
if path == "" {
@@ -688,8 +688,19 @@ func getRstContent(ctx *RenderingContext) []byte {
}
jww.INFO.Println("Rendering", ctx.DocumentName, "with", path, "...")
- args := []string{path, "--leave-comments", "--initial-header-level=2"}
- result := externallyRenderContent(ctx, python, args)
+ var result []byte
+ // 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.
bodyStart := bytes.Index(result, []byte("<body>\n"))
if bodyStart < 0 {