Skip to content

Commit

Permalink
helpers: Call rst2html directly on *nix
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
shreyanshk authored and bep committed Oct 11, 2018
1 parent bdca972 commit 3d4a988
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions helpers/content.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"fmt"
"html/template"
"os/exec"
"runtime"
"unicode"
"unicode/utf8"

Expand Down Expand Up @@ -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 == "" {
Expand All @@ -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 {
Expand Down

0 comments on commit 3d4a988

Please sign in to comment.