mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
helpers: Add --trace to asciidoctor args
This will help to understand and fix errors by seeing stacktrace of an error. See #3714
This commit is contained in:
parent
ff433f9813
commit
b60aa1a504
3 changed files with 35 additions and 13 deletions
|
@ -544,36 +544,58 @@ func truncateWordsToWholeSentenceOld(content string, max int) (string, bool) {
|
|||
}
|
||||
|
||||
func getAsciidocExecPath() string {
|
||||
path, err := exec.LookPath("asciidoctor")
|
||||
path, err := exec.LookPath("asciidoc")
|
||||
if err != nil {
|
||||
path, err = exec.LookPath("asciidoc")
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return ""
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
// HasAsciidoc returns whether Asciidoctor or Asciidoc is installed on this computer.
|
||||
// HasAsciidoc returns whether Asciidoc is installed on this computer.
|
||||
func HasAsciidoc() bool {
|
||||
return getAsciidocExecPath() != ""
|
||||
}
|
||||
|
||||
func getAsciidoctorExecPath() string {
|
||||
path, err := exec.LookPath("asciidoctor")
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
// HasAsciidoctor returns whether Asciidoctor is installed on this computer.
|
||||
func HasAsciidoctor() bool {
|
||||
return getAsciidoctorExecPath() != ""
|
||||
}
|
||||
|
||||
// getAsciidocContent calls asciidoctor or asciidoc as an external helper
|
||||
// to convert AsciiDoc content to HTML.
|
||||
func getAsciidocContent(ctx *RenderingContext) []byte {
|
||||
content := ctx.Content
|
||||
cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1)
|
||||
|
||||
path := getAsciidocExecPath()
|
||||
var isAsciidoctor bool
|
||||
path := getAsciidoctorExecPath()
|
||||
if path == "" {
|
||||
jww.ERROR.Println("asciidoctor / asciidoc not found in $PATH: Please install.\n",
|
||||
" Leaving AsciiDoc content unrendered.")
|
||||
return content
|
||||
path = getAsciidocExecPath()
|
||||
if path == "" {
|
||||
jww.ERROR.Println("asciidoctor / asciidoc not found in $PATH: Please install.\n",
|
||||
" Leaving AsciiDoc content unrendered.")
|
||||
return content
|
||||
}
|
||||
} else {
|
||||
isAsciidoctor = true
|
||||
}
|
||||
|
||||
jww.INFO.Println("Rendering", ctx.DocumentName, "with", path, "...")
|
||||
cmd := exec.Command(path, "--no-header-footer", "--safe", "-")
|
||||
args := []string{"--no-header-footer", "--safe"}
|
||||
if isAsciidoctor {
|
||||
// asciidoctor-specific arg to show stack traces on errors
|
||||
args = append(args, "--trace")
|
||||
}
|
||||
args = append(args, "-")
|
||||
cmd := exec.Command(path, args...)
|
||||
cmd.Stdin = bytes.NewReader(cleanContent)
|
||||
var out, cmderr bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
|
|
|
@ -561,7 +561,7 @@ func testAllMarkdownEnginesForPages(t *testing.T,
|
|||
}{
|
||||
{"md", func() bool { return true }},
|
||||
{"mmark", func() bool { return true }},
|
||||
{"ad", func() bool { return helpers.HasAsciidoc() }},
|
||||
{"ad", func() bool { return helpers.HasAsciidoctor() || helpers.HasAsciidoc() }},
|
||||
// TODO(bep) figure a way to include this without too much work.{"html", func() bool { return true }},
|
||||
{"rst", func() bool { return helpers.HasRst() }},
|
||||
}
|
||||
|
|
|
@ -555,7 +555,7 @@ tags:
|
|||
th := testHelper{s.Cfg, s.Fs, t}
|
||||
|
||||
for _, test := range tests {
|
||||
if strings.HasSuffix(test.contentPath, ".ad") && !helpers.HasAsciidoc() {
|
||||
if strings.HasSuffix(test.contentPath, ".ad") && !helpers.HasAsciidoctor() && !helpers.HasAsciidoc() {
|
||||
fmt.Println("Skip Asciidoc test case as no Asciidoc present.")
|
||||
continue
|
||||
} else if strings.HasSuffix(test.contentPath, ".rst") && !helpers.HasRst() {
|
||||
|
|
Loading…
Reference in a new issue