diff options
Diffstat (limited to 'compiler/docgen.nim')
-rw-r--r-- | compiler/docgen.nim | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/compiler/docgen.nim b/compiler/docgen.nim index a42be9a9c..c01d5633f 100644 --- a/compiler/docgen.nim +++ b/compiler/docgen.nim @@ -22,6 +22,7 @@ import const exportSection = skField htmldocsDir = RelativeDir"htmldocs" + docCmdSkip = "skip" type TSections = array[TSymKind, Rope] @@ -196,6 +197,7 @@ proc newDocumentor*(filename: AbsoluteFile; cache: IdentCache; conf: ConfigRef, initStrTable result.types result.onTestSnippet = proc (gen: var RstGenerator; filename, cmd: string; status: int; content: string) = + if conf.docCmd == docCmdSkip: return inc(gen.id) var d = TDocumentor(gen) var outp: AbsoluteFile @@ -444,21 +446,26 @@ proc testExample(d: PDoc; ex: PNode) = d.examples.add "import r\"" & outp.string & "\"\n" proc runAllExamples(d: PDoc) = - if d.examples.len == 0: return + let docCmd = d.conf.docCmd + let backend = d.conf.backend + # This used to be: `let backend = if isDefined(d.conf, "js"): "js"` (etc), however + # using `-d:js` (etc) cannot work properly, eg would fail with `importjs` + # since semantics are affected by `config.backend`, not by isDefined(d.conf, "js") + if d.examples.len == 0 or docCmd == docCmdSkip: return let outputDir = d.conf.getNimcacheDir / RelativeDir"runnableExamples" let outp = outputDir / RelativeFile(extractFilename(d.filename.changeFileExt"" & "_examples.nim")) writeFile(outp, d.examples) - let backend = if isDefined(d.conf, "js"): "js" - elif isDefined(d.conf, "cpp"): "cpp" - elif isDefined(d.conf, "objc"): "objc" - else: "c" - if os.execShellCmd(os.getAppFilename() & " " & backend & - " --warning[UnusedImport]:off" & - " --path:" & quoteShell(d.conf.projectPath) & - " --nimcache:" & quoteShell(outputDir) & - " -r " & quoteShell(outp)) != 0: - quit "[Examples] failed: see " & outp.string + let cmd = "$nim $backend -r --warning:UnusedImport:off --path:$path --nimcache:$nimcache $docCmd $file" % [ + "nim", os.getAppFilename(), + "backend", $d.conf.backend, + "path", quoteShell(d.conf.projectPath), + "nimcache", quoteShell(outputDir), + "file", quoteShell(outp), + "docCmd", docCmd, + ] + if os.execShellCmd(cmd) != 0: + quit "[runnableExamples] failed: generated file: '$1' cmd: $2" % [outp.string, cmd] else: # keep generated source file `outp` to allow inspection. rawMessage(d.conf, hintSuccess, ["runnableExamples: " & outp.string]) |