fixes #12998 nim doc regression (#13117)

This commit is contained in:
Timothee Cour 2020-01-16 05:19:58 -08:00 • committed by Andreas Rumpf
commit 1b54be7779
13 changed files with 28 additions and 16 deletions

2
.gitignore vendored
View file

@ -89,3 +89,5 @@ megatest.nim
# ignore debug dirs generated by dsymutil on OSX
*.dSYM
nimdoc.out.css

View file

@ -17,7 +17,7 @@ import
packages/docutils/rst, packages/docutils/rstgen,
json, xmltree, cgi, trees, types,
typesrenderer, astalgo, lineinfos, intsets,
pathutils, trees
pathutils, trees, nimconf
const
exportSection = skField
@ -43,6 +43,7 @@ type
destFile*: AbsoluteFile
thisDir*: AbsoluteDir
examples: string
wroteCss*: bool
PDoc* = ref TDocumentor ## Alias to type less.
@ -1069,10 +1070,16 @@ proc writeOutput*(d: PDoc, useWarning = false) =
template outfile: untyped = d.destFile
#let outfile = getOutFile2(d.conf, shortenDir(d.conf, filename), outExt, "htmldocs")
createDir(outfile.splitFile.dir)
d.conf.outFile = outfile.extractFilename.RelativeFile
if not writeRope(content, outfile):
rawMessage(d.conf, if useWarning: warnCannotOpenFile else: errCannotOpenFile,
outfile.string)
d.conf.outFile = outfile.extractFilename.RelativeFile
elif not d.wroteCss:
let cssSource = $d.conf.getPrefixDir() / "doc" / "nimdoc.css"
let cssDest = $d.conf.outDir / "nimdoc.out.css"
# renamed to make it easier to use with gitignore in user's repos
copyFile(cssSource, cssDest)
d.wroteCss = true
proc writeOutputJson*(d: PDoc, useWarning = false) =
runAllExamples(d)

View file

@ -139,4 +139,4 @@ licenses: "bin/nim,MIT;lib/*,MIT;"
[nimble]
pkgName: "compiler"
pkgFiles: "compiler/*;doc/basicopt.txt;doc/advopt.txt"
pkgFiles: "compiler/*;doc/basicopt.txt;doc/advopt.txt;doc/nimdoc.css"

View file

@ -305,6 +305,7 @@ proc mainCommand*(graph: ModuleGraph) =
var dumpdata = %[
(key: "version", val: %VersionAsString),
(key: "prefixdir", val: %conf.getPrefixDir().string),
(key: "project_path", val: %conf.projectFull.string),
(key: "defined_symbols", val: definedSymbols),
(key: "lib_paths", val: %libpaths),

View file

@ -509,6 +509,9 @@ proc getPrefixDir*(conf: ConfigRef): AbsoluteDir =
##
## This is overridden by some tools (namely nimsuggest) via the ``conf.prefixDir``
## field.
## This should resolve to root of nim sources, whether running nim from a local
## clone or using installed nim, so that these exist: `result/doc/advopt.txt`
## and `result/lib/system.nim`
if not conf.prefixDir.isEmpty: result = conf.prefixDir
else: result = AbsoluteDir splitPath(getAppDir()).head

View file

@ -237,7 +237,7 @@ doc.file = """<?xml version="1.0" encoding="utf-8" ?>
<!-- CSS -->
<title>$title</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -24,7 +24,7 @@ when defined(i386) and defined(windows) and defined(vcc):
{.link: "icons/koch-i386-windows-vcc.res".}
import
os, strutils, parseopt, osproc, streams
os, strutils, parseopt, osproc
import tools / kochdocs
@ -45,6 +45,7 @@ Options:
--help, -h shows this help and quits
--latest bundle the installers with a bleeding edge Nimble
--stable bundle the installers with a stable Nimble (default)
--nim:path use specified path for nim binary
Possible Commands:
boot [options] bootstraps with given command line options
distrohelper [bindir] helper for distro packagers
@ -605,6 +606,7 @@ when isMainModule:
case normalize(op.key)
of "latest": latest = true
of "stable": latest = false
of "nim": nimExe = op.val.absolutePath # absolute so still works with changeDir
else: showHelp()
of cmdArgument:
case normalize(op.key)

View file

@ -18,7 +18,7 @@
<!-- CSS -->
<title>foo</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -18,7 +18,7 @@
<!-- CSS -->
<title>Index</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -18,7 +18,7 @@
<!-- CSS -->
<title>utils</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -18,7 +18,7 @@
<!-- CSS -->
<title>testproject</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -18,7 +18,7 @@
<!-- CSS -->
<title>Index</title>
<link rel="stylesheet" type="text/css" href="nimdoc.css">
<link rel="stylesheet" type="text/css" href="/nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>

View file

@ -11,12 +11,15 @@ const
webUploadOutput = "web/upload"
docHackDir = "tools/dochack"
var nimExe*: string
proc exe*(f: string): string =
result = addFileExt(f, ExeExt)
when defined(windows):
result = result.replace('/','\\')
proc findNim*(): string =
if nimExe.len > 0: return nimExe
var nim = "nim".exe
result = "bin" / nim
if existsFile(result): return
@ -366,14 +369,11 @@ proc buildJS() =
proc buildDocs*(args: string) =
const
docHackJs = "dochack.js"
css = "nimdoc.css"
let
a = nimArgs & " " & args
docHackJsSource = docHackDir / docHackJs
docHackJsDest = docHtmlOutput / docHackJs
cssSource = "doc" / css
cssDest = docHtmlOutput / css
buildJS() # This call generates docHackJsSource
let docup = webUploadOutput / NimVersion
createDir(docup)
@ -387,6 +387,3 @@ proc buildDocs*(args: string) =
buildDoc(nimArgs, docHtmlOutput)
copyFile(docHackJsSource, docHackJsDest)
copyFile(docHackJsSource, docup / docHackJs)
copyFile(cssSource, cssDest)
copyFile(cssSource, docup / css)