Skip to content

fix #12998 nim doc regression #13117

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jan 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,5 @@ megatest.nim

# ignore debug dirs generated by dsymutil on OSX
*.dSYM

nimdoc.out.css
11 changes: 9 additions & 2 deletions compiler/docgen.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -43,6 +43,7 @@ type
destFile*: AbsoluteFile
thisDir*: AbsoluteDir
examples: string
wroteCss*: bool

PDoc* = ref TDocumentor ## Alias to type less.

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion compiler/installer.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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"
1 change: 1 addition & 0 deletions compiler/main.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
3 changes: 3 additions & 0 deletions compiler/options.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion config/nimdoc.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
4 changes: 3 additions & 1 deletion koch.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion nimdoc/test_out_index_dot_html/expected/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion nimdoc/test_out_index_dot_html/expected/theindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion nimdoc/testproject/expected/subdir/subdir_b/utils.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion nimdoc/testproject/expected/testproject.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion nimdoc/testproject/expected/theindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
9 changes: 3 additions & 6 deletions tools/kochdocs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand All @@ -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)