Skip to content

Commit

Permalink
feat: Always document the transitive closure of a module
Browse files Browse the repository at this point in the history
  • Loading branch information
hargoniX committed Oct 7, 2023
1 parent 649e779 commit fa8c9d7
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,17 @@ Then update your dependencies:
lake -Kenv=dev update
```

Then you can generate documentation for an entire library using:
Then you can generate documentation for an entire library and all files imported
by that library using:
```
lake -Kenv=dev build Test:docs
```
If you have multiple libraries you want to generate documentation for
the recommended way right now is to run it for each library.
If you have multiple libraries you want to generate full documentation for:
```
lake -Kenv=dev build Test:docs Foo:docs
```
Note that doc-gen currently always generates documentation for `Lean`, `Init`
and `Lake` in addition to the provided targets.

## Development of doc-gen4
You can build docs using a modified `doc-gen4` as follows: Replace the `from git "..." @ "main"` in the `lakefile.lean` with just `from "..."` using the path to the modified version of `doc-gen4`. E.g. if the
Expand All @@ -31,10 +36,10 @@ require «doc-gen4» from "../doc-gen4"

The root of the built docs will be `build/docs/index.html`. However, due to the "Same Origin Policy", the
generated website will be partially broken if you just open the generated html files in your browser. You
need to serve them from a proper http server for it to work. An easy way to do that is to run
need to serve them from a proper http server for it to work. An easy way to do that is to run
`python3 -m http.server` from the `build/docs` directory.

Note that if you modify the `.js` or `.css` files in doc-gen4, they won't necessarily be copied over when
Note that if you modify the `.js` or `.css` files in doc-gen4, they won't necessarily be copied over when
you rebuild the documentation. You can manually copy the changes to the `build/docs` directory to make
sure the changes appear, or just do a full recompilation (`lake clean` and `lake build` inside the `doc-gen4`
directory.)
3 changes: 3 additions & 0 deletions lakefile.lean
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ module_facet docs (mod) : FilePath := do
let exeJob ← docGen4.exe.fetch
let modJob ← mod.leanArts.fetch
let buildDir := (← getWorkspace).root.buildDir
-- Build all documentation imported modules
let imports ← mod.imports.fetch
imports.forM fun mod => discard <| fetch <| mod.facet `docs

This comment has been minimized.

Copy link
@tydeu

tydeu Oct 8, 2023

Member

This will cause Lake to lose track of these jobs (which may result in them being killed when Lake terminates? I am not exactly sure how the process management there works). To avoid losing them, this job does need to incorporate them (e.g., via mixArray).

let docFile := mod.filePath (buildDir / "doc") "html"
exeJob.bindAsync fun exeFile exeTrace => do
modJob.bindSync fun _ modTrace => do
Expand Down

0 comments on commit fa8c9d7

Please sign in to comment.